企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 国际化(Internationalization) # 国际化(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: ``` <pre class="calibre14">``` <?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 theproduction of those messages. Printing numbers formatted based on some locale: ``` <pre class="calibre14">``` <?php // Prints 4 560 $formatter = new MessageFormatter("fr_FR", " {0, number, integer}"); echo $formatter->format(array(4560)); // Prints USD$ 4,560.5 $formatter = new MessageFormatter("en_US", "USD$ {0, number}"); echo $formatter->format(array(4560.50)); // Prints ARS$ 1.250,25 $formatter = new MessageFormatter("es_AR", "ARS$ {0, number}"); echo $formatter->format(array(1250.25)); ``` ``` Message formatting using time and date patterns: ``` <pre class="calibre14">``` <?php // Setting parameters $time = time(); $values = array(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 theexamples below on the usage of this class: ``` <pre class="calibre14">``` <?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: ``` <pre class="calibre14">``` <?php $id = "Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();"; $transliterator = Transliterator::create($id); $string = "garon-étudiant-où-L'école"; echo $transliterator->transliterate($string); // garconetudiantoulecole ``` ``` | - [索引](# "总目录") - [下一页](# "数据库迁移(Database Migrations)") | - [上一页](# "数据库抽象层(Database Abstraction Layer)") |