我正在试验Symfony 2翻译组件。我的默认语言环境是el_GR,我的备用语言环境是en_US。我已经设置了config.yml,我创建了2个翻译文件:messages.el_GR.yml和messages.en_US.yml,然后清除了app / cache。我在两个语言环境中都翻译了Symfony这个词。所以当我使用命令php app / console translation时:debug en_US abcNikBundle我得到:
State | Id | Message Preview (en_US) | Fallback Message Preview (el_GR)
| Symfony | Symfony_US | Symfony_GR
所以在一个twig模板中我写
{{ 'Symfony'|trans({},'messages') }}
当我使用en_US语言环境时它工作正常(它打印Symfony_US)但是当我使用我的默认语言环境(el_GR)时,它会输出Symfony而不是Symfony_GR。能以某种方式完成吗?
答案 0 :(得分:3)
确保您的缓存已完全删除。您可能会在添加英语翻译后重置缓存,但不会重置您的后备。有关详细信息,请参阅Symfony documentation:
每次创建新的翻译资源(或安装包含翻译资源的软件包)时,请务必清除缓存,以便Symfony可以发现新的翻译资源:
有时只运行cache:clear
命令对我来说失败,在这种情况下我只是手动删除app/cache
目录的内容。
此外,如果找不到翻译,则会在翻译频道( dev.translation.log )中以调试模式记录 - 检查日志以查看是否找不到翻译。此外,您不必指定“消息”,因为这是默认值,您可以{{ 'Symfony'|trans }}