2016-05-21 3 views
1

Я как бы борюсь с тем, что происходит прямо сейчас. Я хочу создать сайт с многоязыковой функциональностью. Для этого я прочитал в путеводителях тему интернационализации. Я не хочу использовать текстовую/файловую версию, вместо этого я хочу использовать БД.Интернационализация в Yii2 (База данных)

Я узнал, что есть что-то вроде DbMessageSource. Я применил миграцию и имею следующие таблицы в моей БД:

message message_source

В моем конфиге-файл, я addes этих строк:

'components' => [ 
    'cache' => [ 
     'class' => 'yii\caching\FileCache', 
    ], 
    'i18n' => [ 
     'translations' => [ 
      '*' => [ 
       'class' => 'yii\i18n\DbMessageSource', 
       'forceTranslation' => true, 
       'sourceMessageTable' => '{{%source_message}}', 
       'messageTable' => '{{%message}}', 
       'enableCaching' => false, 
       'cachingDuration' => 3600, 
       'sourceLanguage' => 'en_US' 
      ], 
     ], 
    ], 
], 

На моем взгляде, я называю перевод -функции, как это:

echo yii::t('header_menu', 'news'); 

это на самом деле отображения «новости», но независимо от language Я установил, ничего не хранится в БД. Я что-то упускаю? Я думал, каждая строка, которая находится в функции перевода, будет храниться в БД?

Заранее благодарен

ответ

1

Сам по себе он не будет в БД. Он просто выбирает, есть ли данные. Вы должны сделать это самостоятельно или использовать расширение lajax translate manager, оно автоматически сканирует весь ваш проект и заполняет базу данных сообщениями.

Смежные вопросы