1

我添加了一个用于 gettext 翻译的库。添加了相应的 po 和 mo 文件。

而且翻译工作正常。

现在当我更新我的 po 文件时,更改一些翻译.. 之后当我重新加载页面时,我得到的是旧的翻译,而不是新的。

这是库代码:

/**
 * This method overides the original load method. Its duty is loading the domain files by config or by default internal settings.
 *
 */
function load_gettext($userlang = false) {

    /* I want the super object */
    if ($userlang)
        $this->gettext_language = $userlang;
    else
        $this->gettext_language = 'it_IT';
    log_message('debug', 'Gettext Class gettext_language was set by parameter:' . $this->gettext_language);

    putenv("LANG=$this->gettext_language");
    setlocale(LC_ALL, $this->gettext_language);

    /* Let's set the path of .po files */
    $this->gettext_path = APPPATH . 'language/locale';
    log_message('debug', 'Gettext Class path chosen is: ' . $this->gettext_path);

    bindtextdomain($this->gettext_domain, $this->gettext_path);
    textdomain($this->gettext_domain);
    log_message('debug', 'Gettext Class the domain chosen is: ' . $this->gettext_domain);
    return true;
}

/**
 *  Plural forms added by Tchinkatchuk
 *  http://www.codeigniter.com/forums/viewthread/2168/
 */

/**
 * The translator method
 *
 * @param string $original the original string to translate
 * @param array $aParams the plural parameters
 * @return the string translated
 */
function _trans($original, $aParams = false) {
    if (isset($aParams['plural']) && isset($aParams['count'])) {
        $sTranslate = ngettext($original, $aParams['plural'], $aParams['count']);
        $sTranslate = $this->replaceDynamically($sTranslate, $aParams);
    } else {
        $sTranslate = gettext($original);
        if (is_array($aParams) && count($aParams))
            $sTranslate = $this->replaceDynamically($sTranslate, $aParams);
    }
    return $sTranslate;
}

这是控制器中的用法:

$this->pos_language->load_gettext('fr_FR');
echo $this->pos_language->_trans('Hello world, good morning');
4

2 回答 2

1

我认为您需要将 .po 文件编译为 .mo 文件。Gettext 使用 .mo 文件,.po 只是人类可读的形式。

如果您尚未完成编译步骤,您的应用程序仍在读取您的旧 .mo 文件,其中包含未翻译的字符串...

此页面包含有关 gettext 翻译的更多信息:http ://wiki.creativecommons.org/Translating_PO_Files

于 2011-02-12T17:05:57.633 回答
0

我写了一个助手来集成 php-gettext 与 Smarty & Code Igniter 2 http://bit.ly/rrITVx

我希望它可能会有所帮助

于 2011-10-24T11:42:21.900 回答