Intl组件
编辑该页面Intl组件
该组件提供的定位数据的访问ICU库。
谨慎
更换层是有限的在
语言环境。如果你想使用其他的地方,你应该安装intl扩展。之间不存在冲突的两个,因为即使你使用扩展,这个包可以访问ICU数据仍然是有用的。
另请参阅
这篇文章解释了如何使用Intl功能作为一个独立的组件在任何PHP应用程序。读了翻译篇文章,了解如何在Symfony应用程序国际化和管理用户的语言环境。ob娱乐下载
安装
1
美元作曲家需要symfony / inob娱乐下载tl
请注意
如果你安装这个组件之外的Symfony应用程序,你必须要求ob娱乐下载供应商/ autoload.php
文件在你的代码,使作曲家提供的类加载机制。读这篇文章为更多的细节。
访问ICU数据
此组件提供了以下ICU数据:
语言和脚本的名称
的语言类提供了访问所有语言显示的名称ISO 639 - 1α2列表和ISO 639 - 2 alpha 3 t (2)列表:
1 2 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”);/ / = >“法国”美元语言=语言::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
使用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α2列表和ISO 3166 - 1 alpha 3正式承认的国家和地区列表:
1 2 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”,“德”);/ / = > '(统一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
使用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澳门)”
如果给定的区域代码不存在,引发的方法MissingResourceException。除了捕捉异常,您还可以检查是否一个给定的区域代码是有效的:
1
美元isValidLocale=地区::存在(美元localeCode);
货币
的货币类提供了访问所有货币的名字以及他们的一些信息(数字符号,分数等):
1 2 3 4 5 6 7 8 9 10 11 12 13
使用ob娱乐下载\组件\Intl\货币;\地区::setDefault (“en”);美元货币=货币::getname ();/ / (' currencyCode ' = > ' currencyName ')/ / = > [“AFN”= >“阿富汗阿富汗的”,“所有”= >“阿尔巴尼亚求偶场”,…]美元货币=货币::getName (印度卢比的);/ / = > '印度卢比美元象征=货币::getSymbol (印度卢比的);/ / = > '₹'
数字比例方法返回时显示的小数位数格式化数字货币。根据货币,这个值可以改变如果数字现金交易或者在其他场景中使用(如会计):
1 2 3 4 5 6 7
/ /印度卢比定义了两个相同的值美元fractionDigits=货币::getFractionDigits (印度卢比的);/ /返回:2美元cashFractionDigits=货币::getCashFractionDigits (印度卢比的);/ /返回:2/ /瑞典克朗定义不同的值美元fractionDigits=货币::getFractionDigits (“克朗”);/ /返回:2美元cashFractionDigits=货币::getCashFractionDigits (“克朗”);/ /返回:0
一些货币需要整数到最近的增量的值(例如5美分)。这个增量可能不同,如果数字格式化为现金交易或其他情况(如会计):
1 2 3 4 5 6 7 8 9
/ /印度卢比定义了两个相同的值美元roundingIncrement=货币::getRoundingIncrement (印度卢比的);/ /返回:0美元cashRoundingIncrement=货币::getCashRoundingIncrement (印度卢比的);/ /返回:0/ /加元定义了不同的价值观,因为他们已经消除/ /小硬币(1美分和2)和价格的现金必须四舍五入/ / 5美分(例如,如果价格是7.42你支付7.40;如果价格是7.48你付7.50)美元roundingIncrement=货币::getRoundingIncrement (“CAD”);/ /返回:0美元cashRoundingIncrement=货币::getCashRoundingIncrement (“CAD”);/ /返回:5
(除了所有方法getFractionDigits ()
,getCashFractionDigits ()
,getRoundingIncrement ()
和getCashRoundingIncrement ()
)接受翻译语言环境作为最后一个可选参数,默认为当前默认语言环境:
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 ')/ / = >['美国/ 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);
Emoji音译
6.2
Emoji音译功能是在Symfony 6.2中引入的。ob娱乐下载
的EmojiTransliterator
类提供了一个实用程序emojis转化为他们在所有语言基于文本表示Unicode系统的数据集:
1 2 3 4 5 6 7 8 9 10 11
使用ob娱乐下载\组件\Intl\Transliterator\EmojiTransliterator;/ /描述emojis英语美元transliterator= EmojiTransliterator::创建(“en”);美元transliterator- >transliterate (的菜单或“);/ / = > '菜单披萨和意大利面/ /描述emojis乌克兰美元transliterator= EmojiTransliterator::创建(“英国”);美元transliterator- >transliterate (的菜单或“);/ / = > '菜单піца或спагеті
的EmojiTransliterator
类还提供了两个额外的目录:github
和松弛
任何emojis转换为相应的短代码在这些平台:
1 2 3 4 5 6 7 8 9 10 11
使用ob娱乐下载\组件\Intl\Transliterator\EmojiTransliterator;/ /描述emojis松弛短代码美元transliterator= EmojiTransliterator::创建(“松弛”);美元transliterator- >transliterate (的菜单或“);/ / = > '菜单:green_salad:或者沙拉三明治:“/ /描述emojis在Github短代码美元transliterator= EmojiTransliterator::创建(github的);美元transliterator- >transliterate (的菜单或“);/ / = > '菜单:green_salad:或者沙拉三明治:“
提示
这emoji transliterator结合起来ob娱乐下载Symfony字符串重击者改善蛞蝓的内容,包括emojis(例如url)。
数据需要存储所有的音译emojis(5000)到所有语言相当大的磁盘空间。如果你需要节省磁盘空间(例如,因为你跟紧一些服务部署规模约束),运行这个命令(例如,作为一个自动化的脚本作曲家安装
)压缩内部Symfony emoji使用PHP数据文件ob娱乐下载zlib
扩展:
1 2
#调整路径压缩的二进制基于应用程序的安装美元php。/供应商/ symob娱乐下载fony / intl /资源/ bin /压缩
6.3
的压缩
二进制是在Symfony 6.3中引入的。ob娱乐下载