首页 > 程序开发 > Zend Translate的使用和设置

Zend Translate的使用和设置

2008年9月30日

Zend Translate的功能不错, 我们使用gettext格式作为我们翻译文件的标准格式,使用POEditor维护翻译文件,处理后的gettext文件是二进制的mo文件. 我们使用ZF的根据目录名(LOCALE_DIRECTORY)自动搜索相关译文功能,同时使用根据mo文件更新的cache提高速度,为了设置translate功能,我们在bootstrap文件有如下代码
$cache = Zend_Cache::factory('Page','File',$frontendOptions,$backendOptions);
Zend_Translate::setCache($cache);
$translate = new Zend_Translate('gettext','../data/locales/','zh',array(
    'scan' =>Zend_Translate::LOCALE_DIRECTORY
));
$translate->setLocale('auto');
Zend_Registry::set('Zend_Translate', $adapter);
Zend_Form::setDefaultTranslator($translate);

注意:在保存到 Zend_Registry 中时,键值必须是 Zend_Translate,否则,得不到应有的结果。

其中,‘scan’ =>Zend_Translate::LOCALE_DIRECTORY设定ZF在指定目录下搜索翻译mo文件。我们的目录结构为:
application
...
data
  ...
  locales
    en
    de
    fr
    zh
...

在ZF的Document中有一个Example,要求设置’auto’格式:
$translate = new Zend_Translate('gettext','path','auto',array('scan' =>Zend_Translate::LOCALE_DIRECTORY));

但是事实上根据我在ZF1.52, 1.6, 1.61中测试,这个代码是有bug的, ‘auto’并不能正确将用户浏览器语言设置为当前语言,而是将最后一个读到的文件设置为默认Locale, 这点从ZF1.61的代码中Zend_Translate_Adapter::addTranslation函数中可以看到。

我们是怎么解决的呢,很简单,第一次读取时设置语言为’zh’, 然后立即设定默认locale为’auto’

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

程序开发

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.

This blog is kept spam free by WP-SpamFree.