如何在Symfony中添加新的翻译域名

时间:2017-03-17 15:35:30

标签: php symfony translation

我使用symfony并且在我的软件包中我需要创建一些翻译,但我宁愿在与#34;消息"不同的域中执行此操作,就像FOS用户软件包一样(他们使用FOSUserBundle)域)。

所以我用我的翻译创建了一个MyBundle.en.yml文件,但是没有加载它们。我已阅读了我需要执行此操作的文档:

$translator->addLoader('xlf', new XliffFileLoader());

$translator->addResource('xlf', 'messages.fr.xlf', 'fr_FR');
$translator->addResource('xlf', 'admin.fr.xlf', 'fr_FR', 'admin');
$translator->addResource(
    'xlf',
    'navigation.fr.xlf',
    'fr_FR',
    'navigation'
);

http://symfony.com/doc/current/components/translation.html#using-message-domains

但我应该在哪里这样做?

更新

经过一些调查后,如果我为翻译运行调试,则说明我在模板中使用的所有翻译都缺失了。

我的翻译文件位于src / Acme / Bundle / MyBundle / resources / translations / MyDomain.yml

我试图找到app / Resources / translation / MyDomain.yml但结果相同。

我还试图删除缓存(rm -rf app / cache)但仍无法正常工作

3 个答案:

答案 0 :(得分:3)

如果您将文件放在正确的位置,Symfony会自动为您执行此操作。您可以在文档中找到Symfony所采用的约定的完整描述:https://symfony.com/doc/current/translation.html#translation-resource-file-names-and-locations

Best Practices-guide建议将其存储在app/Resources/translations/中。或者,您可以将它们放在捆绑包的翻译文件夹中:src/MyBundle/Resources/translations

请注意,您在使用翻译时必须指定您的域名,例如:在你的树枝模板中。参见:

答案 1 :(得分:1)

如果您有x.en.yaml之类的东西,并且想在twing模板中使用它,可以执行以下操作:

{% trans from 'x' %}word_to_translate{% endtrans %}

答案 2 :(得分:0)

您必须指定域名。例如在树枝上:

{{ some_things | trans({}, 'my_domaine_name') }}