2011-02-12 87 views
1

我添加了一个用于gettext转换的库。添加了相应的po和mo文件。codeigniter中的gettext问题

而且翻译工作正常。

现在,当我更新我的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'); 
+0

你有没有重新启动编辑Apache(假设这是你使用的Web服务器)? – salathe 2011-02-12 11:57:52

回答

1

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

如果你还没有完成编译步骤,您的应用程序仍然在读你的旧的.mo文件,与未翻译的字符串...

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

+0

谢谢..那是我认为的问题,现在它正在像一个魅力:)干杯...... – viMaL 2011-02-14 03:56:03