【问题标题】:How to properly translate strings in SonataAdminBundle如何正确翻译 SonataAdminBundle 中的字符串
【发布时间】:2015-12-12 03:05:36
【问题描述】:

我正在尝试使用我的包中的.xliff 文件翻译一些奏鸣曲管理员 - 列表页面 - 字符串。这些字符串属于我的捆绑包而不是奏鸣曲,所以这是我遵循的步骤:

  • src/Clanmovil/PlatformBundle/Resources/translations/PlatformBundle.es.xliff下创建.xliff文件,如下:

    <?xml version="1.0"?>
    <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
        <file source-language="en" datatype="plaintext" original="PlatformBundle.en.xliff" >
            <body>
                <trans-unit id="name">
                    <source>name</source>
                    <target>Nombre</target>
                </trans-unit>
                <trans-unit id="description">
                    <source>description</source>
                    <target>Descripción</target>
                </trans-unit>
                <trans-unit id="active">
                    <source>active</source>
                    <target>Activo?</target>
                </trans-unit>
            </body>
        </file>
    </xliff>
    
  • src/Clanmovil/PlatformBundle/Controller/Admin/CategoryAdmin.php下设置label属性如下:

    class CategoryAdmin extends Admin
    {
        ...
    
        // Fields to be shown on lists
        protected function configureListFields(ListMapper $listMapper)
        {
            $listMapper
                ->add('name', null, array(
                    'label' => 'name'
                ))
                ->add('active', null, array(
                    'label' => 'active'
                ));
            ...
        }
    
        ...
    }
    
  • 设置app/config/config.yml如下:

    parameters:
        locale: es
    
    framework:
        #esi:             ~
        translator:      { fallbacks: ["%locale%"] }
        default_locale:  "%locale%"
        ....
    

并且不工作我仍然在列表页面上看到nameactive 字符串,我不知道我错过了什么。我已经阅读了thisthis 等多个帖子。谁能给我一些建议?


由于上一个问题已通过提供的答案得到修复,但这几乎相同,我决定编辑 OP 而不是创建一个新的,所以我们开始吧。看看 SonataAdmin 的以下设置:

sonata_admin:
    dashboard:
        groups:
            configuration:
                icon: <i class="fa fa-lg fa-fw fa fa-folder"></i>
                label: configuration
                items:
                    - sonata.admin.category
                    - sonata.admin.command
                    - sonata.admin.alias

这是Clanmovil/PlatformBundle/Resources/config/services.yml 对这些服务的定义:

services:
    sonata.admin.alias:
        class: Clanmovil\PlatformBundle\Controller\Admin\AliasAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: "Configuration", label: "alias" }
        arguments:
            - ~
            - Clanmovil\PlatformBundle\Entity\Alias
            - ~
    sonata.admin.category:
        class: Clanmovil\PlatformBundle\Controller\Admin\CategoryAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: "Configuration", label: "category" }
        arguments:
            - ~
            - Clanmovil\PlatformBundle\Entity\Category
            - ~
    sonata.admin.command:
        class: Clanmovil\PlatformBundle\Controller\Admin\CommandAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: "Configuration", label: "command" }
        arguments:
            - ~
            - Clanmovil\PlatformBundle\Entity\Command
            - ~ 

但字符串 configurationcommandcategory(目前)尚未翻译,见下图:

为什么?这些翻译与alias 位于同一文件中。这里会发生什么?

【问题讨论】:

    标签: php symfony sonata-admin sonata


    【解决方案1】:

    如果您创建的翻译文件不同于messages,您必须明确指定翻译域。 messages 是默认翻译域。您有两个选择,将您的 PlatformBundle.es.xliff 重命名为 messages.es.xliff 或指定翻译域。示例:

    在表单类型中:

    ...
    $builder->add('name', 'text', ['translation_domain' => 'PlatformBundle']);
    ...
    

    在枝条模板中:

    {{ 'name'|trans({}, 'PlatformBundle') }}
    

    我不知道ListMapper 类是什么,但也应该支持(我猜)翻译域。

    【讨论】:

    • 能不能再看一下横线下的OP?我进行了编辑,因为不适合我
    • @ReynierPM 你读过这个doc page吗?
    • 是的,我做到了,但我在这里想念什么?我需要设置其他东西吗?我根本不清楚你能指出我正确的方向吗?
    • @ReynierPM 我现在在工作。我可以稍后在家看看你的问题。
    • 不着急,看看什么时候可以做,谢谢你的帮助
    猜你喜欢
    • 2015-01-04
    • 1970-01-01
    • 2010-09-30
    • 2017-08-27
    • 2015-03-16
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    相关资源
    最近更新 更多