Intl组件

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.0,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

Intl组件

一个PHP替换层的Cintl扩展的本地化数据的访问ICU库

谨慎

替换层仅限于区域设置“en”。如果您想使用其他区域设置,您应该这样做安装intl扩展代替。

安装

您可以通过两种不同的方式安装组件:

如果您通过Composer安装组件,如果intl扩展未加载,则会自动提供以下intl扩展的类和函数:

当intl扩展不可用时,使用以下类替换intl类:

Composer自动在全局名称空间中公开这些类。

如果你不使用Composer,但是ob娱乐下载Symfony ClassLoader组件,你需要通过在自动加载代码中添加以下行来手动公开它们:

1 2 3 4 5
如果(!function_exists (“intl_is_failure”)) {需要' /道路/ / Icu /资源/存根/”显然也加载程序->registerPrefixFallback (' /道路/ / Icu /资源/存根的);}

读写资源包

ResourceBundle类当前不受此组件支持。相反,它包含一组读取器和写入器,用于从/到资源包文件读取和写入数组(或类似数组的对象)。支持以下类:

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

TextBundleWriter

TextBundleWriter将数组或类数组对象写入纯文本资源包。生成的.txt文件可以转换为二进制的.res文件BundleCompiler类:

12 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载组件IntlResourceBundle作家TextBundleWriter使用ob娱乐下载组件IntlResourceBundle编译器BundleCompiler作家TextBundleWriter ();作家->写(的路径/ /包“en”数组“数据”= >数组“entry1”“entry2”/ /……)));编译器BundleCompiler ();编译器->编译(的路径/ /包/道路/ /二进制/包的);

命令“genrb”必须可用于BundleCompiler去工作。如果命令位于非标准位置,则可以将其路径传递给BundleCompiler构造函数。

PhpBundleWriter

PhpBundleWriter将数组或类数组对象写入.php资源包:

1 2 3 4 5 6 7 8 9 10
使用ob娱乐下载组件IntlResourceBundle作家PhpBundleWriter作家PhpBundleWriter ();作家->写(的路径/ /包“en”数组“数据”= >数组“entry1”“entry2”/ /……)));

BinaryBundleReader

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

1 2 3 4 5 6
使用ob娱乐下载组件IntlResourceBundle读者BinaryBundleReader读者BinaryBundleReader ();数据读者->读(的路径/ /包“en”);var_dump (数据“数据”] [“entry1”]);

PhpBundleReader

PhpBundleReader从.php文件中读取资源包,并返回一个数组或类数组对象:

1 2 3 4 5 6
使用ob娱乐下载组件IntlResourceBundle读者PhpBundleReader读者PhpBundleReader ();数据读者->读(的路径/ /包“en”);var_dump (数据“数据”] [“entry1”]);

BufferedBundleReader

BufferedBundleReader包装另一个读取器,但将最后N个读取保存在缓冲区中,其中N是传递给构造函数的缓冲区大小:

12 3 4 5 6 7 8 9 10 11 12 13
使用ob娱乐下载组件IntlResourceBundle读者BinaryBundleReader使用ob娱乐下载组件IntlResourceBundle读者BufferedBundleReader读者BufferedBundleReader (BinaryBundleReader (),10);//实际读取文件数据读者->读(的路径/ /包“en”);//从缓冲区返回数据数据读者->读(的路径/ /包“en”);//实际读取文件数据读者->读(的路径/ /包“fr”);

StructuredBundleReader

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

12 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载组件IntlResourceBundle读者BinaryBundleReader使用ob娱乐下载组件IntlResourceBundle读者StructuredBundleReader读者StructuredBundleReader (BinaryBundleReader ());数据读者->读(的路径/ /包“en”);//如果键"Data"不存在,则产生错误var_dump (数据“数据”] [“entry1”]);//如果键"Data"不存在则返回nullvar_dump (读者->readEntry (的路径/ /包“en”数组“数据”“entry1”)));

此外,readEntry ()方法解析回退区域设置。例如,“en_GB”的回退区域设置为“en”。对于单值条目(字符串、数字等),如果在更特定的区域设置中找不到该条目,则将从备用区域设置中读取。对于多值条目(数组),将合并更具体的区域设置和备用区域设置的值。为了抑制这种行为,最后一个参数美元的回退可以设置为

1 2 3 4 5 6
var_dump (读者->readEntry (的路径/ /包“en”数组“数据”“entry1”),));

访问ICU数据

ICU数据位于几个“资源包”中。您可以通过静态方法访问这些包的PHP包装器Intl类。目前支持的数据如下:

语言和脚本名称

语言和脚本名称的翻译可以在语言包中找到:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用ob娱乐下载组件IntlIntl;\地区::setDefault (“en”);语言= Intl::getLanguageBundle ()->getLanguageNames ();// => array('ab' => '阿布哈兹',…)语言= Intl::getLanguageBundle ()->getLanguageName (“德”);// => '德语'语言= Intl::getLanguageBundle ()->getLanguageName (“德”“在”);// => '奥地利德语'脚本= Intl::getLanguageBundle ()->getScriptNames ();// => array('阿拉伯' => '阿拉伯',…)脚本= Intl::getLanguageBundle ()->getScriptName (“汉斯”);// => '简化'

所有方法都接受翻译语言环境作为最后一个可选参数,默认为当前默认语言环境:

1 2
语言= Intl::getLanguageBundle ()->getLanguageNames (“德”);// => array('ab' => 'Abchasisch',…)

国家的名字

国家名称的翻译可以在region包中找到:

1 2 3 4 5 6 7 8 9
使用ob娱乐下载组件IntlIntl;\地区::setDefault (“en”);国家= Intl::getRegionBundle ()->getCountryNames ();// => array('AF' => '阿富汗',…)国家= Intl::getRegionBundle ()->getCountryName (“GB”);// => '英国'

所有方法都接受翻译语言环境作为最后一个可选参数,默认为当前默认语言环境:

1 2
国家= Intl::getRegionBundle ()->getCountryNames (“德”);// => array('AF' => '阿富汗',…)

地区

语言环境名称的翻译可以在locale包中找到:

1 2 3 4 5 6 7 8 9
使用ob娱乐下载组件IntlIntl;\地区::setDefault (“en”);地区= Intl::getLocaleBundle ()->getLocaleNames ();// => array('af' => 'Afrikaans',…)语言环境= Intl::getLocaleBundle ()->getLocaleName (“zh_Hans_MO”);// => '中文(简体,中国澳门特区)'

所有方法都接受翻译语言环境作为最后一个可选参数,默认为当前默认语言环境:

1 2
地区= Intl::getLocaleBundle ()->getLocaleNames (“德”);// => array('af' => 'Afrikaans',…)

货币

货币名称和其他货币相关信息的翻译可以在货币包中找到:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用ob娱乐下载组件IntlIntl;\地区::setDefault (“en”);货币= Intl::getCurrencyBundle ()->getCurrencyNames ();// => array('AFN' => '阿富汗',…)货币= Intl::getCurrencyBundle ()->getCurrencyName (印度卢比的);// => '印度卢比'象征= Intl::getCurrencyBundle ()->getCurrencySymbol (印度卢比的);// => ' 'fractionDigits= Intl::getCurrencyBundle ()->getFractionDigits (印度卢比的);// =>roundingIncrement= Intl::getCurrencyBundle ()->getRoundingIncrement (印度卢比的);// => 0

所有方法(除了getFractionDigits ()而且getRoundingIncrement ())接受翻译语言环境作为最后一个可选参数,默认为当前默认语言环境:

1 2
货币= Intl::getCurrencyBundle ()->getCurrencyNames (“德”);// => array('AFN' => 'Afghanische Afghani',…)

这就是你现在需要知道的。祝你编码愉快!

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。