Mic*_*ael 15 translation symfony twig
我做了以下清单:
虽然在我的twig模板文件中,
{{ 'message'|trans }}
Run Code Online (Sandbox Code Playgroud)
从不翻译.
我可以在哪里查看下载以使翻译有效?
我使用的Doctrine Translatable Extension是否有可能产生某种冲突?
小智 23
您是否在配置文件中启用了转换程序服务?
framework:
translator: { fallback: en }
Run Code Online (Sandbox Code Playgroud)
无论您的翻译是否已启用,都会在缓存文件夹中创建语言目录.
你尝试过在你的控制器中翻译吗?
$translatedMessage = $this->get('translator')->trans('message');
Run Code Online (Sandbox Code Playgroud)
zuz*_*nen 23
在Symfony 3.0中,我必须清除缓存:
php bin/console cache:clear
Run Code Online (Sandbox Code Playgroud)
我看到你已经这样做了,也许它有助于像我这样的其他人.
Ale*_* B. 15
尝试指定域名.如果您没有默认指定域,则为消息.
{{ 'message'|trans({}, 'some_domain') }}
Run Code Online (Sandbox Code Playgroud)
然后可以找到翻译
例如some_domain.fr.yml.最后一步是配置您的语言环境.您可以从请求获取当前区域设置$request->getLocale()
PS尝试rm -r app/cache确保删除缓存
小智 7
我可以使用其中一个翻译,但不能使用另一个,并且不知道为什么.如果您也有翻译问题,请阅读此内容.
首先,标准清单:
php app/console cache:clear命令清除缓存.$this->getRequest()->setLocale('en');在Controller中手动调用,也可以尝试$this->get('translator')->trans('Some message');直接在Controller中使用.当心BOM翻译文本.翻译yml文件的翻译人员使用UTF8,这是好的,但编辑他在文件的开头使用了留空BOM.这很危险,可能是因为PHP的UTF8 BOM错误,因为它会在文件的第一部分添加几个不可见的字符.
顺便说一句,调试你的翻译也可能非常有帮助.
根据Symfony Translations Documentation页面,如果您没有使用服务容器进行翻译,这些步骤很简单:
启用并配置 Symfony的翻译服务.
YAML
framework:
translator: { fallbacks: [en] }
Run Code Online (Sandbox Code Playgroud)PHP
$container->loadFromExtension('framework', array(
'translator' => array('fallbacks' => array('en')),
));
Run Code Online (Sandbox Code Playgroud)抽象字符串(即"消息")通过将它们包装在对转换器的调用中(" 基本翻译 ").
public function indexAction()
{
$translated = $this->get('translator')->trans('Symfony is great');
return new Response($translated);
}
Run Code Online (Sandbox Code Playgroud)为每个支持的语言环境创建翻译资源/文件,以翻译应用程序中的每条消息.
Symfony在以下默认位置查找消息文件(即翻译):
app/Resources/translations目录;app/Resources/<bundle name>/translations目录;Resources/translations/任何包内的目录.
翻译文件名
转换文件的文件名也很重要:每个消息文件必须根据以下路径命名: domain.现场.loader(例如filename :) navigation.en.xlf:
domain:将消息组织成组的可选方法(例如admin,navigation或默认messages) - 请参阅使用消息域 ;
locale:翻译所用的语言环境(例如en_GB,en等); loader:Symfony如何加载和解析文件(例如xlf,php,yml等).
加载器可以是任何已注册加载器的名称.默认情况下,Symfony提供了许多加载器,包括:
xlf:XLIFF文件;php:PHP文件;yml:YAML文件.
选择使用哪种装载机完全取决于您,这是一个品味问题.推荐的选项是xlf用于翻译.
清除缓存:
php bin/console c:c
Run Code Online (Sandbox Code Playgroud)翻译过程
要实际翻译消息,Symfony使用一个简单的过程:
| 归档时间: |
|
| 查看次数: |
37836 次 |
| 最近记录: |