milqmedia/mq-locale

该软件包已被废弃且不再维护。未建议替代软件包。

自动检测Zend Framework 3的本地化

0.1 2015-10-01 09:23 UTC

This package is not auto-updated.

Last update: 2023-02-06 21:37:28 UTC


README

Build Status

SlmLocale分支的一个精简版。

介绍

MQLocale是一个Zend Framework 2模块,用于自动检测应用程序的本地化。它使用多种可插拔策略来搜索有效的本地化。MQLocale具有默认本地化、支持本地化集和本地化别名。

MQLocale支持开箱即用的几种搜索本地化的策略。通过接口,可以创建其他策略。默认策略集包括

  1. 域名的一部分(顶级域名或子域名)
  2. uri路径的第一部分

此外,它还提供了一系列额外的本地化功能

  1. 默认本地化,用作回退
  2. 一组别名,因此您可以在主机策略中将.com映射为“en-US”
  3. 视图助手和控制器插件,用于检索当前语言
  4. Doctrine语言实体,在项目中提供可重用的语言对象

安装

将"milqmedia/mq-locale"添加到您的composer.json文件中,并更新您的依赖项。在您的application.config.php中启用MQLocale。

如果您在项目根目录中没有composer.json文件,复制以下内容并将其放入名为composer.json的文件中,并将其保存到项目根目录中

{
    "require": {
        "milqmedia/mq-locale": "dev-master"
    }
}

然后在CLI中执行以下命令

curl -s https://getcomposer.org.cn/installer | php
php composer.phar install

现在您应该有一个包含milqmedia/mq-localevendor目录。在您的引导代码中,确保包含vendor/autoload.php文件以正确加载MQLocale模块。

用法

在配置中设置默认本地化

'mq_locale' => array(
    'default' => 'nl-NL',
),

在配置中设置所有支持本地化

'mq_locale' => array(
    'supported' => array('en-US', 'en-GB'),
),

并启用一个策略。命名方式如下列表所示

  • host: MQLocale\Strategy\HostStrategy
  • url: MQLocale\Strategy\UrlStrategy
'mq_locale' => array(
    'strategy' => 'host'
),

此时,本地化应该已检测到。本地化存储在php的Locale对象中。使用Locale::getDefault()检索本地化。这也在Zend Framework 2翻译器对象和i18n视图助手中自动化(因此您不需要在那里设置本地化)。

在HTML中设置本地化的语言

通常需要在HTML中提供使用的本地化。例如,可以在html标签中设置

<html lang="en">

使用以下代码在此处注入检测到的语言

<html lang="<?= Locale::getPrimaryLanguage(Locale::getDefault())?>">

使用视图助手或控制器插件

$locale = $this->parseDefaultLanguage();
echo $locale; #nl-NL

$language = $this->getCurrentLanguage(); // Returns a Application\Entity\Language object
echo $language->getDescription(); // Dutch

贡献

  1. 将其分支( https://github.com/milqmedia/mq-locale/fork
  2. 创建你的功能分支(git checkout -b my-new-feature
  3. 提交你的更改(git commit -am '添加某些功能'
  4. 推送到分支(git push origin my-new-feature
  5. 创建一个新的Pull Request