我正在尝试使用 gettext() 函数来检索存储在 .mo 和 .po 文件中的数据。我遇到的问题是 gettext() 似乎只返回我作为参数传递的任何值,似乎没有使用 .mo 文件。我在 codeigniter 控制器中调用该函数。
class HomeController extends CI_Controller
{
public function index()
{
global $LANG;
$language = 'en_US';
$lang_path = FCPATH.APPPATH.'language/locales';
putenv('LANG='.$language.'.UTF-8');
setlocale(LC_ALL, $language.'.UTF-8');
bindtextdomain('lang', $lang_path);
textdomain('lang');
$test = gettext('Simpletest');
echo View::load('layouts/home.html', array(
'language' => $LANG->getLanguage(),
'map' => $LANG->get('map'),
'global' => $LANG->get('global'),
'page' => $LANG->get('home'),
'test' => $test
));
}
}
我在“应用程序”目录下有以下目录结构。
./language/locales/en_US/LC_MESSAGES/lang.mo
./language/locales/en_US/LC_MESSAGES/lang.po
./language/locales/fr_CA/LC_MESSAGES/lang.mo
./language/locales/fr_CA/LC_MESSAGES/lang.po
我在 en_US 中的 lang.po 文件如下所示:
msgid ""
msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Simpletest"
msgstr "A small sentence in english"
正如我所说,无论我传递给 gettext 的“键”是什么,它都只返回参数,即 gettext('foo') 返回'foo'。