Intl组件
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美元=语言::alpha3CodeExists(alpha3Code美元);
你可以在两个字母的alpha2和三个字母的alpha3之间转换代码:
alpha3Code美元=语言::getAlpha3Code(alpha2Code美元);alpha2Code美元=语言::getAlpha2Code(alpha3Code美元);
的脚本
类提供对可选的四字母脚本代码的访问,这些脚本代码可以根据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美元=国家::alpha3CodeExists(alpha3Code美元);
你可以在两个字母的alpha2和三个字母的alpha3之间转换代码:
alpha3Code美元=国家::getAlpha3Code(alpha2Code美元);alpha2Code美元=国家::getAlpha2Code(alpha3Code美元);
地区¶
区域设置是语言、区域和一些参数的组合,这些参数定义了用户的界面首选项。例如,“汉语”是语言和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(“欧洲/马德里”,strtotime(2019年3月31日的));// $offset = 3600抵消美元=时区::getRawOffset(“欧洲/马德里”,strtotime(2019年4月1日的));// $offset = 7200抵消美元=时区::getGmtOffset(“欧洲/马德里”,strtotime(2019年10月27日的));// $offset = 'GMT+02:00'抵消美元=时区::getGmtOffset(“欧洲/马德里”,strtotime(2019年的10月28日的));// $offset = 'GMT+01:00'
GMT偏移量的字符串表示形式可能会因区域设置的不同而不同,所以你可以将区域设置作为第三个可选参数传递:
抵消美元=时区::getGmtOffset(“欧洲/马德里”,strtotime(2019年的10月28日的),基于“增大化现实”技术的);// $offset = 'غرينتش+01:00'抵消美元=时区::getGmtOffset(“欧洲/马德里”,strtotime(2019年的10月28日的),“dz”);// $offset = 'ཇི་ཨེམ་ཏི་+01:00'
如果给定的时区ID不存在,则该方法将触发一个ob娱乐下载Symfony \组件\ Intl \ \ MissingResourceException异常
.除了捕获异常,你还可以检查给定的时区ID是否有效:
isValidTimezone美元=时区::存在(timezoneId美元);
这项工作,包括代码样本,是在一个创作共用BY-SA 3.0许可证。