parent
b38a9b8ab4
commit
4b06739c12
@ -0,0 +1,80 @@ |
||||
<?php |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
exit; |
||||
|
||||
// Generates a po file from a trad4all.inc.php file. |
||||
|
||||
require_once __DIR__.'/../../../vendor/autoload.php'; |
||||
|
||||
ini_set('memory_limit', '600M'); |
||||
|
||||
// 1. Source trad4all.inc.php |
||||
$langPath = __DIR__.'/../../../trad4all.inc.php'; |
||||
// 2. Destination po file |
||||
$destinationFile = __DIR__.'/../../../trad4all.inc.php.po'; |
||||
// 3. Iso code |
||||
$languageCode = 'fr_FR'; |
||||
|
||||
$originalFile = __DIR__.'/../../../public/main/lang/english/trad4all.inc.php'; |
||||
$terms = SubLanguageManager::get_all_language_variable_in_file( |
||||
$originalFile, |
||||
true |
||||
); |
||||
|
||||
foreach ($terms as $index => $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"; |
||||
Loading…
Reference in new issue