Yii:GetText _()vs Yii :: t()

时间:2014-05-28 12:38:10

标签: php yii gettext php-gettext

在使用GetText翻译Yii中的字符串时,我们是否必须使用Yii::t($category,'message')或gettext的_('message')语法?

然后我们如何将字符串拉入PO文件?

4 个答案:

答案 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