所以我有Symfony 4框架的以下演示,它可以正常工作并按预期转换所有内容:
$translator = new \Symfony\Component\Translation\Translator('en_GB');
$translator->addLoader('array', new \Symfony\Component\Translation\Loader\ArrayLoader());
$translator->addResource('array', [
'sample' => 'The English translation goes here...',
], 'en_GB');
echo $translator->trans('sample');
但是我似乎无法使用以下演示:
echo $this->get('translator')->trans('sample');
以下配置到位:
/config/services.yaml:
parameters:
locale: en
/config/packages/translation.yaml:
framework:
default_locale: en
translator:
fallbacks: ['en']
paths:
- '%kernel.project_dir%/translations'
/translations/messages.en.yaml:
sample: The English translation goes here...
倾销以下内容:
$request->getLocale();
$request->getDefaultLocale();
生成以下字符串:
'en_GB'
'en'
我已经尝试将翻译文件重命名为’messages.en.yaml’,’messages.en_GB.yaml’,’messages.en_US.yaml’,然后运行“PHP bin / console cache:clear”以确保缓存完全清除了.
我似乎无法从yaml文件中获取翻译.显示没有错误,但只有翻译键可见.
任何人都可以看到我是在某个地方犯了一个明显的错误还是忽略了什么?
PHP 7.2.0-2 ubuntu16.04.1 deb.sury.org 2(cli)(内置:2017年12月7日20:14:31)(NTS)Linux Mint 18,Apache2 Ubuntu.
解决方法:
我有同样的问题,我找到了解决方案.也许这也是其他人的解决方案.
在我的情况下命令
./bin/console cache:clear
没有清除/ var / cache / translations文件夹.手动删除此文件夹后
rm -rf var/log/translations
翻译按预期加载.
我不知道为什么缓存:clear在这种情况下可能不起作用,但此刻我相处得很好.也许我下周会找一些时间调试原因.