Symfony - Sonata-Admin 菜单组翻译

Posted

技术标签:

【中文标题】Symfony - Sonata-Admin 菜单组翻译【英文标题】:Symfony - Sonata-Admin menu group translation 【发布时间】:2015-11-06 21:29:50 【问题描述】:

我在管理菜单中的组翻译有问题。它翻译标签但不翻译组:

服务: 奏鸣曲管理员语言: 类:App\Bundle\LanguageBundle\Admin\LanguageAdmin 标签: - 名称:奏鸣曲.admin manager_type: orm 组:“admin.menu.group.language” 标签:“admin.menu.group.item.languages” 论据: - ~ - App\Bundle\LanguageBundle\Entity\Language - ~

sonata.admin.language_pair:
    class: App\Bundle\LanguageBundle\Admin\LanguagePairAdmin
    tags:
        - name: sonata.admin
          manager_type: orm
          group: "admin.menu.group.language"
          label: "admin.menu.group.item.language_pairs"
    arguments:
        - ~
        - App\Bundle\LanguageBundle\Entity\LanguagePair
        - ~

谁能帮忙???

【问题讨论】:

【参考方案1】:

对我来说,@Andrey 和 @Catalins 的组合回答就成功了:

config/packages/sonata_admin.yaml

sonata_admin:
    ...

    dashboard:
        blocks:
        -
            position: left
            type: sonata.admin.block.admin_list

        groups:
            app.admin.group.cms:
                label: 'app.admin.group.cms'
                label_catalogue: 'messages' # <--- this is not the bundle name, but the "translation domain" / filename of the translation file
                items:
                    - app.admin.page
                roles: ['ROLE_ADMIN']

    ...

translations/messages.en.yml:

app:
  admin:
    group:
      cms: CMS
    pages:
      label: Pages

【讨论】:

【参考方案2】:

菜单组标签使用“SonataAdminBundle”域进行翻译,但项目标签使用“messages”域或在管理类的 $translationDomain 变量中定义的域。

【讨论】:

【参考方案3】:

不幸的是,建议的答案对我不起作用:它仍然没有翻译。 这是我必须做的:

    出于某种原因,label_catalogue: "messages" 甚至调用 [setTranslationDomain, [messages]] 并没有改变任何东西:Symfony 仍然会在 SonataAdminBundle.en.yml 中寻找要翻译的字符串(我使用 yml 文件)。

    因此,在 app/Resources/translations/ 中创建一个文件 SonataAdminBundle.en.yml(或 xml,无论您使用哪个),并在其中添加您的组字符串:

    admin:
        menu:
            group:
                language: Language
    

    在您的 config.yml 中,将这些行添加到 sonata_admin 下:

    sonata_admin:
        [...]
        dashboard:
            groups:
                admin.menu.group.language: ~
    

    清除缓存。重要的!在我这样做之前,它不知何故没有翻译它。

还可以使用 Symfony 翻译调试器来了解它在哪里寻找一些字符串。

希望这会有所帮助!

【讨论】:

【参考方案4】:

当我添加时

label_catalogue: "YourBundleName"

进入“标签”部分,它可以帮助我翻译组的标签。

【讨论】:

【参考方案5】:

您可以添加一个“翻译”节点:

translation: YourBundle

【讨论】:

以上是关于Symfony - Sonata-Admin 菜单组翻译的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 - Sonata adminbundle 菜单不会显示

带有自定义菜单的 Symfony2 与奏鸣曲集成

Symfony2 KnpMenuBundle:设置一个菜单项,即使它不在该菜单上

在 symfony sonata 管理包的不同子菜单中拆分域

Symfony 树枝控制器路由

带有 KnpMenu 的 Symfony 2 面包屑