我正在为一位法国客户开发网站。
我的 translations.yml
如下所示:
framework:
default_locale: en
translator:
default_path: '%kernel.project_dir%/translations'
fallbacks:
- fr
我用英文写所有的东西,然后运行这个命令:
php bin/console translation:update --force fr
它生成.xlf
,具有这些参数的文件:
source-language="en" target-language="fr"
它按预期工作。
我也想将登录页面设为法语。当用户尚未登录时访问该页面,因此使用 default_locale
。
我将 default_locale
更改为 fr
并将 fallbacks
更改为 en
。
登录页面按预期以法语显示,但现在 translation:update
脚本已损坏。如果我运行它,生成的翻译文件有这些不正确的参数:
source-language="fr" target-language="fr"
如何在用户未登录的情况下使用不同的源语言进行翻译并为页面使用默认语言环境?或者在这种情况下是否可以使用来自用户代理的语言环境?
最佳答案
如果您在 URL 中使用区域设置(请参阅 doc),您可以在 PHP 代码中像这样强制参数 locale
:
/**
* Login page in French by default
* Except if the user specifies the locale in the URL
*
* @Route("/", name="login_default", locale="fr")
* @Route("/{_locale}", name="login_default_lang")
*/
public function index()
{
return $this->render('login_page.html');
}
其他页面默认为英文:
/**
* Other page in English by default
* Except if the user specifies the locale in the URL
*
* @Route("/", name="other_default", locale="en")
* @Route("/{_locale}", name="other_default_lang")
*/
public function index()
{
return $this->render('other_page.html');
}
关于php - 指定源语言,如果 default_locale 不是英语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63883499/