Symfony :这些消息不适用于给定的语言环境,也无法在回退语言环境中找到



我正在尝试使用symfony翻译。这是我的翻译.yml

framework:
default_locale: 'en'
translator:
paths:
- '%kernel.project_dir%/translations'
fallbacks: ['en']

我已经在翻译目录中创建了messages.en.yml。

## YAML Template.
Home: Home
Admin: Admin
Dashboard: Dashboard
Vehicles: Vehicles
Id: Id

但是当我尝试这样使用时,

{% trans %}Dashboard{% endtrans %}

我收到此错误消息,

这些消息不适用于给定的区域设置,并且不能 在回退区域设置中找到。将它们添加到翻译目录 以避免Symfony输出未翻译的内容。

区域设置由 2 个部分(语言和国家/地区(组成,并带有下划线:例如it_IT或en_EN

例如,瑞士有3种口语:

  • de_CH
  • ch_CH
  • fr_CH

翻译文件的文件名应如下所示:

  • messages.en_EN.yml
  • messages.it_IT.yml

翻译密钥在每个翻译文件中应该是唯一的、点分隔的和相等的。首先是翻译密钥,然后是冒号,然后是翻译的内容。

# messages.it_IT.yml
navigation.home: Clicca per casa
navigation.help: Clicca per aiuto
# messages.en_EN.yml
navigation.home: Click for home
navigation.help: Click for help

现在,您可以在应用程序中使用导航键,一个好的 IDE 将通过选择它们来帮助您。当对应用程序的不同部分使用不同的文件时,您必须在 twig 中处理它们,例如:

{{ 'navigation.home'|trans({}, 'application') }}
{{ 'navigation.help'|trans({}, 'application') }}
<div class="error-message">
The following error occured: {{ 'error.login'|trans({}, 'messages') }}
</div>
php bin/console cache:clear

清除缓存,如果您渴望新的翻译文件,则必须这样做。

我刚刚找到了一个解决方法。 添加了消息.it.yml文件并在翻译中更改了fallbacks: ['it'].yml

framework:
default_locale: 'en'
translator:
paths:
- '%kernel.project_dir%/translations'
fallbacks: ['it']

由于我已经添加了带有英语 bu 的 messages.en.yml 更改,我不确定为什么会发生这种情况。

最新更新