Intl组件
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.2,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
Intl组件
谨慎
替换层被限制在在
语言环境。如果您想使用其他区域设置,您应该这样做安装intl扩展.这两者之间没有冲突,因为即使使用扩展,这个包仍然可以用于访问ICU数据。
另请参阅
本文解释了如何在任何PHP应用程序中将Intl特性作为独立组件使用。读了翻译文章,以了解如何在Symfony应用程序中国际化和管理用户语言环境。ob娱乐下载
安装
1
$作曲家需要symfony/intlob娱乐下载
请注意
如果在Symfony应用程序外部安装此组件,则必须要求ob娱乐下载供应商/ autoload.php
文件,以启用Composer提供的类自动加载机制。读这篇文章欲知详情。
如果您通过Composer安装组件,如果intl扩展未加载,则会自动提供以下intl扩展的类和函数:
- 排序器
- IntlDateFormatter
- 语言环境
- NumberFormatter
- intl_error_name
- intl_is_failure
- intl_get_error_code
- intl_get_error_message
当intl扩展不可用时,使用以下类替换intl类:
Composer自动在全局名称空间中公开这些类。
访问ICU数据
该组件提供以下ICU数据:
语言和脚本名称
的语言
类提供了对所有语言名称的访问ISO 639-1 alpha-2列表和ISO 639-2 alpha-3列表:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
使用ob娱乐下载\组件\Intl\语言;\地区::setDefault (“en”);$语言=语言::getname ();// ('languageCode' => 'languageName')/ / = >[“ab”= >“阿布哈西亚语”,“王牌”= >“亚齐人”,…]$语言=语言::getAlpha3Names ();// ('languageCode' => 'languageName')/ / = >[“abk”= >“阿布哈西亚语”,“王牌”= >“亚齐人”,…]$语言=语言::getName (“fr”);// => 'French'$语言=语言::getAlpha3Name (联邦铁路局的);// => 'French'
所有方法都接受翻译语言环境作为最后一个可选参数,默认为当前默认语言环境:
1 2 3 4 5 6 7 8 9 10 11
$语言=语言::getname (“德”);/ / = >[“ab”= >“Abchasisch”,“王牌”= >“亚齐”…]$语言=语言::getAlpha3Names (“德”);/ / = > [' abk ' = > ' Abchasisch ',“王牌”= >“亚齐”…]$语言=语言::getName (“fr”,“德”);// => 'Französisch'$语言=语言::getAlpha3Name (联邦铁路局的,“德”);// => 'Französisch'
如果给定的区域不存在,这些方法将触发MissingResourceException.除了捕获异常,你还可以检查给定的语言代码是否有效:
1
$isValidLanguage=语言::存在($languageCode);
或者如果你有一个alpha3语言代码,你想检查:
1
$isValidLanguage=语言::alpha3CodeExists ($alpha3Code);
你可以在两个字母的alpha2和三个字母的alpha3代码之间转换代码:
1 2 3
$alpha3Code=语言::getAlpha3Code ($alpha2Code);$alpha2Code=语言::getAlpha2Code ($alpha3Code);
的脚本
类提供对可选的四字母脚本代码的访问,这些脚本代码可以按照Unicode ISO 15924注册表(如。汉斯
在zh_HANS
简体中文及常到之处
在zh_HANT
繁体中文):
1 2 3 4 5 6 7 8 9 10
使用ob娱乐下载\组件\Intl\脚本;\地区::setDefault (“en”);$脚本=脚本::getname ();// ('scriptCode' => 'scriptName')// => ['Adlm' => 'Adlam', 'Afak' => 'Afaka',…]$脚本=脚本::getName (“汉斯”);// => '简化'
所有方法都接受翻译语言环境作为最后一个可选参数,默认为当前默认语言环境:
1 2 3 4 5
$脚本=脚本::getname (“德”);// => ['Adlm' => 'Adlam', 'Afak' => 'Afaka',…]$脚本=脚本::getName (“汉斯”,“德”);// => 'Vereinfacht'
如果给定的脚本代码不存在,这些方法将触发MissingResourceException.除了捕获异常,你还可以检查给定的脚本代码是否有效:
1
$isValidScript=脚本::存在($scriptCode);
国家的名字
的国家
类提供对所有国家名称的访问ISO 3166-1 alpha-2列表和ISO 3166-1 alpha-3官方承认的国家和地区名单:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
使用ob娱乐下载\组件\Intl\国家;\地区::setDefault (“en”);$国家=国家::getname ();// ('alpha2Code' => 'countryName')/ / = >[“对焦”= >“阿富汗”、“斧头”= >“阿兰群岛”,…]$国家=国家::getAlpha3Names ();// ('alpha3Code' => 'countryName')/ / = >[“二自由度陀螺仪”= >“阿富汗”、“阿拉巴马”= >“阿兰群岛”,…]$国家=国家::getName (“GB”);// => '英国'$国家=国家::getAlpha3Name (“也”);// => '挪威'
所有方法都接受翻译语言环境作为最后一个可选参数,默认为当前默认语言环境:
1 2 3 4 5 6 7 8 9 10 11
$国家=国家::getname (“德”);/ / = >[“对焦”= >“阿富汗”、“如”= >“Agypten”,…]$国家=国家::getAlpha3Names (“德”);/ / = >[“二自由度陀螺仪”= >“阿富汗”、“EGY”= >“Agypten”…]$国家=国家::getName (“GB”,“德”);// => 'Vereinigtes Königreich'$国家=国家::getAlpha3Name (“GBR”,“德”);// => 'Vereinigtes Königreich'
如果给定的国家代码不存在,这些方法将触发MissingResourceException.除了捕获异常,你还可以检查给定的国家代码是否有效:
1
$isValidCountry=国家::存在($alpha2Code);
或者如果你有一个alpha3的国家代码,你想检查:
1
$isValidCountry=国家::alpha3CodeExists ($alpha3Code);
你可以在两个字母的alpha2和三个字母的alpha3代码之间转换代码:
1 2 3
$alpha3Code=国家::getAlpha3Code ($alpha2Code);$alpha2Code=国家::getAlpha2Code ($alpha3Code);
地区
区域设置是一种语言、一个区域和一些定义用户界面首选项的参数的组合。例如,“汉语”是语言和zh_Hans_MO
为“中文”(语言)+“简体”(文字)+“中国澳门特别行政区”(地区)的地区。的地区
类提供对所有地区名称的访问:
1 2 3 4 5 6 7 8 9 10
使用ob娱乐下载\组件\Intl\地区;\地区::setDefault (“en”);$地区=地区::getname ();// ('localeCode' => 'localeName')/ / = >[“对焦”= >“南非荷兰语”,“af_NA”= >“南非荷兰语(纳米比亚)”,…]$语言环境=地区::getName (“zh_Hans_MO”);// => '中文(简体,中国澳门特区)'
所有方法都接受翻译语言环境作为最后一个可选参数,默认为当前默认语言环境:
1 2 3 4 5
$地区=地区::getname (“德”);/ / = >[“对焦”= >“南非荷兰语”,“af_NA”= >“南非荷兰语(纳米比亚)”,…]$语言环境=地区::getName (“zh_Hans_MO”,“德”);// => 'Chinesisch (Vereinfacht, Sonderverwaltungsregion Macau)'
如果给定的区域设置代码不存在,这些方法将触发MissingResourceException.除了捕获异常,你还可以检查给定的区域代码是否有效:
1
$isValidLocale=地区::存在($localeCode);
货币
的货币
类提供了对所有货币的名称以及它们的一些信息(符号、分数数字等)的访问:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用ob娱乐下载\组件\Intl\货币;\地区::setDefault (“en”);$货币=货币::getname ();// ('currencyCode' => 'currencyName')/ / = >[“AFN”= >“阿富汗阿富汗的”,“所有”= >“阿尔巴尼亚求偶场”,…]$货币=货币::getName (印度卢比的);// => '印度卢比'$象征=货币::getSymbol (印度卢比的);// => ' '$fractionDigits=货币::getFractionDigits (印度卢比的);// =>$roundingIncrement=货币::getRoundingIncrement (印度卢比的);// => 0
所有方法(除了getFractionDigits ()
而且getRoundingIncrement ()
)接受翻译语言环境作为最后一个可选参数,默认为当前默认语言环境:
1 2 3 4 5
$货币=货币::getname (“德”);/ / = > [' AFN ' = > ' Afghanischer阿富汗','出路' = > ' Agyptisches刘德',…]$货币=货币::getName (印度卢比的,“德”);// => 'Indische Rupie'
如果给定的货币代码不存在,这些方法将触发MissingResourceException.除了捕获异常,你还可以检查给定的货币代码是否有效:
1
$isValidCurrency=货币::存在($currencyCode);
时区
的时区
类提供了几个与时区相关的实用程序。首先,您可以获得所有语言的所有时区的名称和值:
1 2 3 4 5 6 7 8 9 10
使用ob娱乐下载\组件\Intl\时区;\地区::setDefault (“en”);$时区=时区::getname ();// ('timezoneID' => 'timezoneValue')// => ['America/Eirunepe' => '英亩时间(Eirunepe)', 'America/Rio_Branco' => '英亩时间(里约热内卢Branco)',…]$时区=时区::getName (“非洲/内罗毕”);// => '东非时间(内罗毕)'
所有方法都接受翻译语言环境作为最后一个可选参数,默认为当前默认语言环境:
1 2 3 4 5
$时区=时区::getname (“德”);// => ['America/Eirunepe' => 'Acre-Zeit (Eirunepe)', 'America/Rio_Branco' => 'Acre-Zeit(里约热内卢Branco)',…]$时区=时区::getName (“非洲/内罗毕”,“德”);// => '《内罗毕日报》(内罗毕)'
您还可以获得给定国家中存在的所有时区。的forCountryCode ()
方法返回一个或多个时区id,您可以使用getName ()
前面所示的方法:
1 2 3
//与语言代码不同,国家代码总是大写的(CL = Chile)$时区=时区::forCountryCode (“氯”);// => ['America/Punta_Arenas', 'America/Santiago', 'Pacific/Easter']
反向查找也可以通过getCountryCode ()
方法,返回给定时区ID所属国家的代码:
1 2
$countryCode=时区::getCountryCode (美国/温哥华的);// => $countryCode = 'CA' (CA =加拿大)
的UTC/GMT时间偏移量提供的所有时区的getRawOffset ()
(返回一个以秒为单位表示偏移量的整数)和getGmtOffset ()
(返回偏移量的字符串表示形式,以显示给用户):
1 2 3 4 5 6 7
$抵消=时区::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函数来获取当前时区偏移值,但你可以传递一个时间戳作为第二个参数来获取任何给定时间点的偏移量:
1 2 3 4 5
// 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偏移量的字符串表示可以根据语言环境而变化,所以你可以将语言环境作为第三个可选参数传递:
1 2
$抵消=时区::getGmtOffset (“欧洲/马德里”strtotime (“2019年10月28日”),基于“增大化现实”技术的);// $offset = 'غرينتش+01:00'$抵消=时区::getGmtOffset (“欧洲/马德里”strtotime (“2019年10月28日”),“dz”);// $offset = 'ཇི་ཨེམ་ཏི་+01:00'
如果给定的时区ID不存在,这些方法将触发MissingResourceException.除了捕获异常,你还可以检查给定的时区ID是否有效:
1
$isValidTimezone=时区::存在($timezoneId);