Symfony2区域设置检测和翻译


Symfony2 locale detection and translation

以下是我一直坚持的内容。我正在研究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());,它返回我设置的区域设置。

那么是什么导致了这个问题呢?

您应该使用symfony命令和清除缓存

app/console cache:clear --no-debug

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

我自己找到了答案。只是需要清理Symfony的缓存。使用控制台执行此操作。将目录更改为myProject/app,并使用以下命令清理缓存和日志:

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