首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Zend Framework2中注册自定义Translator Loader

在Zend Framework2中注册自定义Translator Loader
EN

Stack Overflow用户
提问于 2012-10-26 03:49:05
回答 2查看 2.3K关注 0票数 5

我正在尝试注册一个自定义的数据库转换器加载器。

为此,我的灵感来自于:Feeding Zend Translator

我在(module.config.php)中有以下工厂代码:

代码语言:javascript
复制
'service_manager' => array(
    'factories' => array(
        'translator' => function($sm){
            $translator = new \V1\Service\DatabaseTranslationService();
            return $translator->createService($sm);
        },
    ),
),

DatabaseTranslationService看起来像这样:

代码语言:javascript
复制
$config = $serviceLocator->get('Config');
    $trConfig = isset($config['translator']) ? $config['translator'] : array();
    $translator = new \Zend\I18n\Translator\Translator();
    $translator->getPluginManager()->setInvokableClass('database', '\Foo\I18n\Translator\Loader\DatabaseTranslator', true);
    $translator->addTranslationFile('database', 'en_EN');

    return $translator;

但是似乎没有使用"setInvokableClass“:我得到了这个错误:

代码语言:javascript
复制
Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for database

有人知道如何正确注册翻译器吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-12 04:47:52

经过两天的寻找,我找到了一个解决方案。

我不知道这是不是一个好的解决方案,但它对我来说是有效的。

替换该行:

代码语言:javascript
复制
$translator->getPluginManager()->setInvokableClass('database', '\Foo\I18n\Translator\Loader\DatabaseTranslator', true);

使用

代码语言:javascript
复制
$viewHelper = $serviceLocator->get('viewHelperManager');
$viewHelper->setInvokableClass('database', '\Foo\I18n\Translator\Loader\DatabaseTranslator', true);

我希望这个解决方案能帮助你。

票数 3
EN

Stack Overflow用户

发布于 2013-09-21 06:23:06

在当前版本(zf2 2.2.4)中,您只需更改type-config条目:

代码语言:javascript
复制
'translator' => array(
    'locale' => 'de_DE',
    'translation_file_patterns' => array(
        array(
            'type' => 'YourNamespace\I18n\Translator\Loader\YourCustomFormat',
            'base_dir' => __DIR__ . '/../language',
            'pattern'  => '%s.whatever',
        ),
    ),
)

YourNamespace\I18n\Translator\Loader\YourCustomFormat必须实现Zend\I18n\Translator\Loader\FileLoaderInterface接口;load($locale, $filename)方法必须返回Zend\I18n\Translator\TextDomain实例。

这对我很有效。

(当然,自动加载器必须找到类)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13076103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档