Intl组件

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.1,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

Intl组件

一个PHP替换C层intl扩展还提供了访问的定位数据ICU库

谨慎

更换层地区“en”是有限的。如果你想使用其他的地方,你应该安装intl扩展代替。

另请参阅

这篇文章解释了如何使用Intl功能作为一个独立的组件在任何PHP应用程序。读了翻译篇文章,了解如何在Symfony应用程序国际化和管理用户的语言环境。欧宝娱乐app下载地址

安装

1
美元作曲家需要symfony / in欧宝娱乐app下载地址tl

或者,您可以克隆的https://github.com/欧宝娱乐app下载地址symfony/intl存储库。

请注意

如果你安装这个组件之外的Symfony应用程序,你必须要求欧宝娱乐app下载地址供应商/ autoload.php文件在你的代码,使作曲家提供的类加载机制。读这篇文章为更多的细节。

如果你安装组件通过作曲家,intl扩展的类和函数后将自动提供如果intl扩展没有加载:

当intl扩展不可用,下面的类用于取代intl类:

作曲家自动公开这些类在全局命名空间。

写作和阅读资源包

ResourceBundle类是目前不支持此组件。相反,它包含一组阅读和写作的读者和作家数组(或数组类对象)/资源包文件。下面的类是支持:

继续阅读,如果你感兴趣如何使用这些类。否则跳过本节和跳转访问ICU数据

TextBundleWriter

TextBundleWriter写一个数组或类似数组的对象一个纯文本资源包。由此产生的. txt文件可以转换为二进制文件与rBundleCompiler类:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
使用欧宝娱乐app下载地址\组件\Intl\ResourceBundle\作家\TextBundleWriter;使用欧宝娱乐app下载地址\组件\Intl\ResourceBundle\编译器\BundleCompiler;美元作家=TextBundleWriter ();美元作家- >写(的路径/ /包,“en”,(“数据”= > [“entry1”,“entry2”,/ /……)));美元编译器=BundleCompiler ();美元编译器- >编译(的路径/ /包,/道路/ /二进制/包的);

命令“genrb”必须是可用的BundleCompiler去工作。如果命令位于非标准的位置,你可以通过它的路径BundleCompiler构造函数。

PhpBundleWriter

PhpBundleWriter写一个数组或类似数组的对象。php资源包:

1 2 3 4 5 6 7 8 9 10
使用欧宝娱乐app下载地址\组件\Intl\ResourceBundle\作家\PhpBundleWriter;美元作家=PhpBundleWriter ();美元作家- >写(的路径/ /包,“en”,(“数据”= > [“entry1”,“entry2”,/ /……)));

BinaryBundleReader

BinaryBundleReader读取二进制资源包文件并返回一个数组或类似数组的对象。目前仅适用于这类intl扩展安装:

1 2 3 4 5 6
使用欧宝娱乐app下载地址\组件\Intl\ResourceBundle\读者\BinaryBundleReader;美元读者=BinaryBundleReader ();美元数据=美元读者- >读(的路径/ /包,“en”);var_dump (美元数据(“数据”][“entry1”]);

PhpBundleReader

PhpBundleReader读取资源包。php文件,并返回一个数组或类似数组的对象:

1 2 3 4 5 6
使用欧宝娱乐app下载地址\组件\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
使用欧宝娱乐app下载地址\组件\Intl\ResourceBundle\读者\BinaryBundleReader;使用欧宝娱乐app下载地址\组件\Intl\ResourceBundle\读者\BufferedBundleReader;美元读者=BufferedBundleReader (BinaryBundleReader (),10);/ /读取文件美元数据=美元读者- >读(的路径/ /包,“en”);/ /返回数据的缓冲区美元数据=美元读者- >读(的路径/ /包,“en”);/ /读取文件美元数据=美元读者- >读(的路径/ /包,“fr”);

StructuredBundleReader

StructuredBundleReader包装另一个读者,提供了一个readEntry ()方法用于读取一个条目的资源包,而不必担心是否数组键设置。如果无法解决的路径,返回:

1 2 3 4 5 6 7 8 9 10 11 12
使用欧宝娱乐app下载地址\组件\Intl\ResourceBundle\读者\BinaryBundleReader;使用欧宝娱乐app下载地址\组件\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
使用欧宝娱乐app下载地址\组件\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
使用欧宝娱乐app下载地址\组件\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
使用欧宝娱乐app下载地址\组件\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
使用欧宝娱乐app下载地址\组件\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阿富汗',…]

这是所有你需要知道的。有有趣的编码!

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。