首页
学习
活动
专区
圈层
工具
发布

ZF2翻译
EN

Stack Overflow用户
提问于 2014-03-19 17:05:49
回答 3查看 6.3K关注 0票数 4

我有两个模块-应用程序和StickyNotes。我需要在所有的页面上使用翻译。

我所做的:

1)视图:<?=$this->translate('Home');?>

2)在Application\Module.php中:

代码语言:javascript
复制
public function onBootstrap(MvcEvent $e)
{
    $translator = $e->getApplication()->getServiceManager()->get('translator');
    $eventManager = $e->getApplication()->getEventManager();
    $moduleRouteListener = new ModuleRouteListener();
    $moduleRouteListener->attach($eventManager);
    $app = $e->getParam('application');
    $app->getEventManager()->attach('render', array($this, 'setLayoutTitle'));
    $translator->setLocale('ru_RU');
    echo $translator->getLocale(); //ru_RU
}

3)在StickyNotes\Module.php中:

代码语言:javascript
复制
public function onBootstrap(MvcEvent $e)
{
    $translator = $e->getApplication()->getServiceManager()->get('translator');
    $translator->setLocale('ru_RU');
    echo $translator->getLocale(); //ru_RU
}

4) Application..\module.config.php:

代码语言:javascript
复制
'service_manager' => array(
    'factories' => array(
        'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
    ),
),

'aliases' => array(
    'translator' => 'MvcTranslator',
),

'translator' => array(
    'locale' => 'en_US',
    'translation_file_patterns' => array(
        array(
            'type'     => 'gettext',
            'base_dir' => __DIR__ . '/../language',
            'pattern'  => '%s.mo',
        ),
    ),
),

5) StickyNotes..\module.config.php相同:

代码语言:javascript
复制
'service_manager' => array(
    'factories' => array(
        'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
    ),
),

'aliases' => array(
    'translator' => 'MvcTranslator',
),

'translator' => array(
    'locale' => 'en_US',
    'translation_file_patterns' => array(
        array(
            'type'     => 'gettext',
            'base_dir' => __DIR__ . '/../language',
            'pattern'  => '%s.mo',
        ),
    ),
),

如果我尝试$translator->getLocale();输出'ru_RU',但是翻译不起作用。

另外,如果我手动将'locale' => 'en_US',更改为'locale' => 'ru_RU',翻译,工作正常。谢谢你的回答!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-20 10:00:20

在Application\Module.php中

代码语言:javascript
复制
public function onBootstrap(MvcEvent $e) {
        $translator = $e->getApplication()->getServiceManager()->get('translator');
            $lang = $e->getRequest()->getQuery('lang'); // new language
            $session = new Container('base');
            if($lang == null && $lang == ''){
                if ($session->offsetExists('lang')) {
                    $lang = $session->offsetGet('lang'); // current language
                }else{
                    $lang = Settings::DEFAULT_LANGUAGE; // default language
                }
            }
            $session->offsetSet('lang', $lang);
            $loc = Settings::$locations[$lang];
            $translator
            ->setLocale($loc)
            ->setFallbackLocale(Settings::DEFAULT_LANGUAGE .'_' . Settings::DEFAULT_LOCATION);
    }

和设置类

代码语言:javascript
复制
class Settings{
   const DEFAULT_LOCATION =  'IR';
   const DEFAULT_LANGUAGE = 'fa';

   public static $locations = array(
        'fa'=>'fa_IR',
            'sa'=>'sa_SA',//Arabic (sa, sa-SA)
        'tr'=>'tr_TR',
        'en'=>'en_US'
    );
}
票数 2
EN

Stack Overflow用户

发布于 2014-03-19 18:06:12

只将翻译器配置放在Application\module.config.php中,并确保在应用程序模块中有语言文件夹,并将*.mo和*.po文件放在其中。

事实上,您不需要在每个模块中设置区域设置。只放进Application\Module.php

在po编辑目录->属性->源关键字->检查“翻译”字存在,它是最好的第一。

最后,<?=$this->translate('Home');?>表示反对。使用<?php echo $this->translate('Home');?>

更新1:

对不起,此代码<?=$this->translate('Home');?>不建议使用,但PHP手动建议是<?php echo $this->translate('Home');?>

http://php.net/manual/en/language.basic-syntax.phpmode.php

票数 1
EN

Stack Overflow用户

发布于 2015-04-24 12:38:02

这个问题是由于没有intl扩展而造成的。

因此,只需采取以下步骤:

我不得不安装PHP扩展:

代码语言:javascript
复制
sudo apt-get install php5-intl

Apache重新启动:

代码语言:javascript
复制
sudo service apache2 restart

检查编译了哪些扩展:

代码语言:javascript
复制
php -m
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22513140

复制
相关文章

相似问题

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