我有gettext翻译文件设置如下:
myapp/i18n/locale/da_DK/LC_MESSAGES/generic.mo
myapp/i18n/locale/en_US/LC_MESSAGES/generic.mo
我正在尝试在我的应用程序中使用Zend I18n翻译组件,例如
use Zend\I18n\Translator\Translator;
$locale='da_DK';
$tr =new Translator();
$tr->addTranslationFile('gettext',"i18n/locale/$locale/LC_MESSAGES/generic.mo",'generic',$locale);
还试过这个:
$tr->addTranslationFilePattern('gettext',"i18n/locale","%s.mo",'generic');
这是正确的设置选择i18n/locale/da_DK/LC_MESSAGES/%s.mo
文件,给定的区域设置是da_DK
吗?
我测试了它:
$tr->setLocale($locale);
echo $tr->translate('Search');
这不起作用,我不确定这是否是所需的配置。
编辑:
我没有使用Zend Framework作为整体,而只使用一些选定的模块。所以我需要独立于ZF2工作。
在ZF2中,服务管理器设置为在给定配置的情况下自动初始化转换器,例如
'translator' => array(
'locale' => 'en_GB',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
),
这里的问题是,如果我们仅使用Zend上下文中的仅转换组件来标准gettext文件结构,那么它是如何适合的。这是:
locale/en_US/LC_MESSAGES/
locale/en_UK/LC_MESSAGES/
locale/da_DK/LC_MESSAGES/
locale/es_ES/LC_MESSAGES/
答案 0 :(得分:0)
试试这个。在module.config中
'translator' => array(
'locale' => 'en_US',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
)
将* .mo放在lagguage文件夹中 应用 - >语言 - > * .mo和* .po
更新1:
1-确保mo文件的路径正确。
2-在poedit目录 - > properties->来源关键字 - >检查翻译单词是否存在,最好先行。