【问题标题】:Yii and PHP GettextYii 和 PHP 获取文本
【发布时间】:2013-12-14 12:47:00
【问题描述】:

我想让我的 yii 应用程序多语言。为此,我想使用 gettext(因为它比 yii 消息简单得多)。

为此,我使用了this yii extension,配置了 PO 文件,进行了翻译等。

最大的问题:什么也没发生。什么都没有翻译。

【问题讨论】:

  • 那么你的问题是什么?
  • 你瘦了什么,可能是什么问题?
  • 我刚刚用这个扩展构建了它。我猜你已经解决了你的问题?否则我可以向您发布我的解决方案。
  • 我使用了 yii 的消息功能,但我认为 PO 解决方案要舒服得多。那么你能发布你的解决方案吗?

标签: yii internationalization gettext poedit


【解决方案1】:

我可以建议你这个很棒的多语言扩展!

http://www.yiiframework.com/extension/tstranslation/

【讨论】:

    【解决方案2】:

    要使用不带任何扩展名的 gettext,请按照以下步骤操作。在config/main.php 中设置你的目标语言如下:

    'language' = 'ru',
    

    设置messages组件使用CGettextMessageSource

    'messages' => array(
        'class' => 'CGettextMessageSource',
    ),
    

    protected/messages/ru 文件夹中创建messages.po 文件(注意:文件夹名称与语言代码相同)。如果使用poedit messages.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 将无法工作!

    现在只需在 poedit 中打开 messages.poUpdate → 进行翻译 → Save。 而messages.mo 文件将被 Yii 创建和使用。

    对于您的语言复数字符串,请参阅gettext help

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-23
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      相关资源
      最近更新 更多