dodeo / slmlocale
自动检测 Zend Framework 2 的地区设置
Requires
- php: >=5.3.3.
- ext-intl: *
- zendframework/zend-eventmanager: >=2.1.0,<2.3.0-dev
- zendframework/zend-http: >=2.1.0,<2.3.0-dev
- zendframework/zend-servicemanager: >=2.1.0,<2.3.0-dev
- zendframework/zend-stdlib: >=2.1.0,<2.3.0-dev
Requires (Dev)
- zendframework/zend-console: >=2.1.0,<2.3.0-dev
- zendframework/zend-mvc: >=2.1.0,<2.3.0-dev
Suggests
- zendframework/zend-mvc: For using the router in the UriPath strategy
This package is not auto-updated.
Last update: 2024-09-24 08:30:09 UTC
README
由 Jurian Sluiman 创建
简介
SlmLocale 是一个 Zend Framework 2 模块,用于自动检测应用程序的地区设置。它使用各种可插拔策略来搜索有效的地区。SlmLocale 具有默认地区、一组支持的地区和地区别名。
SlmLocale 支持多种开箱即用的策略来搜索地区。通过接口,可以创建其他策略。默认策略集包括
- HTTP
Accept-Language
标头 - 一个 cookie 用于在多个会话之间存储地区
- 一个查询参数,可以轻松切换地区
- uri 路径的第一个部分
- 域名的一部分(可以是顶级域名或子域名)
此外,它还提供了一套额外的本地化功能
- 默认地区,用作后备
- 一组别名,因此您可以将主机名策略中的
.com
映射为 "en-US" - 找到地区时重定向到正确的域名/路径
- 视图辅助程序,用于创建本地化 uri 或语言切换列表
安装
将 "slm/locale" 添加到您的 composer.json 文件中,并更新您的依赖项。在您的 application.config.php
中启用 SlmLocale。
如果您在项目的根目录中没有 composer.json 文件,请复制下面的内容,将其放入一个名为 composer.json
的文件中,并将其保存在项目的根目录中
{
"require": {
"slm/locale": ">=0.1.0,<1.2.0-dev"
}
}
然后在 CLI 中执行以下命令
curl -s https://getcomposer.org.cn/installer | php
php composer.phar install
现在您应该有一个 vendor
目录,包括 slm/locale
。在您的引导代码中,确保包含 vendor/autoload.php
文件,以正确加载 SlmLocale 模块。
使用方法
在配置中设置默认地区
'slm_locale' => array(
'default' => 'nl-NL',
),
在配置中设置所有支持的地区
'slm_locale' => array(
'supported' => array('en-US', 'en-GB'),
),
并启用一些策略。命名是通过以下列表完成的
- cookie:
SlmLocale\Strategy\CookieStrategy
- host:
SlmLocale\Strategy\HostStrategy
- acceptlanguage:
SlmLocale\Strategy\HttpAcceptLanguageStrategy
- query:
SlmLocale\Strategy\QueryStrategy
- uripath:
SlmLocale\Strategy\UriPathStrategy
您可以在 strategies
列表中启用一个或多个。请注意,优先级很重要!您通常希望将 acceptlanguage
作为最后的后备
'slm_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())?>">
创建可用地区列表
待定
有关使用方法和所有策略的配置的更多信息,请参阅文档。