проблема gettext в codeigniter - PullRequest
       44

проблема gettext в codeigniter

1 голос
/ 12 февраля 2011

Я добавил одну библиотеку для перевода 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');

Ответы [ 2 ]

1 голос
/ 12 февраля 2011

Я думаю, вам нужно скомпилировать ваши .po файлы в .mo файлы.Gettext использует файл .mo, .po - просто удобочитаемая форма.

Если вы не выполнили шаг компиляции, ваше приложение все еще читает ваши старые файлы .mo с непереведенными строками ...

Эта страница содержит дополнительную информацию о переводе gettext: http://wiki.creativecommons.org/Translating_PO_Files

0 голосов
/ 24 октября 2011

Я написал помощник для интеграции php-gettext с Smarty & Code Igniter 2 http://bit.ly/rrITVx

Я надеюсь, что это может помочь

...