【问题标题】:Symfony2 locale detection and translationSymfony2 语言环境检测和翻译
【发布时间】:2012-02-06 17:46:15
【问题描述】:

这就是我所坚持的。 我正在研究 Symfony2 并试图使翻译工作。但不知何故,我无法让它按应有的方式工作。这就是我得到的。 在config.yml中

translator:      { fallback: de }
session:
        default_locale: en

messages.en.yml我有这个结构:

Please log in: Bitte melden Sie sich an

messages.en_US.ymlmessages.ru.yml 等我也有类似的文件。

在代码中我使用$this->get('session')->setLocale('ru_RU'); 来更改语言环境。

但翻译只有在语言环境设置为“en_US”或“de_DE”时才有效。在任何其他情况下,它返回键,而不是值。我尝试使用此代码进行翻译

return new Response($this->get('translator')->trans('Please log in').' '.$this->get('session')->getLocale()); 并返回我设置的语言环境。

那么什么会导致这个问题呢?

【问题讨论】:

  • 可能是文件名约定问题?尝试将 messages.ru.yml 重命名为 messages.ru_RU.yml
  • 试过了。没有帮助。实际上我猜它只翻译 de_DE 语言环境。即使在 en_US 的情况下,它也需要密钥。是否有任何设置可以设置为仅翻译特定语言?
  • 嗨 ArVan,我们遇到了“ru”语言环境的问题,无法从 .xliff 正确获取非 ASCII 字符; stackoverflow.com/questions/20130580/…你有过类似的经历吗?

标签: php symfony translation locale


【解决方案1】:

你应该使用 symfony 命令清除缓存

app/console cache:clear --no-debug

然后最终恢复缓存/和日志/文件夹的写入权限,如here所述

【讨论】:

    【解决方案2】:

    我自己找到了答案。只需要清理 Symfony 的缓存。使用控制台这样做。将目录更改为myProject/app 并使用此命令清理缓存和日志:

    sudo rm -R cache/
    sudo rm -R logs/
    

    【讨论】:

    • :D - 这是 Symfony 等价于 MS Windows “你试过关闭它然后再打开吗?”
    • 文档确实提到添加新翻译文件时需要清除缓存。
    • 如果命令app/console cache:clear --no-debug 起初不起作用,也许这也只是sudo 的问题。你试过了吗?
    • 我不记得了 :) 这是一个太老的问题了。还是谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多