Migrated (hopefully) all translations to PO/Gettext (references #161)

This commit is contained in:
Bernd Bestel
2019-05-01 20:19:18 +02:00
parent 40b5afe926
commit 9b2dba2397
372 changed files with 23242 additions and 16905 deletions

View File

@@ -9,11 +9,6 @@ class LocalizationService
{
public function __construct(string $culture)
{
if (GROCY_MODE === 'dev')
{
$this->MigrateTranslationsToGettext();
}
$this->Culture = $culture;
$this->LoadLocalizations($culture);
}
@@ -50,6 +45,8 @@ class LocalizationService
return $this->PoTranslation->toJsonString();
}
//TODO: Missing translations should be automatically added to the source POT file
public function __t(string $text, ...$placeholderValues)
{
return __($text, ...$placeholderValues);
@@ -59,64 +56,4 @@ class LocalizationService
{
return $this->Translator->ngettext($singularForm, $pluralForm, $number);
}
private function MigrateTranslationsToGettext()
{
foreach (glob(__DIR__ . '/../localization/*', GLOB_ONLYDIR) as $langDir)
{
$lang = basename($langDir);
foreach (glob(__DIR__ . "/../localization/$lang/*.php") as $phpArrayFile)
{
$langStrings = require $phpArrayFile;
$translations = new \Gettext\Translations();
$translations->setDomain('grocy/' . pathinfo($phpArrayFile)['filename']);
$translations->setHeader('Last-Translator', 'Translation migration from old PHP array files');
$translations->setHeader('Language', $lang);
$translations->setHeader('Language-Team', "http://www.transifex.com/grocy/grocy/language/$lang");
$poFileName = basename($phpArrayFile);
$poFileName = str_replace('.php', '.po', $poFileName);
$poFilePath = __DIR__ . "/../localization/$lang/$poFileName";
if (!file_exists($poFilePath))
{
$translations->toPoFile($poFilePath);
}
$translations = \Gettext\Translations::fromPoFile($poFilePath);
foreach ($langStrings as $langString => $langStringTranslated)
{
$translation = new \Gettext\Translation('', str_replace('#1', '%s', str_replace('#2', '%s', str_replace('#3', '%s', $langString))));
$translation->setTranslation(str_replace('#1', '%s', str_replace('#2', '%s', str_replace('#3', '%s', $langStringTranslated))));
$translations[] = $translation;
}
$translations->toPoFile($poFilePath);
if ($lang == 'en')
{
$translations = new \Gettext\Translations();
$translations->setDomain('grocy/' . pathinfo($phpArrayFile)['filename']);
$translations->setHeader('Last-Translator', 'Translation migration from old PHP array files');
$translations->setHeader('Language', $lang);
$translations->setHeader('Language-Team', "http://www.transifex.com/grocy/grocy/language/$lang");
$potFileName = basename($phpArrayFile);
$potFileName = str_replace('.php', '.pot', $potFileName);
$potFileName = __DIR__ . "/../localization/$potFileName";
foreach ($langStrings as $langString => $langStringTranslated)
{
$translation = new \Gettext\Translation('', str_replace('#1', '%s', str_replace('#2', '%s', str_replace('#3', '%s', $langString))));
$translations[] = $translation;
}
if (!file_exists($potFileName))
{
$translations->toPoFile($potFileName);
}
}
}
}
}
}