首页 > 解决方案 > Symfony 4.3 禁用翻译回退

问题描述

根据有关翻译的 4.3 文档(https://symfony.com/doc/4.3/translation.html#basic-translation),我正在尝试翻译页面标题。

如果当前语言环境不存在翻译,我不想回退到任何东西。

现在,我正在获取默认的语言环境翻译(如果存在)或它可以找到的第一个翻译。

我怎样才能禁用它?这是我的 /config/packages/translation.yaml 文件:

framework:
default_locale: de
translator:
    default_path: '%kernel.project_dir%/translations'

这是我的控制器内的代码:

/** @var TranslatorInterface $translatorInterface */
$categoryTitle = $translatorInterface->trans('category_title',[]);

只要翻译键 'category_title' 存在于 any 中messages.*.yaml,我就会得到一个值。

标签: symfonytranslationfallback

解决方案


我找到了解决方案,/config/packages/framework.yaml 需要更新:

framework:
secret: '%env(APP_SECRET)%'
default_locale: '%locale%'
translator: { fallbacks: '%fallback%' }

这是翻译.yaml:

framework:
default_locale: '%locale%'
translator:
    default_path: '%kernel.project_dir%/translations'
    fallbacks: '%fallback%'

最后在 services.yaml 我有一个空数组作为后备:

parameters:
locale: 'en'
locales: ['en', 'de', 'es', 'fr', 'it', 'nl', 'no', 'pt', 'sv']
fallback: []

推荐阅读