【问题标题】:Symfony2 : Change locale Slug multi-langueSymfony2:更改语言环境 Slug 多语言
【发布时间】:2016-01-07 23:01:48
【问题描述】:

我正在尝试创建我的网络多语言应用程序,我想更改默认语言环境以兼容 slug,因为我的 slug 也是多语言的。

我正在使用 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 时,如果是当前语言环境,我会从数据库中获取所有实体,现在很漂亮,例如,当我访问一个页面时,使用从数据库导入的 slug,我尝试将语言环境更改为 en,问题是,在我看来,数据库没有任何变化,但导入了 i18n 文件中的翻译集。

我能做些什么来解决这个问题?

【问题讨论】:

    标签: php symfony twig slug


    【解决方案1】:

    将数据库中的数据视为需要翻译的任何其他字符串:

    Translation Docs

    在您的控制器中,这看起来像:

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

    在您的模板中,它看起来像:

    {{ field|trans }}
    

    现在您需要做的就是为您的数据库中可能出现的每个可能的“键”提供翻译。希望您不会尝试将法语用户输入的数据在输出时自动翻译成英语 - 这不是翻译组件的工作 - 由 Google 翻译来完成。

    【讨论】: