我试图使用JMSI18nRoutingBundle来翻译我的路线。我已按照文档中的说明安装和配置了它:
composer.json:
"jms/i18n-routing-bundle": "1.1.*@dev",
AppKernel.php:
new JMS\I18nRoutingBundle\JMSI18nRoutingBundle(),
new JMS\TranslationBundle\JMSTranslationBundle(),
和config.yml:
jms_i18n_routing:
default_locale: %locale%
locales: [en, fr]
catalogue: routes
strategy: custom
然后我试图提取路线的翻译。 doc中给出的命令
php app/console translation:extract fr --enable-extractor=jms_i18n_routing
根本不起作用,但我在互联网上发现这个命令效果更好:
php app/console translation:extract fr --enable-extractor=jms_i18n_routing --bundle="TeduleCoreBundle" --domain="routes"
使用此功能,翻译将在routes.fr.yml
中的AcmeCoreBundle/Resources/translations
文件中提取。该文件包含所有语言环境中所有路由的转换,而不仅仅是命令中指定的AcmeCoreBundle
语言环境中fr
的路由,但是哦,它可以工作...... < / p>
但是,当我执行php app/console router:debug
时,没有任何路由被翻译。相反,我最终得到这样的东西:
en_fr__RG__tedule_app_account_profile ANY ANY ANY /myaccount
en__RG__tedule_app_account_profile ANY ANY ANY /myaccount
fr__RG__tedule_app_account_profile ANY ANY ANY /myaccount
en_fr__RG__tedule_app_account_notifications ANY ANY ANY /myaccount/notifications
en__RG__tedule_app_account_notifications ANY ANY ANY /myaccount/notifications
fr__RG__tedule_app_account_notifications ANY ANY ANY /myaccount/notifications
en_fr__RG__tedule_app_account_password ANY ANY ANY /myaccount/password
en__RG__tedule_app_account_password ANY ANY ANY /myaccount/password
fr__RG__tedule_app_account_password ANY ANY ANY /myaccount/password
如您所见,每条路线出现3次(en_fr,en和fr),并且根据我在routes.fr.yml
文件中所写的内容,该模式未被翻译。
我尝试清除缓存,将routes.fr.yml
文件放在app/Resources/translations
中,将两个文件routes.fr.yml
和routes.en.yml
之间的翻译分开,没有任何效果......
答案 0 :(得分:0)
这也发生在我身上,但我通过将路线的翻译文件移动到&#34; app / Resources / translations&#34;
来解决这个问题。这对我有用:
php app/console translation:extract en_US --bundle=MyBundle --enable-extractor=jms_i18n_routing --output-format=xliff --domain=routes --keep --output-dir=app/Resources/translations