joacub/libra-locale

Zend Framework 2 本地化模块。它通过个别模块检测本地化,并将参数 'locale' 传递给其控制器

0.5.2 2013-09-14 09:05 UTC

This package is not auto-updated.

Last update: 2024-09-10 07:19:25 UTC


README

#Libra Locale Module

##描述此模块将本地化添加到您的模块中。它还设置全局默认本地化。它使应用程序具有本地化意识,添加类似于通常使用的 enfrru 等本地化简写别名,而不是像 en-US.UTF8en-GB 等等这样的长本地化标签。

####注意!您可以通过将此模块添加到您的项目作为 LibraLocale 保留默认别名的路径,并以相同的方式使用任何东西来轻松地将此模块添加到您的项目中。

##使用要启用本地化,请在应用程序配置中添加模块。要禁用任何模块的本地化行为,请将 disable_locale => true 参数添加到模块根级路由的路由选项中

    'router' => array(
        'routes' => array(
            'application' => array(
                'type' => 'Segment',
                'options' => array(
                    'route' => '/application',
                    'disable_locale' => true,
                    'constraints' => array(
                        'alias'      => '[a-zA-Z][a-zA-Z0-9_-]*',
                    ),
                    'defaults' => array(
                        ....
                    ),
                    'may_terminate' => true,
                    'child_routes' => array(
                        ....
                    )
                )
            ),
        ....

之后,您可以从 RouteMatch 参数中获取本地化别名。在控制器中通过代码

    $locale = $this->params('locale');
    //or
    $locale = $this->getEvent()->getRouteMatch()->getParam('locale');

它有一个切换器,通过路由使用带有参数 'to' 的本地化别名进行使用

    echo $this->url('libra-locale/switch', array(), array('query' => array('to' => 'en')));
    echo $this->url('libra-locale/switch', array(), array('query' => array('to' => 'ru')));
    echo $this->url('libra-locale/switch', array(), array('query' => array('to' => 'fr')));

####检查是否启用了本地化要禁用本地化,您可以通过以下方式

  • 取消注释路由中的 locale_aware 选项。它应假定在启用模块的情况下为 '*' 或 'All' 本地化工作。
  • 禁用 LibraLocale 模块。

然后要检查应用程序是否支持本地化,请使用

    if (\LibraModuleManager\Module::isModulePresent('LibraLocale')) {
        //put code here
    }

注意:我刚刚意识到,可以在配置中添加一个标志而不是禁用模块。将在需求时实现。

感谢您使用此模块。

##安装它可通过 composer 包 libra/libra-locale 获取。

  • 将其添加到 composer.json 的 required 列表中:"libra/libra-locale": "~0.3.0"
  • config/application.config.php 的模块数组中启用模块,添加行:'LibraLocale',
  • vendor/libra/libra-locale/config/libra-locale.global.php.dist 复制到 config/autoload/libra-locale.global.php
  • 如上所述使用段落中所述,为希望启用的模块启用它。

##变更日志 #####0.5.0 在一些经验之后,我决定将默认本地化路径设置为 '/' 而不是 '/locale/',因为默认本地化很少更改。如果您有像 en-US 和 en-GB 这样的本地化子标签,页面可能会重复 - 将几乎相同。因此,搜索引擎应该将它们识别为在不同本地化中的相同文本(我希望在未来是这样的)。在配置中添加了参数来设置重定向行为。由于 (http://www.w3.org/International/articles/language-tags/)、(http://en.wikipedia.org/wiki/IETF_language_tag) 和 (http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html) 的新标准,保留了连字符分隔符(而不是下划线)。在 '/' 的默认本地化将使在无本地化的项目中添加本地化更加顺畅。

BC 变更

  • 通过启用此模块,本地化将添加到所有 http 路由中。要禁用它,请将 'disable_locale' => true, 参数添加到自定义路由中。

使用

  • 通过 \Locale::getDefault(); 获取当前本地化
  • 在控制器动作中,通过 $this->params('locale'); 获取当前本地化别名。或者通过 \LibraLocale\Module::$alias;
  • 通过:\LibraLocale\Module::getLocales() 获取可用和允许的别名和本地化列表

添加
标志 redirect_from_locale_tag 允许从本地化标签重定向到别名。现在它将接受几乎未知的别名。默认值为 false,但在 libra-cms 全局中,直到版本 0.6.0,它将为 BC 而设置为 true。

要通过导航助手获取适当的链接,请在页面中使用 LibraLocale\Navigation\Page\UriLibraLocale\Navigation\Page\Mvc 类型。或者使用类型为 page === null 和服务容器 - LibraLocale\Navigation\Service\DefaultNavigationFactory。您可以通过在 application.config.php 文件中的 'service_manager' 数组行中添加来完成此操作

            'Navigation' => 'LibraLocale\Navigation\Service\DefaultNavigationFactory',