2015-10-09 178 views
1

我想創建我的Web多語言應用程序,我想改變默認語言環境與slu compatibility的兼容性,因爲我的slu are也是多語言。Symfony2:更改語言環境Slug multi-langue

我正在使用JMS \ I18nRoutingBundle \ JMSI18nRoutingBundle()更改區域設置。

,並在我的樹枝的觀點,我有:

{% if app.request.attributes.get('_locale') == 'fr' %} 
 
     <a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge(app.request.query.all|merge({'_locale': 'en' }))) }}"> 
 
      en 
 
     </a> 
 
    {% else %} 
 
     <a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge(app.request.query.all|merge({'_locale': 'fr' }))) }}"> 
 
      fr 
 
     </a> 
 
    {% endif %}

現在的問題是: - 當我的語言環境設置爲Fr例如,我得到我的所有實體從數據庫當前語言環境的情況下,現在是美麗的,當我訪問一個頁面,例如,與從數據庫導入的slu and,我試圖改變語言環境爲en,問題是,在我的看法沒有改變從數據庫,但文件i18n中的翻譯集被導入。

我能做些什麼來解決這個問題?

回答

1

通過像它需要被翻譯任何其他字符串處理,從您的數據庫中的數據:

Translation Docs

在你的控制器,這看起來是這樣的:

$translated = $this->get('translator')->trans($row['field']); 

在您的模板,它看起來是這樣的:

{{ field|trans }} 

現在您只需爲數據庫中可能出現的每個可能的「密鑰」提供翻譯。希望你不會試圖將由法國用戶輸入的數據自動翻譯成英文輸出 - 這不是翻譯器組件的工作 - 將其留給谷歌翻譯。