2016-05-21 9 views
1

Ich bin ein bisschen kämpfen, was gerade los ist. Ich möchte eine Website mit mehrsprachiger Funktionalität einrichten. Dazu habe ich in den Guides das Thema Internationalisierung gelesen. Ich möchte nicht die Text-/Dateiversion verwenden, sondern stattdessen die DB.Internationalisierung in Yii2 (Database)

Ich fand heraus, dass es so etwas wie die DbMessageSource gibt. Ich bewarb mich um die Migration und die folgenden Tabellen in meiner DB:

message message_source

In meiner config-Datei, ich addes diese Zeilen:

'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' 
      ], 
     ], 
    ], 
], 

Meiner Ansicht nach, nenne ich die Übersetzung -function wie folgt aus:

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

Es ist eigentlich „Nachrichten“ angezeigt wird, aber unabhängig von der language Ich habe gesetzt, nichts ist in der DB gespeichert. Fehle ich etwas? Ich dachte, jeder String, der in einer Übersetzungsfunktion ist, würde in der DB gespeichert werden?

Vielen Dank im Voraus

Antwort

1

Von selbst wird es nicht in DB sein. Es wählt nur aus, ob bereits Daten vorhanden sind. Sie sollten es selbst tun oder lajax translate manager extension verwenden, es wird Ihr gesamtes Projekt automatisch scannen und die Datenbank mit Nachrichten füllen.