2012-01-10 175 views
3

这就是我所坚持的。 我正在研究Symfony2并试图使翻译工作。但不知何故,我无法按原样开展工作。这是我得到的。 在config.ymlSymfony2语言环境检测和翻译

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());并且它返回我设置的语言环境。

那么会导致这个问题呢?

+0

也许文件名惯例问题?尝试将messages.ru.yml重命名为messages.ru_RU.yml – madflow 2012-01-10 10:29:31

+0

已尝试过。没有帮助。其实我猜它只翻译* de_DE语言环境。即使在en_US的情况下,也需要密钥。有没有可能设置为仅翻译特定语言的设置? – ArVan 2012-01-10 10:35:20

+0

嗨ArVan我们遇到了'ru'语言环境问题,非ASCII字符无法从.xliff正确读取; http://stackoverflow.com/questions/20130580/symfony2-translations-and-locale-with-not-ascii-symbols 你有没有经历过类似的事情? – ChatCloud 2013-11-21 20:50:34

回答

2

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

sudo rm -R cache/ 
sudo rm -R logs/ 
+7

:D - 这是与MS Windows相同的Symfony“你试过关掉它吗?” – madflow 2012-01-10 11:40:53

+4

该文档提到您需要在添加新的翻译文件时清除缓存。 – 2012-01-10 13:07:27

+0

你可以接受你自己的回答 – falsarella 2012-01-30 11:41:46

5

你应该使用symfony的COMAND

app/console cache:clear --no-debug 
清除缓存

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