joacub / libra-locale
Zend Framework 2 本地化模块。它通过个别模块检测本地化,并将参数 'locale' 传递给其控制器
Requires
- php: >=5.3.3
- libra/libra-module-manager: 1.*
- zendframework/zend-i18n: 2.*
- zendframework/zend-mvc: 2.*
This package is not auto-updated.
Last update: 2024-09-10 07:19:25 UTC
README
#Libra Locale Module
##描述此模块将本地化添加到您的模块中。它还设置全局默认本地化。它使应用程序具有本地化意识,添加类似于通常使用的 en、fr、ru 等本地化简写别名,而不是像 en-US.UTF8、en-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\Uri 和 LibraLocale\Navigation\Page\Mvc 类型。或者使用类型为 page === null 和服务容器 - LibraLocale\Navigation\Service\DefaultNavigationFactory。您可以通过在 application.config.php 文件中的 'service_manager' 数组行中添加来完成此操作
'Navigation' => 'LibraLocale\Navigation\Service\DefaultNavigationFactory',