Zend framework2 初始化Zend 2 I18N转换器以使用现有的gettext文件

Zend framework2 初始化Zend 2 I18N转换器以使用现有的gettext文件,zend-framework2,zend-translate,Zend Framework2,Zend Translate,我有如下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翻译文件设置:

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);
 'translator' => array(
        'locale' => 'en_GB',
        'translation_file_patterns' => array(
            array(
                'type'     => 'gettext',
                'base_dir' => __DIR__ . '/../language',
                'pattern'  => '%s.mo',
            ),
        ),
    ),
我也试过:

  $tr->addTranslationFilePattern('gettext',"i18n/locale","%s.mo",'generic');
如果给定的区域设置是
da\u DK
,那么选择
i18n/locale/da\u DK/LC\u MESSAGES/%s.mo
文件的设置正确吗

我通过以下方式进行了测试:

$tr->setLocale($locale);
echo $tr->translate('Search');
这不起作用,我不确定这是否是理想的配置

编辑:

我并没有将Zend框架作为一个整体使用,而是只使用一些选定的模块。所以我需要它独立于ZF2工作

在ZF2中,服务管理器设置为在给定配置的情况下自动初始化转换器,例如

use Zend\I18n\Translator\Translator;
$locale='da_DK';
$tr =new Translator();
$tr->addTranslationFile('gettext',"i18n/locale/$locale/LC_MESSAGES/generic.mo",'generic',$locale);
 '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/

试试这个。在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目录->属性->源关键字->检查翻译词是否存在,最好是第一个。

我没有使用zend framework,它的独立项目,只使用zend翻译模块