我想让我的 yii 应用程序多语言。为此,我想使用 gettext (因为它比 yii 消息简单得多)。
为此,我使用了这个 yii 扩展,配置了 PO 文件,进行了翻译等。
最大的问题:什么都没发生。什么都没有翻译。
我想让我的 yii 应用程序多语言。为此,我想使用 gettext (因为它比 yii 消息简单得多)。
为此,我使用了这个 yii 扩展,配置了 PO 文件,进行了翻译等。
最大的问题:什么都没发生。什么都没有翻译。
我可以建议你这个很棒的多语言扩展!
要使用不带任何扩展名的 gettext,请按照以下步骤操作。像config/main.php
这样设置你的目标语言:
'language' = 'ru',
设置messages
要使用的组件CGettextMessageSource
:
'messages' => array(
'class' => 'CGettextMessageSource',
),
messages.po
在文件夹中创建文件protected/messages/ru
(注意:文件夹名称与语言代码相同)。如果使用poeditmessages.po
,文件必须有适当的标题。例子:
msgid ""
msgstr ""
"Project-Id-Version: FOO BAR 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-11-11 11:11+0300\n"
"PO-Revision-Date: \n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-KeywordsList: _ngettext:1,2;t:1c,2\n"
"X-Poedit-SearchPath-0: ../..\n"
注意t:1c,2
。这意味着,函数的第一个参数Yii::app()
将用作上下文(请参阅msgctx),第二个参数将用作要翻译的实际字符串。没有这个,您的 i18n 将无法工作!
现在只需messages.po
在 poedit 中打开 → Update
→ 进行翻译 → Save
。messages.mo
Yii 将创建和使用文件。
对于您的语言复数字符串,请参见gettext help。