Php Yii2 i18n翻译和冗余源语言文本
我对i18n这个话题还不熟悉,我试图建立一个i18nweb应用程序。 通过阅读不同的文档和示例,看起来所有提供的可能性都几乎相同,这意味着: 在视图侧,我有一个源语言文本:Php Yii2 i18n翻译和冗余源语言文本,php,yii,internationalization,yii2,translation,Php,Yii,Internationalization,Yii2,Translation,我对i18n这个话题还不熟悉,我试图建立一个i18nweb应用程序。 通过阅读不同的文档和示例,看起来所有提供的可能性都几乎相同,这意味着: 在视图侧,我有一个源语言文本: echo Yii:t('contact','这是关于联系人信息的日志文本') 在翻译文件(CPhpMessageSource或GNU gettext格式)或翻译表中,我必须再次重复此源文本作为锚定,就像在我的CPhpMessageSource的by DE文件中一样: return array( 'This is a
echo Yii:t('contact','这是关于联系人信息的日志文本')代码>
在翻译文件(CPhpMessageSource或GNU gettext格式)或翻译表中,我必须再次重复此源文本作为锚定,就像在我的CPhpMessageSource的by DE文件中一样:
return array(
'This is a log text about contact informations.'
=> 'Des is a langa Text üba Kontakt Infoamadiona.',
);
这意味着,我必须保持源文本冗余(视图和非常单一的翻译文件),这不是维护内容的最佳方式
当然,我可以设置一个ID/锚定,而不是源文本,如:
echo Yii:t('contact','ContactInfo')代码>
返回数组(
“联系人信息”
=>“Des是一种语言文字,是一种信息载体。”
);
但在这种情况下,我无法将动态元素/变量注入文本
我的问题:
这是一个ID/锚定概念(案例2)对Yii2 sourceLanguage机制有效吗
那么,我是否理解了i18n Yii应用程序设计的概念
有可能这样做吗
(sourceLanguage和targetLanguage仅一次)
[Yii 2]需要在翻译中重复源文本的原因是为该文本提供标识符。
可以使用某种标签,但如果不需要翻译(目标语言与源语言相同),则无法获取默认文本(非标签)除非在配置中强制使用:
'components' => [
'i18n' => [
'translations' => [
'category' => [
// ...
'forceTranslation' => true,
],
],
],
],
现在,您可以使用\Yii::t('category','Label1')
并在消息文件中添加:
return [
'Label1' => 'This is expanded text behind the Label1.',
];
对于这里的变量,您可以毫无问题地使用它们,即:
\Yii::t('category', 'Label1', ['aaa' => 1, 'bbb' => 2])
和在消息文件中:
return [
'Label1' => 'Label1 with variables: aaa is {aaa} and bbb is {bbb}.',
];
至于问题#3-如果没有一些特殊的准备,这是不可能的。参考我的答案,这意味着:在翻译文本中使用变量,而不是标签/源语言将起作用!?我不确定我是否遵循。。。区别是什么?我想,我必须从存在翻译标签的视图传递参数placeholder,直到消息文件。(如:“这是参数为{aaa}的al标签文本”)。但在您的示例中,我仅在消息文件中看到参数placeholder。很高兴知道这一点。
return [
'Label1' => 'Label1 with variables: aaa is {aaa} and bbb is {bbb}.',
];