在使用GetText翻译Yii中的字符串时,我们是否必须使用Yii::t($category,'message')
或gettext的_('message')
语法?
然后我们如何将字符串拉入PO文件?
答案 0 :(得分:6)
我总是使用Yii :: t(' xx',' yy')以便更好地控制本地化。 我可以在
下拆分更多文件message/LANG/file.php
与
<?php
return array(
'xx' => 'localized',
);
?>
这适用于Yii Framework 1.x
答案 1 :(得分:4)
您可以通过POEdit app添加字符串:http://poedit.net/ 它允许您扫描项目文件并自动将所有必需的字符串添加到.po文件中。
如果涉及Yii :: t($ category,'message')和_('message')之间的区别 - 你应该使用Yii :: t($ category,'message')。 GetText的_('message')适用于完全不同的po / mo目录结构。
我个人使用POEdit作为字符串扫描仪,它就像一个魅力。
答案 2 :(得分:2)
我这样用:
当我有例如:
Yii::app()->language = en
文件夹messages
中的包含en
文件夹,在此文件夹中我有文件lang.php
在此文件夹lang.php
上我有例如:
<?php
return array(
'example1'=>'search',
'example2'=>'news',
);
然后当我需要调用视图翻译时:
<?=Yii::t('lang','example1');?>
,结果是:search
当我更改:Yii::app()->language = de
时,我必须拥有messages/de/lang.php
并且我已经拥有了这个问题:
<?php
return array(
'example1'=>'Suche',
'example2'=>'Nachrichten',
);
然后当我需要调用视图翻译时:
<?=Yii::t('lang','example1');?>
结果是:Suche
答案 3 :(得分:1)
您需要使用Yii :: t()进行翻译。使用内置的yiic message
命令,您可以将所有文本生成到语言文件中。
示例-
Yii::t('app', 'Hello World');
Yii::t('email', 'Welcome');
这将在您的messages目录中生成2个文件app.php和email.php。 messages / en / app.php&messages / en / email.php
请在此处找到有关Yii翻译的更多信息
https://www.yiiframework.com/doc/guide/2.0/en/tutorial-i18n https://www.yiiframework.com/doc/guide/1.1/en/topics.i18n