Intl组件

编辑该页面

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

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

Intl组件

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

谨慎

更换层是有限的语言环境。如果你想使用其他的地方,你应该安装intl扩展。之间不存在冲突的两个,因为即使你使用扩展,这个包可以访问ICU数据仍然是有用的。

另请参阅

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

安装

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

请注意

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

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

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

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

访问ICU数据

此组件提供了以下ICU数据:

语言和脚本的名称

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
使用欧宝娱乐app下载地址\组件\Intl\语言;\地区::setDefault (“en”);美元语言=语言::getname ();/ / (' languageCode ' = > ' languageName ')/ / = > [“ab”= >“阿布哈西亚语”,“王牌”= >“亚齐人”,…]美元语言=语言::getAlpha3Names ();/ / (' languageCode ' = > ' languageName ')/ / = > (abk”= >“阿布哈西亚语”,“王牌”= >“亚齐人”,…]美元语言=语言::getName (“fr”);/ / = >“法国”美元语言=语言::getAlpha3Name (联邦铁路局的);/ / = >“法国”

所有方法接受翻译语言环境作为过去,可选参数,默认为当前默认语言环境:

1 2 3 4 5 6 7 8 9 10 11
美元语言=语言::getname (“德”);/ / = > [“ab”= >“Abchasisch”,“王牌”= >“亚齐”…]美元语言=语言::getAlpha3Names (“德”);/ / = > [' abk ' = > ' Abchasisch ',“王牌”= >“亚齐”…]美元语言=语言::getName (“fr”,“德”);/ / = > ' Franzosisch '美元语言=语言::getAlpha3Name (联邦铁路局的,“德”);/ / = > ' Franzosisch '

如果给定的地区不存在,引发的方法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
使用欧宝娱乐app下载地址\组件\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α2列表和ISO 3166 - 1 alpha 3正式承认的国家和地区列表:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
使用欧宝娱乐app下载地址\组件\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”,“德”);/ / = > '(统一Konigreich”美元国家=国家::getAlpha3Name (“GBR”,“德”);/ / = > '(统一Konigreich”

如果给定的国家代码不存在,引发的方法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
使用欧宝娱乐app下载地址\组件\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澳门)”

如果给定的区域代码不存在,引发的方法MissingResourceException。除了捕捉异常,您还可以检查是否一个给定的区域代码是有效的:

1
美元isValidLocale=地区::存在(美元localeCode);

货币

货币类提供了访问所有货币的名字以及他们的一些信息(数字符号,分数等):

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用欧宝娱乐app下载地址\组件\Intl\货币;\地区::setDefault (“en”);美元货币=货币::getname ();/ / (' currencyCode ' = > ' currencyName ')/ / = > [“AFN”= >“阿富汗阿富汗的”,“所有”= >“阿尔巴尼亚求偶场”,…]美元货币=货币::getName (印度卢比的);/ / = > '印度卢比美元象征=货币::getSymbol (印度卢比的);/ / = > '₹'美元fractionDigits=货币::getFractionDigits (印度卢比的);/ / = > 2美元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
使用欧宝娱乐app下载地址\组件\Intl\时区;\地区::setDefault (“en”);美元时区=时区::getname ();/ / (' timezoneID ' = > ' timezoneValue ')/ / = >['美国/ Eirunepe”= >“英亩时间(Eirunepe)”,“美国/ Rio_Branco”= >“英亩时间(力拓布兰科)”,…]美元时区=时区::getName (“非洲/内罗毕”);/ / = >“非洲东部时间(内罗毕)”

所有方法接受翻译语言环境作为过去,可选参数,默认为当前默认语言环境:

1 2 3 4 5
美元时区=时区::getname (“德”);/ / = >['美国/ Eirunepe ' = > ' Acre-Zeit (Eirunepe) ', '美国/ Rio_Branco ' = > ' Acre-Zeit(力拓布兰科)',…]美元时区=时区::getName (“非洲/内罗毕”,“德”);/ / = > ' Ostafrikanische时间(内罗毕)'

你也可以得到所有存在于一个特定国家的时区。的forCountryCode ()方法返回一个或多个时区id,您可以翻译成任何语言环境getName ()方法:早些时候

1 2 3
/ /不像语言代码,国家代码总是大写(CL =智利)美元时区=时区::forCountryCode (“氯”);/ / = >['美国/ Punta_Arenas’,‘美国/圣地亚哥’,“太平洋/复活节”)

也可能由于反向查找getCountryCode ()方法,该方法返回的代码国家给定的时区ID属于:

1 2
美元countryCode=时区::getCountryCode (美国/温哥华的);/ / = > $ countryCode =“CA”(CA =加拿大)

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

1 2 3 4 5 6 7
美元抵消=时区::getRawOffset (“等/ UTC”);/ /抵消美元= 0美元抵消=时区::getRawOffset (“美国/ Buenos_Aires”);/ /抵消= -10800美元美元抵消=时区::getRawOffset (“亚洲/加德满都”);/ /抵消= 20700美元美元抵消=时区::getGmtOffset (“等/ UTC”);/ /抵消美元=“GMT + 00:00”美元抵消=时区::getGmtOffset (“美国/ Buenos_Aires”);/ /抵消美元= ' GMT-03:00 '美元抵消=时区::getGmtOffset (“亚洲/加德满都”);/ /抵消美元= ' GMT + 05:45 '

时区偏移可以不同时间的夏令时(DST)练习。在默认情况下使用这些方法时间()PHP函数获得当前的时区偏移值,但是你可以通过时间戳作为他们的第二个参数得到抵消在任何给定的时间点:

1 2 3 4 5
/ / 2019年,DST时期在马德里(西班牙)从3月31日至10月27日美元抵消=时区::getRawOffset (“欧洲/马德里”strtotime (2019年3月31日的));/ /抵消= 3600美元美元抵消=时区::getRawOffset (“欧洲/马德里”strtotime (2019年4月1日的));/ /抵消= 7200美元美元抵消=时区::getGmtOffset (“欧洲/马德里”strtotime (2019年10月27日的));/ /抵消美元= ' GMT + 02:00 '美元抵消=时区::getGmtOffset (“欧洲/马德里”strtotime (2019年的10月28日的));/ /抵消美元= ' GMT + 01:00 '

格林尼治时间抵消的字符串表示可以取决于语言环境,所以你可以通过语言环境作为第三个可选参数:

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

如果给定的时区标识不存在,引发的方法MissingResourceException。除了捕捉异常,您还可以检查是否一个给定的时区ID是有效的:

1
美元isValidTimezone=时区::存在(美元timezoneId);
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。