【发布时间】: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