我在我的Yii2應用程序中使用基於關鍵字的翻譯(我知道,這不是最佳選擇,但我沒有其他)。我已經使用關鍵字準備@app/messages/pl/app.php
和@app/messages/en/app.php
文件與翻譯字符串,而不是全功能的句子或單詞:翻譯源語言在Yii2應用程序中不起作用
<?php
return [
'name_english'=>'Name in English',
'keywords_english'=>'Keywords in English'
];
?>
我已經把我的應用程序使用波蘭語言作爲默認:
'language' => 'pl',
'sourceLanguage' => 'en',
而且我調用翻譯:
Yii::t('app', 'keywords_english');
一切正常,當語言實際上設置爲基礎,波蘭(pl
):
但是,當我將其更改爲英語(en
;無論是在運行時或更改應用程序配置)設置Yii::$app->language
,不進行翻譯和我得到keywords_english
:
我已經把die()
在@app/messages/pl/app.php
和@app/messages/en/app.php
文件開始,我可以清楚地看到,當語言設置爲英文時,第二個文件未被Yii2包含(應用程序運行如下),而當語言爲波蘭文時,包含第一個文件,並且該應用程序流程中斷die()
。
我錯過了什麼?爲什麼Yii2不使用@app/messages/en/app.php
文件的翻譯,如果語言設置爲English(en
)?
編輯:默認情況下,我沒有改變默認i18n
組件配置在我的應用程序的配置,因爲我發現沒有必要的。翻譯文件存儲在默認位置(@app/messages/<language>/
),並使用默認類別(yii\i18n\PhpMessageSource
)。這適用於除sourceLanguage
之外的所有語言。在某些時候,我試圖改變配置:
'i18n' => [
'translations' => [
'*' => [
'class' => 'yii\i18n\PhpMessageSource',
'sourceLanguage' => 'en',
'basePath' => '@app/messages'
],
],
],
但是,它並沒有帶來變化(何必呢 - 它仍然使用默認設置)。
中設置的類別設置從配置顯示'i18n' –
查看更新的問題。我沒有以任何方式配置'i18n'。我爲什麼要?我想使用默認設置,這應該適用於'en',如果它適用於'pl',對吧? – trejder
嘗試:''translations'=> [''app''=>'''''>'yii \ i18n \ PhpMessageSource', 'basePath'=>'@app/messages', 'sourceLanguage' =>'en_US', 'fileMap'=> [ 'app'=>'app.php', ], ],' –