奏鸣曲用户 - 翻译

Posted

技术标签:

【中文标题】奏鸣曲用户 - 翻译【英文标题】:Sonata User - Translate 【发布时间】:2013-07-03 07:54:31 【问题描述】:

我已经扩展了 SonataUserBundle,我正在尝试将法语翻译放入其中。

这是我的管理服务定义:

sonata.admin.user:
    class: Application\Sonata\UserBundle\Admin\Entity\UserAdmin
    tags:
        -  name: sonata.admin, manager_type: orm, group: user, label: users 
    arguments:
        - null
        - Application\Sonata\UserBundle\Entity\User
        - SonataAdminBundle:CRUD
    calls:
        - [setTranslationDomain, [SonataUserBundle]]
        - [setUserManager, [@fos_user.user_manager]]
        - [setSecurityContext, [@security.context]]

如您所见,翻译域设置为SonataUserBundle

我在src/Application/Sonata/UserBundle/Resources/translations/SonataUserBundle.fr.yml中设置了一些标签

#...
list:
    label_firstname: Prénom
    label_username: Nom d'utilisateur
#...

但它们没有被考虑在内(缓存被清除)

但是,如果我删除此文件,它会侮辱我

文件“.../src/Application/Sonata/UserBundle/Resources/translations/SonataUserBundle.fr.yml”必须包含 YAML 数组。

修改翻译域完全没有效果。

我做错了什么?

【问题讨论】:

SonataUserBundle 已翻译。您是否更改了参数和配置文件中的语言环境? 区域设置已经设置为法语,其他管理员工作正常。事实上,只有 UserAdmin 部分在做这件事(包装 SonataAdmin 是法语)。我怀疑我的管理服务错过了一些东西。 【参考方案1】:

您已在服务定义中添加 label_translator_strategy: sonata.admin.label.strategy.underscore:

  sonata.admin.user:
    class: Application\Sonata\UserBundle\Admin\TestAdmin
    tags:
        -  name: sonata.admin, manager_type: orm, group: users, label: users, label_translator_strategy: sonata.admin.label.strategy.underscore 
    arguments:
        - null
        - Application\Sonata\UserBundle\Entity\User
        - SonataAdminBundle:CRUD
    calls:
        - [setTranslationDomain, [SonataUserBundle]]
        - [setUserManager, [@fos_user.user_manager]]
        - [setSecurityContext, [@security.context]]

我在一个新项目中测试过,效果很好。

【讨论】:

以上是关于奏鸣曲用户 - 翻译的主要内容,如果未能解决你的问题,请参考以下文章

编辑奏鸣曲用户数据

配置文件编辑时奏鸣曲用户捆绑错误

以奏鸣曲管理员的编辑形式为用户设置角色

登录奏鸣曲系统用户

奏鸣曲 | Symfony 3 |根据用户角色配置路由

依赖地狱:安装奏鸣曲用户