【问题标题】:How to use zend i18n module in mix php/other framework?如何在混合 php/其他框架中使用 zend i18n 模块?
【发布时间】:2014-07-19 10:19:17
【问题描述】:

我想在我的自定义 php 项目中使用 ZF2 i18n 模块。 我的 composer.json 文件如下所示

{
    "require": {
        "zendframework/zend-i18n": "2.3.*@dev"
    }
}

我的 index.php 文件是

include_once './vendor/autoload.php';

use Zend\I18n\Translator\Translator;

$translator = new Translator();
$translator->setLocale('fr_FR');
echo $translator->translate('All rights reserved.');

我的问题是如何为我存储 en_US.po、fr_FR.po 文件以进行翻译以及设置 $translator->setLocale('fr_FR'); 的语言设置基本目录然后是法语版本的“保留所有权利”。文字展示。

【问题讨论】:

    标签: php zend-framework2 zend-translate


    【解决方案1】:

    您需要向翻译器添加一个模式才能使其正常工作(您已支持两种语言)。使用模式允许您在不更改代码的情况下添加更多语言环境。使用addTranslationPattern 函数。函数定义为:

    //$type -> format loader
    //$baseDir -> the dir where you place your locale files
    //$pattern -> sprintf expression (the locale is parsed through it)
    //$textDomain -> category specified for the file. By default is 'default'
    public function addTranslationFilePattern($type, $baseDir, $pattern, $textDomain = 'default')
    

    像这样使用它:

    $translator = new Translator();
    $translator->addTranslationFilePattern('gettext', '<your_base_dir>', '%s.mo');
    

    查看reference了解更多信息。

    【讨论】:

    • 嗨@lluisaznar 感谢您的回复,我收到以下错误。致命错误:第 56 行的 D:\xampp\htdocs\zf2\translate\vendor\zendframework\zend-i18n\Zend\I18n\Translator\LoaderPluginManager.php 中找不到类 'Zend\ServiceManager\AbstractPluginManager'
    • 好像有依赖关系。 LoaderPluginManager 扩展了类 Zend\ServiceManager\AbstractPluginManager。 I18n composer.jsonzendframework/zend-servicemanager 定义为要求。您是否检查过它是否已安装在您的 zf2 库文件夹中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多