2015-05-07 11 views
8

Ich versuche, die Frontend-Übersetzung der Website mit dem i18l-Ding einzurichten. Hier ist meine i18l.php Datei am Frontend/config platziertYii2 - Mehrsprachig

<?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, 
]; 

und hier meinen main.php auch am Frontend

(...) 
'language' => 'en-US', 
'components' => [ 
     'i18n' => [ 
      'translations' => [ 
      'app*' => [ 
       'class' => 'yii\i18n\PhpMessageSource', 
       'basePath' => 'frontend/translations', 

       'fileMap' => [ 
        'app' => 'app.php', 
        'app/error' => 'error.php', 
       ], 
      ], 
     ], 
] 

ich die <?= Yii::t('app', 'some string') ?> auf den Seiten bin mit und Layouts und wenn ich laufe der Befehl ./yii message/extract @ frontend/config/i18n.php erstellt mir einen Ordner namens 'Übersetzungen', der zwei andere Ordner 'en-US' und 'pt-BR' enthält, beide mit app.php, die ich bereits hatte mit einigen Übersetzungen gefüllt. Aber trotzdem passiert keine Übersetzung, wenn ich die Sprache in der main.php so ändere, wie es sein sollte (denke ich). Ich würde mich freuen, wenn mir jemand dabei helfen könnte.

Danke.

+1

Toller Beitrag. Ich wollte nur auf etwas hinweisen. ' Gogol

+0

Nicht sicher, ob das ist, aber ich habe festgestellt, dass, wenn die Ziel-und Quellziele die gleichen sind, müssen Sie Übersetzungen zwingen, um es zu erhalten, die Datei anstelle der Param-Eingabe von 'Yii zu halten :: t'. http://www.yiiframework.com/doc-2.0/yiii-i18n-messagesource.html#$forceTranslation-detail –

Antwort

4

Toller Beitrag, mit allen notwendigen Details.

Ich habe mit den gleichen Dingen gekämpft, aber Sie haben es ganz gut gemacht.

Also, wenn Sie den Befehl ausführen können und es die Datei generiert, dann ist sourcePathkorrekt. Wenn es nicht die Übersetzung Meldungen zur Laufzeit nicht angezeigt wird, trotz Ihrer Einstellung ändert, dann nehme ich die Ausgabe auf sein könnte Ihre basePath:

Versuchen Sie es mit, auf basePath Konfiguration, die folgenden:

'basePath' => '@frontend/translations',