unjudder / locale
自动检测 Zend Framework 2 的区域设置
Requires
- php: >=5.3.3.
- ext-intl: *
- zendframework/zend-eventmanager: 2.*
- zendframework/zend-http: 2.*
- zendframework/zend-modulemanager: 2.*
- zendframework/zend-stdlib: 2.*
This package is not auto-updated.
Last update: 2024-09-14 13:43:50 UTC
README
SlmLocale 是一个用于自动检测应用程序区域设置的 Zend Framework 2 模块。它使用多种可插拔策略来搜索有效的区域设置。SlmLocale 支持默认区域设置、一组支持的区域设置和区域设置别名。
SlmLocale 支持开箱即用的几种搜索区域设置的策略。通过接口,可以创建其他策略。默认策略集合包括
- 使用域名(子域名或顶级域名)
- 使用 URI 路径的第一段
- 使用 cookie
- 使用 HTTP Accept-Language 标头
SlmLocale 还将提供一个与 ZfcUser 的可选集成,使其能够在用户“配置文件”中设置默认区域设置。
策略
策略通过事件管理器触发。这提供了让某些策略尽可能早地触发,而其他策略则尽可能晚地触发的选项。例如,您可能首先希望搜索 cookie,然后是域名,最后是 HTTP Accept-Language 标头。
在找到区域设置时也可以调用策略。这对于例如在通过 HTTP Accept-Language 标头找到区域设置时写入带有区域设置的 cookie 来说很有用。或者,如果您希望当用户表示更喜欢某个区域设置时,执行到正确域名的重定向。
检测器选项
检测器有几个选项可以调整检测机制。首先,有一个默认区域设置。当每个策略都寻找区域设置但没有找到时,将设置默认区域设置。还有一个支持的区域设置列表。您的应用程序可能不支持每个可用的区域设置,因此您可以定义一个集合,SlmLocale 尝试识别最佳匹配。别名可以将语言代码转换为完整的区域设置。例如,您可以说如果代码“en”匹配,则使用区域设置“en-US”。
安装
SlmLocale 通过 composer 提供。将 "slm/locale" 添加到您的 composer.json 列表中。在 SlmLocale 的开发过程中,您可以指定最新可用的版本
"slm/locale": "dev-master"
在 vendor/slm/locale/config 目录中,您可以找到一个 slmlocale.global.php.dist 文件。您可以将该文件复制到 config/autoload/slmlocale.global.php(注意现在要省略 .dist 扩展名)。在该文件中,您可以调整检测器中的每个选项并附加一些策略。要启用 SlmLocale,请确保将 "SlmLocale" 添加到您的 application.config.php 模块列表中。
用法
打开配置文件(在 config/autoload/slmlocale.global.php),在那里可以调整 SlmLocale 的完整行为。下面将介绍每个值。
默认区域设置
如果您删除了 //,在 'default' 行之前,您可以为应用程序设置默认区域设置
'default' => 'en-US'
支持的区域设置
如果您只想让应用程序支持指定的区域设置集合,您可以删除 //,在 'supported' 行之前。在数组中,您可以指定要支持的列表。请注意列表的顺序很重要。如果策略可以检测多个区域设置(例如,使用 HTTP Accept-Language 标头),则列表中的第一个匹配项将被选择。
'supported' => array('en-US', 'en-GB', 'en');
别名区域设置
[待定]
策略配置
[待定]
开发
SlmLocale 目前处于开发阶段,不建议在生产环境中使用 SlmLocale。SlmLocale 的新功能都是通过测试驱动开发和来自 Travis-CI 的持续集成来实现的。
如果您在 SlmLocale 中发现任何错误,请在本跟踪器中创建一个问题。目前,Detector 类已完成。提供的方法尚未全部完成。
- Http Accept-Language 策略:开发中
- Cookie 策略:尚未开始
- 域名策略:开发中
- UtiPathStrategy:尚未开始