|
|
|
@ -34,13 +34,15 @@ foreach ($languagesListFull as $language) { |
|
|
|
|
* Get English language terms (the main source of terms) |
|
|
|
|
*/ |
|
|
|
|
$path = $langPath.'english'; |
|
|
|
|
$terms = []; |
|
|
|
|
$terms = $originalTerms = []; |
|
|
|
|
$file = $path.'/trad4all.inc.php'; |
|
|
|
|
if (is_file($file)) { |
|
|
|
|
$terms = SubLanguageManager::get_all_language_variable_in_file($file, true); |
|
|
|
|
$originalTerms = SubLanguageManager::get_all_language_variable_in_file($file, true); |
|
|
|
|
} |
|
|
|
|
foreach ($terms as $index => $translation) { |
|
|
|
|
$terms[$index] = trim(rtrim($translation, ';'), '"'); |
|
|
|
|
foreach ($originalTerms as $index => $translation) { |
|
|
|
|
if (!isset($terms[$index])) { |
|
|
|
|
$terms[$index] = trim(rtrim($translation, ';'), '"'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// get only the array keys (the language variables defined in language files) |
|
|
|
|
//$definedTerms = array_flip(array_keys($terms)); |
|
|
|
@ -48,42 +50,42 @@ echo count($terms)." terms were found in language files".PHP_EOL; |
|
|
|
|
|
|
|
|
|
// make sure we have an ISO 639-1 (or-2 if no -1) to give the gettext file |
|
|
|
|
$langToIso639v1 = [ |
|
|
|
|
'arabic' => 'ar_AR', |
|
|
|
|
'arabic' => 'ar', |
|
|
|
|
'asturian' => 'ast_ES', |
|
|
|
|
'basque' => 'eu_ES', |
|
|
|
|
'bengali' => 'bn_BD', |
|
|
|
|
'bosnian' => 'bs_BA', |
|
|
|
|
'brazilian' => 'pt_BR', |
|
|
|
|
'bulgarian' => 'bg_BG', |
|
|
|
|
'catalan' => 'ca_ES', |
|
|
|
|
'catalan' => 'ca', |
|
|
|
|
'croatian' => 'hr_HR', |
|
|
|
|
'czech' => 'cs_CZ', |
|
|
|
|
'danish' => 'da_DK', |
|
|
|
|
'danish' => 'da', |
|
|
|
|
'dari' => 'prs_AF', |
|
|
|
|
'dutch' => 'nl_NL', |
|
|
|
|
'dutch' => 'nl', |
|
|
|
|
'english' => 'en_US', |
|
|
|
|
'esperanto' => 'eo', |
|
|
|
|
'faroese' => 'fo_FO', |
|
|
|
|
'finnish' => 'fi_FI', |
|
|
|
|
'french' => 'fr_FR', |
|
|
|
|
'friulian' => 'fur_IT', |
|
|
|
|
'galician' => 'gl_ES', |
|
|
|
|
'friulian' => 'fur', |
|
|
|
|
'galician' => 'gl', |
|
|
|
|
'georgian' => 'ka_GE', |
|
|
|
|
'german' => 'de_DE', |
|
|
|
|
'greek' => 'el_GR', |
|
|
|
|
'german' => 'de', |
|
|
|
|
'greek' => 'el', |
|
|
|
|
'hebrew' => 'he_IL', |
|
|
|
|
'hindi' => 'hi_IN', |
|
|
|
|
'hungarian' => 'hu_HU', |
|
|
|
|
'indonesian' => 'id_ID', |
|
|
|
|
'italian' => 'it_IT', |
|
|
|
|
'japanese' => 'ja_JP', |
|
|
|
|
'italian' => 'it', |
|
|
|
|
'japanese' => 'ja', |
|
|
|
|
'korean' => 'ko_KR', |
|
|
|
|
'latvian' => 'lv_LV', |
|
|
|
|
'lithuanian' => 'lt_LT', |
|
|
|
|
'macedonian' => 'mk_MK', |
|
|
|
|
'malay' => 'ms_MY', |
|
|
|
|
'norwegian' => 'nn_NO', |
|
|
|
|
'occitan' => 'oc_FR', |
|
|
|
|
'occitan' => 'oc', |
|
|
|
|
'pashto' => 'ps_AF', |
|
|
|
|
'persian' => 'fa_IR', |
|
|
|
|
'polish' => 'pl_PL', |
|
|
|
@ -96,15 +98,15 @@ $langToIso639v1 = [ |
|
|
|
|
'slovak' => 'sk_SK', |
|
|
|
|
'slovenian' => 'sl_SI', |
|
|
|
|
'somali' => 'so_SO', |
|
|
|
|
'spanish' => 'es_ES', |
|
|
|
|
'spanish' => 'es', |
|
|
|
|
'spanish_latin' => 'es_MX', |
|
|
|
|
'swahili' => 'sw_KE', |
|
|
|
|
'swedish' => 'sv_SE', |
|
|
|
|
'tagalog' => 'tl_PH', |
|
|
|
|
'thai' => 'th_TH', |
|
|
|
|
'thai' => 'th', |
|
|
|
|
'tibetan' => 'bo_CN', |
|
|
|
|
'trad_chinese' => 'zh_TW', |
|
|
|
|
'turkish' => 'tr_TR', |
|
|
|
|
'turkish' => 'tr', |
|
|
|
|
'ukrainian' => 'uk_UA', |
|
|
|
|
'vietnamese' => 'vi_VN', |
|
|
|
|
'xhosa' => 'xh_ZA', |
|
|
|
@ -190,7 +192,7 @@ $destinationDir .= '/'; |
|
|
|
|
$destinationFilePot = $destinationDir.'/'.$baseFilename.'/'.$baseFilename.'.pot'; |
|
|
|
|
|
|
|
|
|
foreach ($languagesList as $language) { |
|
|
|
|
$termsInLanguage = []; |
|
|
|
|
$termsInLanguage = $originalTermsInLanguage = []; |
|
|
|
|
$file = $langPath.$language.'/trad4all.inc.php'; |
|
|
|
|
$languageCode = $langToIso639v1[$language]; |
|
|
|
|
$languageFilename = $langToPOFilename[$language]; |
|
|
|
@ -202,17 +204,24 @@ foreach ($languagesList as $language) { |
|
|
|
|
'"Content-Transfer-Encoding: 8bit\n"'."\n\n"; |
|
|
|
|
file_put_contents($destinationFile, $header); |
|
|
|
|
|
|
|
|
|
$termsInLanguage = SubLanguageManager::get_all_language_variable_in_file( |
|
|
|
|
$originalTermsInLanguage = SubLanguageManager::get_all_language_variable_in_file( |
|
|
|
|
$file, |
|
|
|
|
true |
|
|
|
|
); |
|
|
|
|
foreach ($termsInLanguage as $id => $content) { |
|
|
|
|
$termsInLanguage[$id] = trim(rtrim($content, ';'), '"'); |
|
|
|
|
foreach ($originalTermsInLanguage as $id => $content) { |
|
|
|
|
if (!isset($termsInLanguage[$id])) { |
|
|
|
|
$termsInLanguage[$id] = trim(rtrim($content, ';'), '"'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$bigString = ''; |
|
|
|
|
$bigStringPot = ''; |
|
|
|
|
$doneTranslations = []; |
|
|
|
|
foreach ($terms as $term => $englishTranslation) { |
|
|
|
|
if (isset($doneTranslations[$englishTranslation])) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
$doneTranslations[$englishTranslation] = true; |
|
|
|
|
$translatedTerm = ''; |
|
|
|
|
if (!empty($termsInLanguage[$term])) { |
|
|
|
|
$translatedTerm = $termsInLanguage[$term]; |
|
|
|
@ -222,6 +231,20 @@ foreach ($languagesList as $language) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// Here we apply a little correction to avoid unterminated strings |
|
|
|
|
// when a string ends with a \" |
|
|
|
|
if (preg_match('/\\\$/', $englishTranslation)) { |
|
|
|
|
$englishTranslation .= '"'; |
|
|
|
|
} |
|
|
|
|
$englishTranslation2 = ''; |
|
|
|
|
$search = ['\\{', '\\}', '\\(', '\\)', '\\;']; |
|
|
|
|
$replace = ['\\\\{', '\\\\}', '\\\\(', '\\\\)', '\\\\;']; |
|
|
|
|
$englishTranslation = str_replace($search, $replace, $englishTranslation); |
|
|
|
|
if (preg_match('/\\\$/', $translatedTerm)) { |
|
|
|
|
$translatedTerm .= '"'; |
|
|
|
|
} |
|
|
|
|
$translatedTerm = str_replace($search, $replace, $translatedTerm); |
|
|
|
|
// Now build the line |
|
|
|
|
$bigString .= 'msgid "'.$englishTranslation.'"'."\n".'msgstr "'.$translatedTerm.'"'."\n\n"; |
|
|
|
|
if ($language === 'english') { |
|
|
|
|
//$bigStringPot .= 'msgid "'.$term.'"'."\n".'msgstr ""'."\n\n"; |
|
|
|
|