Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2语言环境检测和翻译_Php_Symfony_Translation_Locale - Fatal编程技术网

Php Symfony2语言环境检测和翻译

Php Symfony2语言环境检测和翻译,php,symfony,translation,locale,Php,Symfony,Translation,Locale,这就是我一直坚持的。 我正在研究Symfony2,并试图使翻译工作正常。但不知怎么的,我不能让它正常工作。这是我得到的。 在config.yml中 translator: { fallback: de } session: default_locale: en 在messages.en.yml中,我有以下结构: 请登录:请登录 我还有类似的messages.en_US.yml,messages.ru.yml等文件 在代码中,我使用$this->get('session

这就是我一直坚持的。 我正在研究Symfony2,并试图使翻译工作正常。但不知怎么的,我不能让它正常工作。这是我得到的。 在config.yml中

translator:      { fallback: de }
session:
        default_locale: en
messages.en.yml
中,我有以下结构:

请登录:请登录

我还有类似的
messages.en_US.yml
messages.ru.yml
等文件

在代码中,我使用
$this->get('session')->setLocale('ru_-ru')
更改区域设置

但是,只有当语言环境设置为“en_US”或“de_de”时,翻译才起作用。在任何其他情况下,它返回键,而不是值。我试着用这个代码翻译

返回新响应($this->get('translator')->trans('Please login')。$this->get('session')->getLocale())并返回我设置的区域设置


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

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

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

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

app/console cache:clear --no-debug

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

可能是文件名约定问题?尝试将messages.ru.yml重命名为messages.ru_ru.yml已尝试。没有帮助。事实上,我猜它只翻译语言环境。即使是en_US,也需要钥匙。是否有任何设置可以设置为仅翻译特定语言?嗨,ArVan,我们遇到了“ru”语言环境的问题,非ASCII字符无法从.xliff中正确提取;您是否经历过类似的情况?:D-这是与MS Windows相当的Symfony“您是否尝试过将其关闭并再次打开?”文档确实提到您在添加新翻译文件时需要清除缓存。也许这只是
sudo
的问题,如果命令
app/console cache:clear--no debug
一开始不起作用。你试过了吗?我不记得了:)这个问题太老了。无论如何,谢谢你。