Symfony 4 Translations未显示

时间:2018-01-15 19:19:19

标签: php symfony translation

所以我有 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。

1 个答案:

答案 0 :(得分:5)

我有同样的问题,我找到了解决方案。也许这也是其他人的解决方案。 在我的情况下命令

Object::create([
    'name' => $object['name'],
    //
])->save();

没有清除/ var / cache / translations文件夹。手动删除此文件夹后

./bin/console cache:clear

翻译按预期加载。

我不知道为什么缓存:clear可能在这种情况下不起作用,但此刻我相处得很好。也许我下周会找一些时间调试原因。