Próbuję skonfigurować tłumaczenie frontendu strony internetowej za pomocą rzeczy i18l. Tu jest mój plik i18l.php umieszczone na frontend/configYii2 - Multi language
<?php
return [
'sourcePath' => 'frontend',
'languages' => ['en-US', 'pt-BR'] , //Add languages to the array for the language files to be generated.
'translator' => 'Yii::t',
'sort' => false,
'removeUnused' => false,
'only' => ['*.php'],
'except' => [
'.svn',
'.git',
'.gitignore',
'.gitkeep',
'.hgignore',
'.hgkeep',
'/messages',
'/vendor',
],
'format' => 'php',
'messagePath' => 'frontend' . DIRECTORY_SEPARATOR . 'translations',
'overwrite' => true,
];
i tu moja main.php również na frontend
(...)
'language' => 'en-US',
'components' => [
'i18n' => [
'translations' => [
'app*' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => 'frontend/translations',
'fileMap' => [
'app' => 'app.php',
'app/error' => 'error.php',
],
],
],
]
Używam <?= Yii::t('app', 'some string') ?>
na witrynach i układów i kiedy biegnę polecenie ./yii message/extract @ frontend/config/i18n.php tworzy dla mnie folder o nazwie "translations" zawierający dwa inne foldery "en-US" i "pt-BR" zarówno z app.php, który już miałem wypełnione niektórymi tłumaczeniami. Ale nadal nie ma tłumaczenia, gdy zmieniam język na main.php, jak powinno być (myślę). Byłbym wdzięczny, gdyby ktoś mógł mi o tym powiedzieć.
Dzięki.
Świetna wiadomość. Chciałem tylko wskazać jedną rzecz. ' =' może być ryzykowne. Nie wszystkie konfiguracje mają włączone krótkie tagi. może zabrzmieć głupio, ale może to zabrać cały system, gdy przeprowadzisz migrację do nowego serwera. Dlaczego zamiast tego użyć ' Php echo'? :) – Gogol
Nie jestem pewien, czy to jest to, ale odkryłem, że jeśli cel docelowy i źródłowy są takie same, musisz wymusić tłumaczenia, aby uzyskać zgodność z plikiem zamiast z parametrem "Yii :: t'. http://www.yiiframework.com/doc-2.0/yii-i18n-messagesource.html#$forceTranslation-etetail –