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

标签 php symfony symfony-translator

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

相关文章:

php - 如何使用 jquery 添加新元素并在 php 中发布其值?

php - 一键上传多张图片到服务器问题

php - 在 Symfony 框架中使用 openpgp-php 尝试从命名空间 "OpenPGP_SecretKeyPacket"加载类 "App\Controller"

forms - Symfony2 将 reCaptcha 字段添加到注册表单

ruby - 当我想部署我的网站时密码错误

php - 用于确定一个句子是否等同于另一个句子的 NLP 库?

php - 该查询有效,但我想知道是否可以缩短它