【问题标题】:Extending FosUserBundle's translations: some extra messages on extended templates does not get translated扩展 FosUserBundle 的翻译:扩展模板上的一些额外消息没有被翻译
【发布时间】:2017-05-09 15:28:57
【问题描述】:

在我的 Symfony 3.2 项目中,我在一个名为 messages.en.yml 的文件上扩展了 FosUserBundle,该文件具有以下内容:

security.login.username: "Username"
security.login.password: "Password"
security.login.remember_me: "Remember me"
security.login.submit: "Login"
registration.confirmed.header: "Registration Success"
reset.password.header: "Reset your password"

请注意,registration.confirmed.headerreset.password.header 用于 扩展自 fos 用户包的模板中,例如具有以下内容的 request.html.twig

{% extends "@FOSUser/layout.html.twig" %}

{% set body_css_classes="skin-blue layout-top-nav" %}

{% trans_default_domain 'FOSUserBundle' %}

{% block title %} Set a new Password {% endblock %}

{% block fos_user_content %}
<div class="content-wrapper" style="min-height:100%">
        <div class="container">
            <section class="content">
                <div class="box box-default">
                    <div class="box-header">
                        <h4 class="text-center">{{ 'reset.password.header'|trans }}</h4>
                    </div>
                    <form action="{{ path('fos_user_resetting_send_email') }}" method="POST" class="form-horizontal">
                        <div class="box-body">
                          <div class="form-group">
                                    <label for="username" class="col-sm-3 control-label">{{ 'resetting.request.username'|trans }}</label>
                                    <div class="col-sm-9">
                                        <input type="text" id="username" class="form-control" name="username" required="required" />
                                    </div>
                           </div>
                           <div class="form-group">
                             <div class="col-sm-offset-3 col-sm-9">
                               <input type="submit" class="btn btn-primary" value="{{ 'resetting.request.submit'|trans }}" />
                             </div>
                           </div>
                        </div>
                    </form>
                </div>
            </section>
        </div>
    </div>
{% endblock fos_user_content %}

{% block javascriptsFooter %}
{% endblock %}

问题是除了reset.password.header 之外的所有内容都被翻译了,即使我将它放入messages.yml,它仍然不能翻译我设置的额外消息。

【问题讨论】:

    标签: php symfony symfony-3.2


    【解决方案1】:
    {% trans_default_domain 'FOSUserBundle' %}
    

    这意味着,翻译器不是在域“消息”中查找,而是在“FOSUserBundle”中查找。在 /app/Resources/translations/FOSUserBundle.en.yml 中添加翻译应该可以工作。

    【讨论】:

    • 我可以放多个域名吗?
    • 在一个模板中?老实说,我不确定,翻译文件夹中有 FOSUserBundle.en.yml、messages.en.yml(, validators.en.yml, ...) 有什么问题?
    【解决方案2】:

    正如@kero 所说,翻译文件必须命名为FOSUserBundle.en.yml,并且必须具有完整路径:app/Resources/translations/FOSUserBundle.en.yml

    还要确保您设置了正确的键,并且不要覆盖任何现有的键,例如。正如您在vendor/friendsofsymfony/Resources/translations/ 文件夹下的FOSUserBundle.xx.yml 文件中看到的那样,无法设置密钥change_password.submit.something 并期望得到正确翻译。

    【讨论】:

    • 您确定路径吗?我有一个正在运行的 Symfony 2.8 项目,其中覆盖的视图位于 app/Resources/FOSUserBundle/views/ 中,但覆盖的翻译位于 app/Resources/translations/ 中。或者两者都可以工作
    • 我没有使用 2.8 我使用的是 Symfony 3.2
    猜你喜欢
    • 1970-01-01
    • 2016-07-09
    • 2012-12-30
    • 2012-06-13
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多