From 4b06739c12868328ed23c4b56423a33c8d3211cc Mon Sep 17 00:00:00 2001 From: Julio Date: Mon, 4 Oct 2021 15:23:32 +0200 Subject: [PATCH] Lang: Add script to create a po file from a trad4all.php file --- tests/scripts/lang/generate_gettext_file.php | 80 ++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 tests/scripts/lang/generate_gettext_file.php diff --git a/tests/scripts/lang/generate_gettext_file.php b/tests/scripts/lang/generate_gettext_file.php new file mode 100644 index 0000000000..d2df8cdfb4 --- /dev/null +++ b/tests/scripts/lang/generate_gettext_file.php @@ -0,0 +1,80 @@ + $translation) { + $terms[$index] = trim(rtrim($translation, ';'), '"'); +} + +$header = 'msgid ""'."\n".'msgstr ""'."\n". + '"Project-Id-Version: chamilo\n"'."\n". + '"Language: '.$languageCode.'\n"'."\n". + '"Content-Type: text/plain; charset=UTF-8\n"'."\n". + '"Content-Transfer-Encoding: 8bit\n"'."\n\n"; +file_put_contents($destinationFile, $header); + +$originalTermsInLanguage = SubLanguageManager::get_all_language_variable_in_file( + $langPath, + true +); +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]; + } + // 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); + if (empty($translatedTerm)) { + continue; + } + // Now build the line + $bigString .= 'msgid "'.$englishTranslation.'"'."\n".'msgstr "'.$translatedTerm.'"'."\n\n"; +} +file_put_contents($destinationFile, $bigString, FILE_APPEND); + +echo "Done generating gettext file in $destinationFile !\n";