所以我有 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'
我已尝试将翻译文件重命名为'消息。 en .yaml','消息。 en_GB 。 yaml','消息。 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。
答案 0 :(得分:5)
我有同样的问题,我找到了解决方案。也许这也是其他人的解决方案。 在我的情况下命令
Object::create([
'name' => $object['name'],
//
])->save();
没有清除/ var / cache / translations文件夹。手动删除此文件夹后
./bin/console cache:clear
翻译按预期加载。
我不知道为什么缓存:clear可能在这种情况下不起作用,但此刻我相处得很好。也许我下周会找一些时间调试原因。