[TOC]
# 国际化
Phalcon是用C语言编写的PHP的扩展。有一个[PECL](http://pecl.php.net/package/intl)扩展,称为`intl`的PHP应用程序提供国际化功能。从PHP 5.4 / 5.5开始,此扩展与PHP捆绑在一起。它的文档可以在官方PHP手册的页面中找到。
Phalcon不提供此功能,因为创建此类组件将复制现有代码。
在下面的示例中,我们将向您展示如何在Phalcon支持的应用程序中实现intl扩展的功能。
>[warning] 本指南不是 [intl](http://pecl.php.net/package/intl) 扩展的完整文档。 请访问该扩展程序的[文档](http://www.php.net/manual/en/book.intl.php) 以获取参考。
## 找出最佳的Locale
有几种方法可以使用intl找出最佳的可用语言环境。 其中之一是检查HTTP `Accept-Language`标头:
```php
<?php
$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
// Locale可能类似于'en_GB'或'en'
echo $locale;
```
以下方法返回标识的区域设置。它用于从Locale API获取语言,文化或区域特定的行为。
标识符的示例包括:
* en-US(英语,美国)
* ru-RU(俄罗斯,俄罗斯)
* zh-Hant-TW(中文,繁体字,台湾)
* fr-CA,fr-FR(法语分别为加拿大和法国)
## 根据区域设置格式化消息
创建本地化应用程序的一部分是生成连接的,与语言无关的消息。`MessageFormatter`允许生成这些消息。
打印基于某些区域设置格式化的数字:
```php
<?php
// Prints € 4 560
$formatter = new MessageFormatter('fr_FR', '€ {0, number, integer}');
echo $formatter->format([4560]);
// Prints USD$ 4,560.5
$formatter = new MessageFormatter('en_US', 'USD$ {0, number}');
echo $formatter->format([4560.50]);
// Prints ARS$ 1.250,25
$formatter = new MessageFormatter('es_AR', 'ARS$ {0, number}');
echo $formatter->format([1250.25]);
```
使用时间和日期模式格式化消息:
```php
<?php
// 设置参数
$time = time();
$values = [7, $time, $time];
// 打印 'At 3:50:31 PM on Apr 19, 2015, there was a disturbance on planet 7.'
$pattern = 'At {1, time} on {1, date}, there was a disturbance on planet {0, number}.';
$formatter = new MessageFormatter('en_US', $pattern);
echo $formatter->format($values);
// 打印 'À 15:53:01 le 19 avr. 2015, il y avait une perturbation sur la planète 7.'
$pattern = 'À {1, time} le {1, date}, il y avait une perturbation sur la planète {0, number}.';
$formatter = new MessageFormatter('fr_FR', $pattern);
echo $formatter->format($values);
```
## 区域敏感比较
Collator类提供字符串比较功能,支持适当的区域设置敏感排序顺序。请查看以下有关此类用法的示例:
```php
<?php
// 使用西班牙语语言环境创建collator
$collator = new Collator('es');
// 返回字符串相等,尽管强调'o'
$collator->setStrength(Collator::PRIMARY);
var_dump($collator->compare('una canción', 'una cancion'));
// 返回字符串不相等
$collator->setStrength(Collator::DEFAULT_VALUE);
var_dump($collator->compare('una canción', 'una cancion'));
```
## 音译
Transliterator提供字符串的音译:
```php
<?php
$id = 'Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();';
$transliterator = Transliterator::create($id);
$string = "garçon-étudiant-où-L'école";
echo $transliterator->transliterate($string); // garconetudiantoulecole
```
- 常规
- Welcome
- 贡献
- 生成回溯
- 测试重现
- 单元测试
- 入门
- 安装
- Web服务器设置
- WAMP
- XAMPP
- 教程
- 基础教程
- 教程:创建一个简单的REST API
- 教程:Vökuró
- 提升性能
- 教程:INVO
- 开发环境
- Phalcon Compose (Docker)
- Nanobox
- Phalcon Box (Vagrant)
- 开发工具
- Phalcon开发者工具的安装
- Phalcon开发者工具的使用
- 调试应用程序
- 核心
- MVC应用
- 微应用
- 创建命令行(CLI)应用程序
- 依赖注入与服务定位
- MVC架构
- 服务
- 使用缓存提高性能
- 读取配置
- 上下文转义
- 类加载器
- 使用命名空间
- 日志
- 队列
- 数据库
- 数据库抽象层
- Phalcon查询语言(PHQL)
- ODM(对象文档映射器)
- 使用模型
- 模型行为
- ORM缓存
- 模型事件
- 模型元数据
- 模型关系
- 模型事务
- 验证模型
- 数据库迁移
- 分页
- 前端
- Assets管理
- 闪存消息
- 表单
- 图像
- 视图助手(标签)
- 使用视图
- Volt:模板引擎
- 业务逻辑
- 访问控制列表(ACL)
- 注解解析器
- 控制器
- 调度控制器
- 事件管理器
- 过滤与清理
- 路由
- 在session中存储数据
- 生成URL和路径
- 验证
- HTTP
- Cookies管理
- 请求环境
- 返回响应
- 安全
- 加密/解密
- 安全
- 国际化
- 国际化
- 多语言支持