Mercurial > pidgin.yaz
changeset 30395: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`; - -}