# 國際化(Internationalization)
Phalcon is written in C as an extension for PHP. There is a[PECL](http://pecl.php.net/package/intl)extension that offers internationalization functions to PHP applications called[intl](http://pecl.php.net/package/intl). Starting from PHP 5.4/5.5 this extension is bundled with PHP. Its documentation can be found in the pages of the official[PHP manual](http://www.php.net/manual/en/intro.intl.php).
Phalcon does not offer this functionality, since creating such a component would be replicating existing code.
In the examples below, we will show you how to implement the[intl](http://pecl.php.net/package/intl)extension’s functionality into Phalcon powered applications.
> This guide is not intended to be a complete documentation of the[intl](http://pecl.php.net/package/intl)extension. Please visit its the[documentation](http://www.php.net/manual/en/book.intl.php)of the extension for a reference.
## 匹配最佳的區域設置(Find out best available Locale)
There are several ways to find out the best available locale using[intl](http://pecl.php.net/package/intl). One of them is to check the HTTP “Accept-Language” header:
~~~
<?php
$locale = Locale::acceptFromHttp($_SERVER["HTTP_ACCEPT_LANGUAGE"]);
// Locale could be something like "en_GB" or "en"
echo $locale;
~~~
Below method returns a locale identified. It is used to get language, culture, or regionally-specific behavior from the Locale API.
Examples of identifiers include:
* en-US (English, United States)
* ru-RU (Russian, Russia)
* zh-Hant-TW (Chinese, Traditional Script, Taiwan)
* fr-CA, fr-FR (French for Canada and France respectively)
## 基于區域設置格式化信息(Formatting messages based on Locale)
Part of creating a localized application is to produce concatenated, language-neutral messages. The[MessageFormatter](http://www.php.net/manual/en/class.messageformatter.php)allows for the production of those messages.
Printing numbers formatted based on some locale:
~~~
<?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]);
~~~
Message formatting using time and date patterns:
~~~
<?php
// Setting parameters
$time = time();
$values = [7, $time, $time];
// Prints "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);
// Prints "à 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);
~~~
## 特定區域設置的字符串比較(Locale-Sensitive comparison)
The[Collator](http://www.php.net/manual/en/class.collator.php)class provides string comparison capability with support for appropriate locale-sensitive sort orderings. Check the examples below on the usage of this class:
~~~
<?php
// Create a collator using Spanish locale
$collator = new Collator("es");
// Returns that the strings are equal, in spite of the emphasis on the "o"
$collator->setStrength(Collator::PRIMARY);
var_dump($collator->compare("una canción", "una cancion"));
// Returns that the strings are not equal
$collator->setStrength(Collator::DEFAULT_VALUE);
var_dump($collator->compare("una canción", "una cancion"));
~~~
## 音譯(Transliteration)
[Transliterator](http://www.php.net/manual/en/class.transliterator.php)provides transliteration of strings:
~~~
<?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
~~~
- 簡介
- 安裝
- 安裝(installlation)
- XAMPP下的安裝
- WAMP下安裝
- Nginx安裝說明
- Apache安裝說明
- Cherokee 安裝說明
- 使用 PHP 內置 web 服務器
- Phalcon 開發工具
- Linux 系統下使用 Phalcon 開發工具
- Mac OS X 系統下使用 Phalcon 開發工具
- Windows 系統下使用 Phalcon 開發工具
- 教程
- 教程 1:讓我們通過例子來學習
- 教程 2:INVO簡介
- 教程 3: 保護INVO
- 教程4: 使用CRUD
- 教程5: 定制INVO
- 教程 6: V?kuró
- 教程 7:創建簡單的 REST API
- 組件
- 依賴注入與服務定位器
- MVC架構
- 使用控制器
- 使用模型
- 模型關系
- 事件與事件管理器
- Behaviors
- 模型元數據
- 事務管理
- 驗證數據完整性
- Workingwith Models
- Phalcon查詢語言
- 緩存對象關系映射
- 對象文檔映射 ODM
- 使用視圖
- 視圖助手
- 資源文件管理
- Volt 模版引擎
- MVC 應用
- 路由
- 調度控制器
- Micro Applications
- 使用命名空間
- 事件管理器
- Request Environmen
- 返回響應
- Cookie 管理
- 生成 URL 和 路徑
- 閃存消息
- 使用 Session 存儲數據
- 過濾與清理
- 上下文編碼
- 驗證Validation
- 表單_Forms
- 讀取配置
- 分頁 Pagination
- 使用緩存提高性能
- 安全
- 加密與解密 Encryption/Decryption
- 訪問控制列表
- 多語言支持
- 類加載器 Class Autoloader
- 日志記錄_Logging
- 注釋解析器 Annotations Parser
- 命令行應用 Command Line Applications
- Images
- 隊列 Queueing
- 數據庫抽象層
- 國際化
- 數據庫遷移
- 調試應用程序
- 單元測試
- 進階技巧與延伸閱讀
- 提高性能:下一步該做什么?
- Dependency Injection Explained
- Understanding How Phalcon Applications Work
- Api
- Abstract class Phalcon\Acl