2015-10-09 154 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 }} 

现在您只需为数据库中可能出现的每个可能的“密钥”提供翻译。希望你不会试图将由法国用户输入的数据自动翻译成英文输出 - 这不是翻译器组件的工作 - 将其留给谷歌翻译。