Intl组件

ob娱乐下载Symfony 5.3支持通过JoliCode

Intl组件

控件的本地化数据ICU库

谨慎

替换层仅限于语言环境。如果您想使用其他区域设置,那么应该这样做安装intl扩展名.这两者之间不存在冲突,因为即使您使用了扩展,这个包仍然可以用于访问ICU数据。

另请参阅

本文解释了如何在任何PHP应用程序中使用Intl特性作为独立组件。读了翻译学习如何在Symfony应用程序中国际化和管理用户语言环境。ob娱乐下载

安装

1
作曲家需要symfony / inob娱乐下载tl

请注意

如果在Symfony应用程序之外安装此组件,则必须使用ob娱乐下载供应商/ autoload.php以启用Composer提供的类自动加载机制。读这篇文章为更多的细节。

访问ICU数据

该组件提供以下ICU数据:

语言及文字名称

语言类提供对所有语言名称的访问ISO 639 - 1α2列表和ISO 639 - 2 alpha 3列表:

使用ob娱乐下载Symfony \ Intl \ \组件的语言\地区::setDefault“en”);美元的语言语言::getname();// ('languageCode' => 'languageName')/ / = >[“ab”= >“阿布哈西亚语”,“王牌”= >“亚齐人”,…]美元的语言语言::getAlpha3Names();// ('languageCode' => 'languageName')/ / = >[“abk”= >“阿布哈西亚语”,“王牌”= >“亚齐人”,…]美元的语言语言::getName“fr”);/ / = >“法国”美元的语言语言::getAlpha3Name联邦铁路局的);/ / = >“法国”

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

美元的语言语言::getname“德”);/ / = >[“ab”= >“Abchasisch”,“王牌”= >“亚齐”…]美元的语言语言::getAlpha3Names“德”);/ / = > [' abk ' = > ' Abchasisch ',“王牌”= >“亚齐”…]美元的语言语言::getName“fr”“德”);/ / = > ' Franzosisch '美元的语言语言::getAlpha3Name联邦铁路局的“德”);/ / = > ' Franzosisch '

如果给定的区域设置不存在,则该方法将触发ob娱乐下载Symfony \组件\ Intl \ \ MissingResourceException异常.除了捕获异常,你还可以检查给定的语言代码是否有效:

isValidLanguage美元语言::存在languageCode美元);

或者如果你有一个alpha3语言代码,你想检查:

isValidLanguage美元语言::alpha3CodeExistsalpha3Code美元);

你可以在两个字母的alpha2和三个字母的alpha3之间转换代码:

alpha3Code美元语言::getAlpha3Codealpha2Code美元);alpha2Code美元语言::getAlpha2Codealpha3Code美元);

脚本类提供对可选的四字母脚本代码的访问,这些脚本代码可以根据Unicode ISO 15924注册表(如。汉斯zh_HANS为简体中文及常到之处zh_HANT对中国传统):

使用ob娱乐下载Symfony \ \ Intl \脚本组件\地区::setDefault“en”);美元的脚本脚本::getname();// ('scriptCode' => 'scriptName')// => ['Adlm' => 'Adlam', 'Afak' => 'Afaka',…]美元的脚本脚本::getName“汉斯”);/ / = >“简化”

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

美元的脚本脚本::getname“德”);// => ['Adlm' => 'Adlam', 'Afak' => 'Afaka',…]美元的脚本脚本::getName“汉斯”“德”);/ / = > ' Vereinfacht '

如果给定的脚本代码不存在,这些方法将触发ob娱乐下载Symfony \组件\ Intl \ \ MissingResourceException异常.除了捕获异常,你还可以检查给定的脚本代码是否有效:

isValidScript美元脚本::存在scriptCode美元);

国家的名字

国家类提供对所有国家名称的访问ISO 3166 - 1α2列表和ISO 3166 - 1 alpha 3官方认可的国家和地区名单:

使用ob娱乐下载Symfony \组件\ Intl \国家\地区::setDefault“en”);美元的国家国家::getname();// ('alpha2Code' => 'countryName')/ / = >[“对焦”= >“阿富汗”、“斧头”= >“阿兰群岛”,…]美元的国家国家::getAlpha3Names();// ('alpha3Code' => 'countryName')/ / = >[“二自由度陀螺仪”= >“阿富汗”、“阿拉巴马”= >“阿兰群岛”,…]美元的国家国家::getName“GB”);// => 'United Kingdom'美元的国家国家::getAlpha3Name“也”);/ / = >“挪威”

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

美元的国家国家::getname“德”);/ / = >[“对焦”= >“阿富汗”、“如”= >“Agypten”,…]美元的国家国家::getAlpha3Names“德”);/ / = >[“二自由度陀螺仪”= >“阿富汗”、“EGY”= >“Agypten”…]美元的国家国家::getName“GB”“德”);// => 'Vereinigtes Königreich'美元的国家国家::getAlpha3Name“GBR”“德”);// => 'Vereinigtes Königreich'

如果给定的国家代码不存在,则该方法将触发ob娱乐下载Symfony \组件\ Intl \ \ MissingResourceException异常.除了捕获异常,你还可以检查给定的国家代码是否有效:

isValidCountry美元国家::存在alpha2Code美元);

或者如果你有一个alpha3国家代码,你想要检查:

isValidCountry美元国家::alpha3CodeExistsalpha3Code美元);

你可以在两个字母的alpha2和三个字母的alpha3之间转换代码:

alpha3Code美元国家::getAlpha3Codealpha2Code美元);alpha2Code美元国家::getAlpha2Codealpha3Code美元);

地区

区域设置是语言、区域和一些参数的组合,这些参数定义了用户的界面首选项。例如,“汉语”是语言和zh_Hans_MO是“中文”(语言)+“简体”(文字)+“中国澳门特别行政区”(地区)的语言环境。的地区类提供对所有区域设置名称的访问:

使用ob娱乐下载Symfony \组件\ Intl \场所\地区::setDefault“en”);美元的地区地区::getname();// ('localeCode' => 'localeName')/ / = >[“对焦”= >“南非荷兰语”,“af_NA”= >“南非荷兰语(纳米比亚)”,…]美元的语言环境地区::getName“zh_Hans_MO”);// => 'Chinese (Simplified, Macau SAR China)'

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

美元的地区地区::getname“德”);/ / = >[“对焦”= >“南非荷兰语”,“af_NA”= >“南非荷兰语(纳米比亚)”,…]美元的语言环境地区::getName“zh_Hans_MO”“德”);// => 'Chinesisch (Vereinfacht, sonderverwaltung region Macau)'

如果给定的区域代码不存在,则该方法将触发ob娱乐下载Symfony \组件\ Intl \ \ MissingResourceException异常.除了捕获异常,你还可以检查给定的区域代码是否有效:

isValidLocale美元地区::存在localeCode美元);

货币

货币类提供了对所有货币名称以及它们的一些信息(符号、分数位数等)的访问:

使用ob娱乐下载Symfony \组件\ Intl \货币\地区::setDefault“en”);美元货币货币::getname();// ('currencyCode' => 'currencyName')/ / = >[“AFN”= >“阿富汗阿富汗的”,“所有”= >“阿尔巴尼亚求偶场”,…]美元汇率货币::getName印度卢比的);// => '印度卢比'美元的符号货币::getSymbol印度卢比的);/ / = > '₹'

fraction digits方法返回格式化使用此货币的数字时要显示的十进制数字数。根据货币的不同,如果这个数字用于现金交易或其他场景(例如会计),这个值可能会改变:

//印度卢比对两者的定义是相同的fractionDigits美元货币::getFractionDigits印度卢比的);/ /返回:2cashFractionDigits美元货币::getCashFractionDigits印度卢比的);/ /返回:2//瑞典克朗定义了不同的价值fractionDigits美元货币::getFractionDigits“克朗”);/ /返回:2cashFractionDigits美元货币::getCashFractionDigits“克朗”);/ /返回:0

5.3新版功能:getCashFractionDigits ()Symfony 5.3中介绍了该方法。ob娱乐下载

有些货币需要将数字四舍五入到某些价值的最接近的增量(例如5美分)。如果数字被格式化为现金交易或其他场景(例如会计),则增量可能不同:

//印度卢比对两者的定义是相同的roundingIncrement美元货币::getRoundingIncrement印度卢比的);/ /返回:0cashRoundingIncrement美元货币::getCashRoundingIncrement印度卢比的);/ /返回:0//加拿大元定义不同的值,因为它们已经被消除了//较小的硬币(1分和2分)和现金价格必须四舍五入// 5美分(例如,如果价格是7.42,你需要支付7.40;如果价格是7.48,你付7.50)roundingIncrement美元货币::getRoundingIncrement“CAD”);/ /返回:0cashRoundingIncrement美元货币::getCashRoundingIncrement“CAD”);/ /返回:5

5.3新版功能:getCashRoundingIncrement ()Symfony 5.3中介绍了该方法。ob娱乐下载

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

美元货币货币::getname“德”);/ / = > [' AFN ' = > ' Afghanischer阿富汗','出路' = > ' Agyptisches刘德',…]美元汇率货币::getName印度卢比的“德”);// => 'Indische Rupie'

如果给定的货币代码不存在,则该方法将触发ob娱乐下载Symfony \组件\ Intl \ \ MissingResourceException异常.除了捕获异常,你还可以检查给定的货币代码是否有效:

isValidCurrency美元货币::存在currencyCode美元);

时区

时区类提供了几个与时区相关的实用程序。首先,你可以获得所有语言中所有时区的名称和值:

使用ob娱乐下载Symfony组件\ \ Intl \时区\地区::setDefault“en”);美元的时区时区::getname();// ('timezoneID' => 'timezoneValue')// => ['America/Eirunepe' => 'Acre Time (Eirunepe)', 'America/Rio_Branco' => 'Acre Time(里约热内卢Branco)',…]美元的时区时区::getName“非洲/内罗毕”);// => '东非时间(内罗毕)'

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

美元的时区时区::getname“德”);// => ['America/Eirunepe' => 'Acre-Zeit (Eirunepe)', 'America/Rio_Branco' => 'Acre-Zeit(里约热内卢Branco)',…]美元的时区时区::getName“非洲/内罗毕”“德”);// => 'Ostafrikanische Zeit(内罗毕)'

您还可以获得给定国家中存在的所有时区。的forCountryCode ()方法返回一个或多个时区id,您可以使用getName ()方法:早些时候

//与语言代码不同,国家代码总是大写的(CL =智利)美元的时区时区::forCountryCode“氯”);// => ['America/Punta_Arenas', 'America/Santiago', 'Pacific/Easter']

控件也可以进行反向查找getCountryCode ()方法,返回给定时区ID所属国家的代码:

countryCode美元时区::getCountryCode美国/温哥华的);// => $countryCode = 'CA' (CA = Canada)

UTC / GMT时间偏移量提供的所有时区getRawOffset ()(返回一个以秒为单位表示偏移量的整数)和getGmtOffset ()(返回偏移量的字符串表示形式以显示给用户):

抵消美元时区::getRawOffset“等/ UTC”);// $offset = 0抵消美元时区::getRawOffset“美国/ Buenos_Aires”);// $offset = -10800抵消美元时区::getRawOffset“亚洲/加德满都”);// $offset = 20700抵消美元时区::getGmtOffset“等/ UTC”);// $offset = 'GMT+00:00'抵消美元时区::getGmtOffset“美国/ Buenos_Aires”);// $offset = 'GMT-03:00'抵消美元时区::getGmtOffset“亚洲/加德满都”);// $offset = 'GMT+05:45'

时区偏移量可能随时间变化,因为夏令时练习。默认情况下,这些方法使用时间()PHP函数来获取当前时区的偏移量,但是你可以传递一个时间戳作为它们的第二个参数来获取任意给定时间点的偏移量:

// 2019年,西班牙马德里的夏令时期为3月31日至10月27日抵消美元时区::getRawOffset“欧洲/马德里”strtotime2019年3月31日的));// $offset = 3600抵消美元时区::getRawOffset“欧洲/马德里”strtotime2019年4月1日的));// $offset = 7200抵消美元时区::getGmtOffset“欧洲/马德里”strtotime2019年10月27日的));// $offset = 'GMT+02:00'抵消美元时区::getGmtOffset“欧洲/马德里”strtotime2019年的10月28日的));// $offset = 'GMT+01:00'

GMT偏移量的字符串表示形式可能会因区域设置的不同而不同,所以你可以将区域设置作为第三个可选参数传递:

抵消美元时区::getGmtOffset“欧洲/马德里”strtotime2019年的10月28日的),基于“增大化现实”技术的);// $offset = 'غرينتش+01:00'抵消美元时区::getGmtOffset“欧洲/马德里”strtotime2019年的10月28日的),“dz”);// $offset = 'ཇི་ཨེམ་ཏི་+01:00'

如果给定的时区ID不存在,则该方法将触发一个ob娱乐下载Symfony \组件\ Intl \ \ MissingResourceException异常.除了捕获异常,你还可以检查给定的时区ID是否有效:

isValidTimezone美元时区::存在timezoneId美元);

这项工作,包括代码样本,是在一个创作共用BY-SA 3.0许可证。