如何在 Symfony2 中使用 Gettext (.mo/.po) 文件?
How to use Gettext (.mo/.po) files with Symfony2?
我想使用 Gettext
翻译我在 Symfony2
上的网站
在 ../Resources/translations/
我有这样的翻译文件 :
translations/en/LC_MESSAGES/en.mo
translations/en/LC_MESSAGES/en.po
translations/fr/LC_MESSAGES/fr.mo
translations/fr/LC_MESSAGES/fr.po
...
我已经在 Symfony2 cookbook
的帮助下将默认局部变量配置为法语 (fr) http://symfony.com/doc/current/book/translation.html#the-locale-and-the-url
当我去 app_dev.php/fr/hello/test
时,我的 Hello World 是英文的。我还需要配置其他东西吗?
已经尝试过此配置:Configure Translation component in Symfony 2 to use get text
经过几天的研究,我终于找到了答案。这不是我正在寻找的那个,但它是一个很好的选择。
我找到了这个 很棒的捆绑包:https://github.com/LeaseWeb/LswGettextTranslationBundle
非常容易安装,我建议您使用 "routes" 来更改语言环境:
prefix: /{_locale}/
requirements:
_locale: |fr|en|es|pt #All your locales "shortcuts"
请务必将 Bundle 配置为使用 Lsw/GettextTranslationBundle/Resources/config/config.yml
中的语言环境快捷方式:
parameters:
gettext.locale_shortcuts:
en: en_US
fr: fr_FR
pt: pt_PT
es: es_ES
对于所有配置,使用分步捆绑配置(易于使用)
在 Symfony 中使用 Gettext (.mo/.po) 文件非常简单,不需要任何额外的包。
以下是如何使用 *.po 文件进行翻译的示例。
首先在parameters.yml中添加default_locale
参数:
parameters:
# ...
default_locale: en_US
# ...
然后在config.yml中启用翻译器:
framework:
# ...
translator:
enabled: true
fallbacks: ['%default_locale%']
paths:
- '%kernel.root_dir%/Resources/translations'
# ...
并将服务添加到 services.yml 文件:
translation.loader.po:
class: Symfony\Component\Translation\Loader\PoFileLoader
tags:
- { name: translation.loader, alias: po }
使用以下结构将您的 mo/po 翻译文件放在 app/Resources/translations
下:
app/Resources/translations/messages.en.po
app/Resources/translations/messages.it.po
...
现在您可以从您的控制器调用:
$this->get('translator')->trans('my.message.id');
我想使用 Gettext
翻译我在 Symfony2
在 ../Resources/translations/
我有这样的翻译文件 :
translations/en/LC_MESSAGES/en.mo
translations/en/LC_MESSAGES/en.po
translations/fr/LC_MESSAGES/fr.mo
translations/fr/LC_MESSAGES/fr.po
...
我已经在 Symfony2 cookbook
的帮助下将默认局部变量配置为法语 (fr) http://symfony.com/doc/current/book/translation.html#the-locale-and-the-url
当我去 app_dev.php/fr/hello/test
时,我的 Hello World 是英文的。我还需要配置其他东西吗?
已经尝试过此配置:Configure Translation component in Symfony 2 to use get text
经过几天的研究,我终于找到了答案。这不是我正在寻找的那个,但它是一个很好的选择。
我找到了这个 很棒的捆绑包:https://github.com/LeaseWeb/LswGettextTranslationBundle
非常容易安装,我建议您使用 "routes" 来更改语言环境:
prefix: /{_locale}/
requirements:
_locale: |fr|en|es|pt #All your locales "shortcuts"
请务必将 Bundle 配置为使用 Lsw/GettextTranslationBundle/Resources/config/config.yml
中的语言环境快捷方式:
parameters:
gettext.locale_shortcuts:
en: en_US
fr: fr_FR
pt: pt_PT
es: es_ES
对于所有配置,使用分步捆绑配置(易于使用)
在 Symfony 中使用 Gettext (.mo/.po) 文件非常简单,不需要任何额外的包。
以下是如何使用 *.po 文件进行翻译的示例。
首先在parameters.yml中添加default_locale
参数:
parameters:
# ...
default_locale: en_US
# ...
然后在config.yml中启用翻译器:
framework:
# ...
translator:
enabled: true
fallbacks: ['%default_locale%']
paths:
- '%kernel.root_dir%/Resources/translations'
# ...
并将服务添加到 services.yml 文件:
translation.loader.po:
class: Symfony\Component\Translation\Loader\PoFileLoader
tags:
- { name: translation.loader, alias: po }
使用以下结构将您的 mo/po 翻译文件放在 app/Resources/translations
下:
app/Resources/translations/messages.en.po
app/Resources/translations/messages.it.po
...
现在您可以从您的控制器调用:
$this->get('translator')->trans('my.message.id');