簡體   English   中英

如何在SonataAdminBundle中正確翻譯字符串

[英]How to properly translate strings in SonataAdminBundle

我正在嘗試使用捆綁包內的.xliff文件來翻譯一些Sonata管理員列表頁面字符串。 這些字符串屬於我的捆綁包,而不屬於Sonata,所以這是我遵循的步驟:

  • 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而不是創建一個新的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一個在同一個文件中。 這里會發生什么?

如果您創建的翻譯文件不同於messages ,則必須明確指定翻譯域。 messages是默認的翻譯域。 您有兩個選擇,可以將PlatformBundle.es.xliff重命名為messages.es.xliff或指定翻譯域。 例:

在表單類型中:

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

在樹枝上mpl:

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

我不知道ListMapper類是什么,但是翻譯域也應該有支持(我想)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM