changeset 29975:5edd3992f59d

More improvements to create_nsis_translations.pl - I have more to do, but I'm afraid that these are going to be less likely to be applicable upstream. * Add all the current NSIS translations to the map * Add the LCID to the language map (not currently used) * Only include translations that are >= 50% translated
author Daniel Atallah <daniel.atallah@gmail.com>
date Wed, 19 May 2010 02:50:02 +0000
parents 7681b4ac292c
children 62f0988c666c
files pidgin/win32/nsis/create_nsis_translations.pl
diffstat 1 files changed, 133 insertions(+), 113 deletions(-) [+]
line wrap: on
line diff
--- a/pidgin/win32/nsis/create_nsis_translations.pl	Tue May 18 19:12:37 2010 +0000
+++ b/pidgin/win32/nsis/create_nsis_translations.pl	Wed May 19 02:50:02 2010 +0000
@@ -86,70 +86,81 @@
 print "                Working dir '$tmp_dir'\n";
 
 # Commented out locales that are not available in nsis
+# Map value is ["NSISFilename", "Encoding", "LCID"]
 my %localeNames = (
-  "af" =>	["Afrikaans", "WINDOWS-1252"],
+  "af" =>	["Afrikaans", "WINDOWS-1252", "1078"],
 #  "am" =>	["Amharic", "UTF-8"],
-  "ar" =>	["Arabic", "WINDOWS-1256"],
-  "bg" =>	["Bulgarian", "WINDOWS-1251"],
-  "br" =>	["Breton", "WINDOWS-1252"],
-  "ca" =>	["Catalan", "WINDOWS-1252"],
-  "cs" =>	["Czech", "WINDOWS-1250"],
-  "da" =>	["Danish", "WINDOWS-1252"],
-  "de" =>	["German", "WINDOWS-1252"],
+  "ar" =>	["Arabic", "WINDOWS-1256", "1025"],
+  "be" =>	["Belarusian", "WINDOWS-1251", "1059"],
+  "bg" =>	["Bulgarian", "WINDOWS-1251", "1026"],
+  "bs" =>	["Bosnian", "WINDOWS-1250", "5146"],
+  "br" =>	["Breton", "WINDOWS-1252", "1150"],
+  "ca" =>	["Catalan", "WINDOWS-1252", "1027"],
+  "cs" =>	["Czech", "WINDOWS-1250", "1029"],
+  "cy" =>	["Welsh", "WINDOWS-1252", "1160"],
+  "da" =>	["Danish", "WINDOWS-1252", "1030"],
+  "de" =>	["German", "WINDOWS-1252", "1031"],
 #  "dz" =>	["Dzongkha", "UTF-8"],
-  "el" =>	["Greek", "WINDOWS-1253"],
-  "en" =>	["English", "WINDOWS-1252"],
-  "es" =>	["Spanish", "WINDOWS-1252"],
-  "eu" =>	["Basque", "WINDOWS-1252"],
-  "fa" =>	["Farsi", "WINDOWS-1256"],
-  "fi" =>	["Finnish", "WINDOWS-1252"],
-  "fr" =>	["French", "WINDOWS-1252"],
-  "ga" =>	["Irish", "WINDOWS-1252"],
-  "gl" =>	["Galician", "WINDOWS-1252"],
+  "el" =>	["Greek", "WINDOWS-1253", "1032"],
+  "en" =>	["English", "WINDOWS-1252", "1033"],
+  "eo" =>	["Esperanto", "WINDOWS-1252", "9998"],
+  "es" =>	["Spanish", "WINDOWS-1252", "1034"],
+  "et" =>	["Estonian", "WINDOWS-1257", "1061"],
+  "eu" =>	["Basque", "WINDOWS-1252", "1069"],
+  "fa" =>	["Farsi", "WINDOWS-1256", "1065"],
+  "fi" =>	["Finnish", "WINDOWS-1252", "1035"],
+  "fr" =>	["French", "WINDOWS-1252", "1036"],
+  "ga" =>	["Irish", "WINDOWS-1252", "2108"],
+  "gl" =>	["Galician", "WINDOWS-1252", "1110"],
 #  "gu" =>	["Gujarati", "UTF-8"],
-  "he" =>	["Hebrew", "WINDOWS-1255"],
+  "he" =>	["Hebrew", "WINDOWS-1255", "1037"],
 #  "hi" =>	["Hindi", "UTF-8"],
-  "hr" =>	["Croatian", "WINDOWS-1250"],
-  "hu" =>	["Hungarian", "WINDOWS-1250"],
-  "id" =>	["Indonesian", "WINDOWS-1252"],
-  "it" =>	["Italian", "WINDOWS-1252"],
-  "ja" =>	["Japanese", "CP932"],
+  "hr" =>	["Croatian", "WINDOWS-1250", "1050"],
+  "hu" =>	["Hungarian", "WINDOWS-1250", "1038"],
+  "id" =>	["Indonesian", "WINDOWS-1252", "1057"],
+  "is" =>	["Icelandic", "WINDOWS-1252", "15"], #This should be 1039!
+  "it" =>	["Italian", "WINDOWS-1252", "1040"],
+  "ja" =>	["Japanese", "CP932", "1041"],
 #  "ka" =>	["Georgian", "UTF-8"],
-  "ko" =>	["Korean", "CP949"],
-  "ku" =>	["Kurdish", "WINDOWS-1254"],
-  "lt" =>	["Lithuanian", "WINDOWS-1257"],
-  "mk" =>	["Macedonian", "WINDOWS-1251"],
+  "ko" =>	["Korean", "CP949", "1042"],
+  "ku" =>	["Kurdish", "WINDOWS-1254", "9999"],
+  "lb" =>	["Luxembourgish", "WINDOWS-1252", "4103"],
+  "lt" =>	["Lithuanian", "WINDOWS-1257", "1063"],
+  "lv" =>	["Latvian", "WINDOWS-1257", "1062"],
+  "mk" =>	["Macedonian", "WINDOWS-1251", "1071"],
 #  "ml" =>	["Malayalam", "UTF-8"],
 #  "mr" =>	["Marathi", "UTF-8"],
-  "ms" =>	["Malay", "WINDOWS-1252"],
-  "nb" =>	["Norwegian", "WINDOWS-1252"],
+  "mn" =>	["Mongolian", "WINDOWS-1251", "1104"],
+  "ms" =>	["Malay", "WINDOWS-1252", "1086"],
+  "nb" =>	["Norwegian", "WINDOWS-1252", "1044"],
 #  "ne" =>	["Nepal", "UTF-8"],
-  "nl" =>	["Dutch", "WINDOWS-1252"],
-  "nn" =>	["NorwegianNynorsk", "WINDOWS-1252"],
+  "nl" =>	["Dutch", "WINDOWS-1252", "1043"],
+  "nn" =>	["NorwegianNynorsk", "WINDOWS-1252", "2068"],
 #  "oc" =>	["Occitan", "WINDOWS-1252"],
 #  "pa" =>	["Punjabi", "UTF-8"],
-  "pl" =>	["Polish", "WINDOWS-1250"],
-  "pt" =>	["Portuguese", "WINDOWS-1252"],
-  "pt_BR" =>	["PortugueseBR", "WINDOWS-1252"],
-  "ro" =>	["Romanian", "WINDOWS-1250"],
-  "ru" =>	["Russian", "WINDOWS-1251"],
- # "rw" =>	["Kinyarwanda", "UTF-8"],
-  "sk" =>	["Slovak", "WINDOWS-1250"],
-  "sl" =>	["Slovenian", "WINDOWS-1250"],
+  "pl" =>	["Polish", "WINDOWS-1250", "1045"],
+  "pt" =>	["Portuguese", "WINDOWS-1252", "2070"],
+  "pt_BR" =>	["PortugueseBR", "WINDOWS-1252", "1046"],
+  "ro" =>	["Romanian", "WINDOWS-1250", "1048"],
+  "ru" =>	["Russian", "WINDOWS-1251", "1049"],
+#  "rw" =>	["Kinyarwanda", "UTF-8"],
+  "sk" =>	["Slovak", "WINDOWS-1250", "1051"],
+  "sl" =>	["Slovenian", "WINDOWS-1250", "1060"],
 #  "so" =>	["Somali", "UTF-8"],
-  "sq" =>	["Albanian", "WINDOWS-1252"],
-  "sr" =>	["Serbian", "WINDOWS-1251"],
-  "sr\@latin" =>	["SerbianLatin", "WINDOWS-1250"],
-  "sv" =>	["Swedish", "WINDOWS-1252"],
+  "sq" =>	["Albanian", "WINDOWS-1252", "1052"],
+  "sr" =>	["Serbian", "WINDOWS-1251", "3098"],
+  "sr\@latin" =>	["SerbianLatin", "WINDOWS-1250", "2074"],
+  "sv" =>	["Swedish", "WINDOWS-1252", "1053"],
 #  "ta" =>	["Tamil", "UTF-8"],
-  "th" =>	["Thai", "WINDOWS-874"],
-  "tr" =>	["Turkish", "WINDOWS-1254"],
-  "uk" =>	["Ukrainian", "WINDOWS-1251"],
+  "th" =>	["Thai", "WINDOWS-874", "1054"],
+  "tr" =>	["Turkish", "WINDOWS-1254", "1055"],
+  "uk" =>	["Ukrainian", "WINDOWS-1251", "1058"],
+  "uz" =>	["Uzbek", "WINDOWS-1252", "1091"],
 #  "ur" =>	["Urdu", "UTF-8"],
 #  "vi" =>	["Vietnamese", "WINDOWS-1258"],
 #  "wa" =>	["Walloon", "WINDOWS-1252"],
-  "zh" =>	["SimpChinese", "WINDOWS-936"],
-  "zh" =>	["TradChinese", "CP950"],
+  "zh_CN" =>	["SimpChinese", "WINDOWS-936", "2052"],
+  "zh_TW" =>	["TradChinese", "CP950", "1028"],
 );
 
 my @localeKeys = keys(%localeNames);
@@ -194,11 +205,6 @@
   !insertmacro MUI_LANGUAGE "English"
 ';
 
-foreach my $lang (@localeKeys) {
-    if ( $lang eq "en" ) { next; }
-    $muiLanguages .= "  !insertmacro MUI_LANGUAGE \"$localeNames{$lang}[0]\"\n";
-}
-
 # The specific GCompris translation for the installer
 # replacing:
 #   @GCOMPRIS_MACRO_INCLUDE_LANGFILE@
@@ -264,10 +270,81 @@
 !macroend
 ';
 
+#
+# Create each nsh translation file
+#
+
+print "Creating the nsh default file\n";
+open (DESC, ">$tmp_dir/en.nsh");
+print DESC ";; Auto generated file by create_nsis_translations.pl\n";
+foreach my $keyEn (keys(%$text_en)) {
+    my $line = $result{'en'}{$keyEn};
+    $line =~ s/!define /!insertmacro GCOMPRIS_MACRO_DEFAULT_STRING /;
+    print DESC $line;
+}
+close DESC;
+
+$gcomprisLanguages .= "  !insertmacro GCOMPRIS_MACRO_INCLUDE_LANGFILE".
+    " \"ENGLISH\"".
+   " \"\${GCOMPRIS_NSIS_INCLUDE_PATH}\\translations\\en.nsh\"\n";
+
+#
+# Two pass are needed:
+# - create the utf8 file
+# - transform it to the proper windows locale
+#
+print "Creating the nsh locale files\n";
 foreach my $lang (@localeKeys) {
-    $gcomprisLanguages .= "  !insertmacro GCOMPRIS_MACRO_INCLUDE_LANGFILE".
-     " \"$localeNames{$lang}[0]\"".
-     " \"\${GCOMPRIS_NSIS_INCLUDE_PATH}\\translations\\$lang.nsh\"\n";
+    if ( $lang eq "en" ) { next; }
+    open (DESC, ">$tmp_dir/$lang.nsh.utf8");
+    print DESC ";; Auto generated file by create_nsis_translations.pl\n";
+    print DESC ";; Code Page: $localeNames{$lang}[1]\n";
+
+    my $text_locale = $result{"$lang"};
+    my $total_key_count = 0;
+    my $found_key_count = 0;
+    foreach my $keyEn (keys(%$text_en)) {
+	my $found = 0;
+	$total_key_count++;
+	foreach my $keyLocale (keys(%$text_locale)) {
+	    # Fine, we found a translation
+	    if ( $keyLocale eq $keyEn )
+	    {
+		print DESC "$result{$lang}{$keyLocale}";
+		$found = 1;
+		$found_key_count++;
+		last;
+	    }
+	}
+	# English keys are the reference.
+	# If not found they are inserted
+	#if ( ! $found )
+	#{
+	#    print DESC "$result{'en'}{$keyEn}";
+	#}
+    }
+    close DESC;
+
+    # If we have at least 50% of the keys found, include the language
+    if (($found_key_count * 1.0 / $total_key_count) >= 0.5) {
+        $muiLanguages .= "  !insertmacro MUI_LANGUAGE \"$localeNames{$lang}[0]\"\n";
+        $gcomprisLanguages .= "  !insertmacro GCOMPRIS_MACRO_INCLUDE_LANGFILE".
+            " \"". uc($localeNames{$lang}[0]) . "\"".
+            " \"\${GCOMPRIS_NSIS_INCLUDE_PATH}\\translations\\$lang.nsh\"\n";
+    } else {
+        print "Ignoring language $lang because it is less than 50% translated ($found_key_count of $total_key_count).\n";
+        continue;
+    }
+
+
+    # iconv conversion
+    system("iconv -f UTF-8 -t $localeNames{$lang}[1] $tmp_dir/$lang.nsh.utf8 > $tmp_dir/$lang.nsh");
+    if ($? ne 0)
+    {
+	die("ERROR: Failed to run: iconv -f UTF-8 -t $localeNames{$lang}[1] $lang.nsh.utf8 > $lang.nsh\n");
+    }
+    #`rm $tmp_dir/$lang.nsh.utf8`;
+
 }
 
 # We have all the data, let's replace it
@@ -291,60 +368,3 @@
 open (MYFILE, ">$installer");
 print MYFILE "$gcomprisInstaller";
 close (MYFILE);
-
-#
-# Create each nsh translation file
-#
-
-print "Creating the nsh default file\n";
-open (DESC, ">$tmp_dir/en.nsh");
-print DESC ";; Auto generated file by create_nsis_translations.pl\n";
-foreach my $keyEn (keys(%$text_en)) {
-    my $line = $result{'en'}{$keyEn};
-    $line =~ s/!define /!insertmacro GCOMPRIS_MACRO_DEFAULT_STRING /;
-    print DESC $line;
-}
-close DESC;
-
-#
-# Two pass are needed:
-# - create the utf8 file
-# - transform it to the proper windows locale
-#
-print "Creating the nsh locale files\n";
-foreach my $lang (@localeKeys) {
-    if ( $lang eq "en" ) { next; }
-    open (DESC, ">$tmp_dir/$lang.nsh.utf8");
-    print DESC ";; Auto generated file by create_nsis_translations.pl\n";
-    print DESC ";; Code Page: $localeNames{$lang}[1]\n";
-
-    my $text_locale = $result{"$lang"};
-    foreach my $keyEn (keys(%$text_en)) {
-	my $found = 0;
-	foreach my $keyLocale (keys(%$text_locale)) {
-	    # Fine, we found a translation
-	    if ( $keyLocale eq $keyEn )
-	    {
-		print DESC "$result{$lang}{$keyLocale}";
-		$found = 1;
-		last;
-	    }
-	}
-	# English keys are the reference.
-	# If not found they are inserted
-	#if ( ! $found )
-	#{
-	#    print DESC "$result{'en'}{$keyEn}";
-	#}
-    }
-    close DESC;
-
-    # iconv conversion
-    system("iconv -f UTF-8 -t $localeNames{$lang}[1] $tmp_dir/$lang.nsh.utf8 > $tmp_dir/$lang.nsh");
-    if ($? ne 0)
-    {
-	die("ERROR: Failed to run: iconv -f UTF-8 -t $localeNames{$lang}[1] $lang.nsh.utf8 > $lang.nsh\n");
-    }
-    #`rm $tmp_dir/$lang.nsh.utf8`;
-
-}