3

我正在为一位法国客户开发一个网站。我的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"

在用户未登录的情况下,如何使用不同的源语言进行翻译和页面的默认语言环境?或者在这种情况下是否可以使用用户代理的语言环境?

4

1 回答 1

0

如果您在 URL 中使用语言环境(请参阅doclocale ),您可以在 PHP 代码中强制使用这样的参数:

/**
 * 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');
}  
于 2020-10-12T15:42:37.673 回答