Intl组件
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.3(当前的稳定版本)。
Intl组件
谨慎
更换层地区“en”是有限的。如果你想使用其他的地方,你应该安装intl扩展代替。
另请参阅
这篇文章解释了如何使用Intl功能作为一个独立的组件在任何PHP应用程序。读了翻译篇文章,了解如何在Symfony应用程序国际化和管理用户的语言环境。ob娱乐下载
安装
1
美元作曲家需要symfony / inob娱乐下载tl: ^ 3.4
请注意
如果你安装这个组件之外的Symfony应用程序,你必须要求ob娱乐下载供应商/ autoload.php
文件在你的代码,使作曲家提供的类加载机制。读这篇文章为更多的细节。
如果你安装组件通过作曲家,intl扩展的类和函数后将自动提供如果intl扩展没有加载:
- 排序器
- IntlDateFormatter
- 语言环境
- NumberFormatter
- intl_error_name
- intl_is_failure
- intl_get_error_code
- intl_get_error_message
当intl扩展不可用,下面的类用于取代intl类:
作曲家自动公开这些类在全局命名空间。
如果你不使用,但作曲家ob娱乐下载Symfony类加载器组件,你需要让他们通过添加以下行手动自动加载代码:
1 2 3 4 5
如果(! function_exists (“intl_is_failure”)){需要' /道路/ / Icu /资源/存根/”显然也;美元加载程序- >registerPrefixFallback (' /道路/ / Icu /资源/存根的);}
写作和阅读资源包
的ResourceBundle类是目前不支持此组件。相反,它包含一组阅读和写作的读者和作家数组(或数组类对象)/资源包文件。下面的类是支持:
- TextBundleWriter
- PhpBundleWriter
- BinaryBundleReader
- PhpBundleReader
- BufferedBundleReader
- StructuredBundleReader
继续阅读,如果你感兴趣如何使用这些类。否则跳过本节和跳转访问ICU数据。
TextBundleWriter
的TextBundleWriter写一个数组或类似数组的对象一个纯文本资源包。由此产生的. txt
文件可以转换为二进制r
文件与BundleCompiler类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载\组件\Intl\ResourceBundle\编译器\BundleCompiler;使用ob娱乐下载\组件\Intl\ResourceBundle\作家\TextBundleWriter;美元作家=新TextBundleWriter ();美元作家- >写(的路径/ /包,“en”,(“数据”= > [“entry1”,“entry2”,/ /……)));美元编译器=新BundleCompiler ();美元编译器- >编译(的路径/ /包,/道路/ /二进制/包的);
命令genrb
必须是可用的吗BundleCompiler去工作。如果命令位于非标准的位置,你可以通过它的路径BundleCompiler构造函数。
PhpBundleWriter
的PhpBundleWriter写或类似数组的对象数组. php
资源包:
1 2 3 4 5 6 7 8 9 10
使用ob娱乐下载\组件\Intl\ResourceBundle\作家\PhpBundleWriter;美元作家=新PhpBundleWriter ();美元作家- >写(的路径/ /包,“en”,(“数据”= > [“entry1”,“entry2”,/ /……)));
BinaryBundleReader
的BinaryBundleReader读取二进制资源包文件并返回一个数组或类似数组的对象。目前仅适用于这类intl扩展安装:
1 2 3 4 5 6
使用ob娱乐下载\组件\Intl\ResourceBundle\读者\BinaryBundleReader;美元读者=新BinaryBundleReader ();美元数据=美元读者- >读(的路径/ /包,“en”);var_dump (美元数据(“数据”][“entry1”]);
PhpBundleReader
的PhpBundleReader读取资源包的. php
文件,并返回一个数组或类似数组的对象:
1 2 3 4 5 6
使用ob娱乐下载\组件\Intl\ResourceBundle\读者\PhpBundleReader;美元读者=新PhpBundleReader ();美元数据=美元读者- >读(的路径/ /包,“en”);var_dump (美元数据(“数据”][“entry1”]);
BufferedBundleReader
的BufferedBundleReader包装另一个读者,但保持过去N读入缓冲区,其中N是一个缓冲区大小传递到构造函数:
1 2 3 4 5 6 7 8 9 10 11 12 13
使用ob娱乐下载\组件\Intl\ResourceBundle\读者\BinaryBundleReader;使用ob娱乐下载\组件\Intl\ResourceBundle\读者\BufferedBundleReader;美元读者=新BufferedBundleReader (新BinaryBundleReader (),10);/ /读取文件美元数据=美元读者- >读(的路径/ /包,“en”);/ /返回数据的缓冲区美元数据=美元读者- >读(的路径/ /包,“en”);/ /读取文件美元数据=美元读者- >读(的路径/ /包,“fr”);
StructuredBundleReader
的StructuredBundleReader包装另一个读者,提供了一个readEntry ()方法用于读取一个条目的资源包,而不必担心是否数组键设置。如果无法解决的路径,零
返回:
1 2 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载\组件\Intl\ResourceBundle\读者\BinaryBundleReader;使用ob娱乐下载\组件\Intl\ResourceBundle\读者\StructuredBundleReader;美元读者=新StructuredBundleReader (新BinaryBundleReader ());美元数据=美元读者- >读(的路径/ /包,“en”);/ /产生一个错误如果键“数据”是不存在的var_dump (美元数据(“数据”][“entry1”]);/ /返回null如果键“数据”是不存在的var_dump (美元读者- >readEntry (的路径/ /包,“en”,(“数据”,“entry1”)));
此外,readEntry ()方法解决后备区域。例如,回退地区“en_GB”是“en”。为单值条目(字符串、数字等),入口会读回退场所如果不能更具体的语言环境中。对于多值条目(数组),更具体的值和回退场所将被合并。为了抑制这种行为,最后一个参数美元的回退
可以设置为假
:
1 2 3 4 5 6
var_dump (美元读者- >readEntry (的路径/ /包,“en”,(“数据”,“entry1”),假));
访问ICU数据
加护病房数据位于几个“资源包”。你可以通过静态访问PHP包装这些包Intl类。目前,支持以下数据:
语言和脚本的名称
语言和脚本名称的翻译中可以找到语言包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用ob娱乐下载\组件\Intl\Intl;\地区::setDefault (“en”);美元语言= Intl::getLanguageBundle ()- >getLanguageNames ();/ / = > [“ab”= >“阿布哈西亚语”,…]美元语言= Intl::getLanguageBundle ()- >getLanguageName (“德”);/ / = >“德国”美元语言= Intl::getLanguageBundle ()- >getLanguageName (“德”,“在”);/ / = >德国奥地利的美元脚本= Intl::getLanguageBundle ()- >getScriptNames ();/ / = >[“阿拉伯”= >“阿拉伯语”,…]美元脚本= Intl::getLanguageBundle ()- >getScriptName (“汉斯”);/ / = >“简化”
所有方法接受翻译语言环境作为过去,可选参数,默认为当前默认语言环境:
1 2
美元语言= Intl::getLanguageBundle ()- >getLanguageNames (“德”);/ / = > [“ab”= >“Abchasisch”…]
国家的名字
国家名称的翻译中可以找到该地区包:
1 2 3 4 5 6 7 8 9
使用ob娱乐下载\组件\Intl\Intl;\地区::setDefault (“en”);美元国家= Intl::getRegionBundle ()- >getCountryNames ();/ / = >[“对焦”= >“阿富汗”…]美元国家= Intl::getRegionBundle ()- >getCountryName (“GB”);/ / = >“联合王国”
所有方法接受翻译语言环境作为过去,可选参数,默认为当前默认语言环境:
1 2
美元国家= Intl::getRegionBundle ()- >getCountryNames (“德”);/ / = >[“对焦”= >“阿富汗”…]
地区
地区名称的翻译中可以找到语言包:
1 2 3 4 5 6 7 8 9
使用ob娱乐下载\组件\Intl\Intl;\地区::setDefault (“en”);美元地区= Intl::getLocaleBundle ()- >getLocaleNames ();/ / = >[“对焦”= >“南非荷兰语”,…]美元语言环境= Intl::getLocaleBundle ()- >getLocaleName (“zh_Hans_MO”);/ / = > '中文(简体,中国澳门特别行政区)”
所有方法接受翻译语言环境作为过去,可选参数,默认为当前默认语言环境:
1 2
美元地区= Intl::getLocaleBundle ()- >getLocaleNames (“德”);/ / = >[“对焦”= >“南非荷兰语”,…]
货币
货币名称的翻译和其他货币汇率相关的信息可以发现包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用ob娱乐下载\组件\Intl\Intl;\地区::setDefault (“en”);美元货币= Intl::getCurrencyBundle ()- >getCurrencyNames ();/ / = > [' AFN ' = > '阿富汗阿富汗,…]美元货币= Intl::getCurrencyBundle ()- >getCurrencyName (印度卢比的);/ / = > '印度卢比美元象征= Intl::getCurrencyBundle ()- >getCurrencySymbol (印度卢比的);/ / = > '₹'美元fractionDigits= Intl::getCurrencyBundle ()- >getFractionDigits (印度卢比的);/ / = > 2美元roundingIncrement= Intl::getCurrencyBundle ()- >getRoundingIncrement (印度卢比的);/ / = > 0
(除了所有方法getFractionDigits ()和getRoundingIncrement ())接受翻译语言环境作为最后一个可选参数,默认为当前默认语言环境:
1 2
美元货币= Intl::getCurrencyBundle ()- >getCurrencyNames (“德”);/ / = > [' AFN ' = > ' Afghanische阿富汗',…]
这是所有你需要知道的。有有趣的编码!