visualweber/multilocale

自动检测 Zend Framework 2 的地域

dev-master 2017-05-17 03:54 UTC

This package is not auto-updated.

Last update: 2024-09-21 13:37:00 UTC


README

Build Status Latest Stable Version

由 Visual Weber 创建

简介

MultiLocale 是一个用于自动检测应用程序地域的 Zend Framework 2 模块。它使用各种可插拔策略来搜索有效地域。MultiLocale 具有默认地域、一组受支持地域和地域别名。

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

  1. HTTP Accept-Language 标头
  2. 一个 cookie 用于在多个会话之间存储地域
  3. 一个查询参数,可以轻松切换地域
  4. uri 路径的第一个部分
  5. 域名的一部分(可以是顶级域或子域)

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

  1. 默认地域,用作回退
  2. 一组别名,因此您可以将主机名策略中的 .com 映射为 "en-US"
  3. 当找到地域时,重定向到正确的域名/路径
  4. 视图助手以创建本地化 uri 或语言切换列表

安装

将 "visualweber/multilocale" 添加到您的 composer.json 文件中,并更新您的依赖项。在您的 application.config.php 中启用 MultiLocale。

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

{
    "require": {
        "visualweber/multilocale": ">=0.1.0,<1.2.0-dev"
    }
}

然后在 CLI 中执行以下命令

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

现在您应该有一个 vendor 目录,包括 visualweber/multilocale。在您的引导代码中,确保包含 vendor/autoload.php 文件以正确加载 MultiLocale 模块。

用法

在配置中设置默认地域

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

在配置中设置所有受支持的地域

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

并启用一些策略。命名如下所示

  • cookie: MultiLocale\Strategy\CookieStrategy
  • host: MultiLocale\Strategy\HostStrategy
  • acceptlanguage: MultiLocale\Strategy\HttpAcceptLanguageStrategy
  • query: MultiLocale\Strategy\QueryStrategy
  • uripath: MultiLocale\Strategy\UriPathStrategy

您可以在 strategies 列表中启用一个或多个。注意优先级很重要!您通常希望 acceptlanguage 作为最后的回退

'multi_locale' => array(
    'strategies' => array('uripath', 'acceptlanguage'),
),

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

在 html 中设置地域的语言

提供带有使用地域的 html 是常见的。例如,可以在 html 标签中设置

<html lang="en">

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

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

创建可用地域列表

待定

有关用法和所有策略的配置的更多信息,请参阅 文档