2016-07-18 10 views
0

Ich habe Probleme mit der Arbeit mit i18n in Yii2 Advanced Template. Übersetzung funktioniert nicht!Yii2 i18n funktioniert nicht

Ich habe diese Befehle im yii2-Projektstammverzeichnis ausgeführt.

Official link

./yii message/config --languages=de,it,fr --messagePath=messages i18n.php 
./yii message/extract i18n.php 

Es erzeugt i18n.php unter Projektstammverzeichnis und de, it, fr Verzeichnisse unter Nachrichtenverzeichnis. in de Verzeichnis habe ich neue Datei erstellen app.php mit diesem Inhalt:

<?php 
return [ 
    'Home' => 'Home de', 
    'Getting Started' => 'Getting Started de', 
]; 

In common/config/main.php

// set target language to be English 
    'language' => 'en-US', 

    // set source language to be English 
'sourceLanguage' => 'en-US', 
'components' => [ 
     'i18n' => [ 
     'translations' => [ 
      'app*' => [ 
       'class' => 'yii\i18n\PhpMessageSource', 
       'basePath' => realpath(dirname(__FILE__).'/../../').'messages', 
       //'sourceLanguage' => 'en-US', 
       //'fileMap' => [ 
        //'app' => realpath(dirname(__FILE__).'/../../').'app.php', 
        // 'app/error' => 'error.php', 
       //], 
      ], 
      ], 
     ], 
] 

Ausblick:

<?= Yii::t('app','Home')?> 
<?= Yii::t('app','Getting Started') ?> 

Wie kann ich es bekommen Arbeiten?

+1

diese Antwort verweisen have.Good http://stackoverflow.com/questions/32831288/yii2-translation-does-not -work/32835641 # 32835641 – vishuB

+0

Danke @vishu –

Antwort

2

Sie können Zielsprache in der Config gesetzt:

... 
'language' => 'ru-RU', 
... 

Wenn 'sourceLanguage' => 'en-US', yii en-US-ru-RU übersetzen.

Und Config i18n Komponente wird:

'i18n' => [ 
    'translations' => [ 
     'app' => [ 
      'class' => 'yii\i18n\PhpMessageSource', 
      'basePath' => '@app/translation', 
      'fileMap' => [ 
       'app' => 'app.php', 
      ], 
     ], 
    ], 
], 

Directory-Struktur ist:

- translation 
    - ru-RU 
     - app.php 

Beispiel in Datei app.php

return [ 
    'Home' => 'abcxyz', 
    'source key' => 'translate to russian', 
]; 

Hoffe, dass es hilfreich.

Goodluck und viel Spaß!

+0

Danke, ich werde es versuchen. –

0

Wenn Sie erweiterte Vorlage verwenden, bearbeiten i18n.php

'sourcePath' =>__DIR__. DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR, 

die Nachrichtenordner innerhalb gemeinsamen Ordner erstellen wird.

Und in Config

'components' => [ 
'i18n' => [ 
    'translations' => [ 
     'app*' => [ 
      'class' => 'yii\i18n\PhpMessageSource', 
      'basePath' => '@common/messages', 
      'fileMap' => [ 
       'app' => 'app.php', 
       'app/error' => 'error.php', 
      ], 
     ], 
    ], 
], 
.... 
] 

und im Hinblick auf die Verwendung Datei wie Luck