繁体   English   中英

指定源语言,如果 default_locale 不是英语

[英]Specify source language, if the default_locale is not english

我正在为一位法国客户开发一个网站。 我的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 中使用 locale(请参阅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');
}  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM