【问题标题】:Symfony 4 Translations not displayingSymfony 4翻译不显示
【发布时间】:2018-06-24 11:04:26
【问题描述】:

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

【问题讨论】:

  • messages.en.yaml的完整路径是什么?
  • @drkey 问题中已经指定了完整路径。它是“/translations/messages.en.yaml”,/translations 与“src”和“public”在同一目录中。
  • 那么执行php bin/console debug:container --parameter=kernel.project_dir会得到什么?
  • kernel.project_dir: /var/www/html/projects/symfony4Test
  • 您找到解决方案了吗?我现在正在努力解决同样的问题。

标签: php symfony translation


【解决方案1】:

我遇到了同样的问题,我找到了解决方案。也许这也是其他人的解决方案。 就我而言,命令

./bin/console cache:clear

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

rm -rf var/log/translations

翻译按预期加载。

我不知道为什么 cache:clear 在这种情况下可能不起作用,但目前我能接受它。也许我下周找点时间调试一下原因。

【讨论】:

  • 我的开始使用第一个 rm -rf var/log/translations 然后 ./bin/console cache:clear
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多