作为一种在世界范围内广泛使用的编程语言,国际化能力往往是衡量一种编程语言能否广泛流行的重要内容。尤其对于PHP这种主战场是网页编程的语言来说,国际化能力最为重要。在PHP中,已经为我们准备了很多国际化相关的扩展和函数库。今天先简单了解一下,等学习了具体的国际化和字符编码支持相关的函数库再深入。说明学习。获取当前浏览器用户的位置首先我们获取当前访问用户的位置信息,也就是我们常用的区域语言代码信息,如zh-cn、en-us。//$_SERVER['HTTP_ACCEPT_LANGUAGE']=zh-CN,zh;q=0.9;$browserLocale=Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);print_r($browserLocale);echo'
';//zh浏览器传递的这类区域信息为zh-CN,zh;q=0.9;在这种形式下,我们可以通过Locale::acceptFromHttp()获取特定区域的信息。不过需要注意的是,无论是zh-cn还是zh-tw,都会返回zh,而英文会返回en-us或en-gd等具体内容,也就是说这个功能是针对我们中文的语言的结果获取是有问题的。$locale=['en','fr-FR','da,en-gb;q=0.8,en;q=0.7','zh-cn','zh-tw','en-us','en-ca','ja-jp'];foreach($localeas$code){print_r(Locale::acceptFromHttp($code));echo'
';}//en//fr_FR//da//zh//zh//en_US//en_CA//ja_JP我们可以手动指定区域信息,可以看到除了zh其他都可以得到正常的特定区域信息。这是我们在使用该功能时需要注意的。获取指定区域位置的标准数值信息,对于我们中国人来说,数字比较习惯的是百位、千位、万位,一般不需要区分,而西方国家喜欢分开由三位数字加一个逗号,即对应他们的英文数字习惯,如10000,在西方表达是10,000,英语是万,英语是10,000,000,英语是千万。因此,在PHP中,也有对应这种情况的数值表示法,即在普通数字后面加上逗号,表示西方数字的标准格式。$locale=['en','fr-FR','en-gb','zh-cn','en-us','ko-kr','ja-jp'];$钱=1234567.89;foreach($localeas$code){$numberformat=newNumberFormatter($code,NumberFormatter::DECIMAL);回声$代码,“:”;echo$numberformat->format($money),',';echo$numberformat->parse($numberformat->format($money)),'
';}//en:1,234,567.89,1234567.89//fr-FR:1234567,89,//en-gb:1,234,567.89,1234567.89//ZH-CN:1,234,567.89,1234567.89//en-en-us:1,234,567.89,1234567.89//地区Thestandardnumericrepresentationof.可以看到亚洲地区和欧美国家一样,只是法国用空格隔开。获取指定区域所在位置的货币符号信息有不同的数字格式,货币形式的区别也有类似的形式,只是我们在使用NumberFormatter类时,需要指定如下数字类型常量为货币形式NumberFormatter::PERCENT。oreach($localeas$code){$numberformat=newNumberFormatter($code,NumberFormatter::PERCENT);回声$代码,“:”;echo$numberformat->format($money),'
';}//en:¤1,234,567.89//fr-FR:1234567,89//en-gb:£1,234,567.89//zh-cn:¥1,234,567.89//en-us:$1,234,567.89//ko-kr:?1,234,568//ja-jp:¥1,234,568可以看到,当指定货币形式时,format()的结果会直接带上货币符号。第一个en的货币符号其实就是国际货币符号,日元和我们人民币的符号是一样的。这也是一个有趣的历史知识,大家可以自己去查一查。获取指定区域位置的完整日期,最终就是获取日期的标准格式。其实现在大家都用yyyy-mm-dd的形式来表示日期,只是各个地区正式标准化的日期格式不一样而已。$date='2020-09-2511:05:22';foreach($localeas$code){$l=newLocale($code);$d=newIntlDateFormats($code,IntlDateFormats::FULL,IntlDateFormats::FULL);$c=IntlCalendar::createInstance(NULL,$code);$c->set('2020','09','25','11','22','33');回声$代码,“:”;echo$d->format($c),"
";}//at:Friday,September25,2020at2:48:12PMChinaStandardTime//en-FR:Friday,9月25,2020至2:48:12PM中国标准时间//en-gb:2020年9月25日星期五下午2:48:12中国标准时间//zh-cn:20202020年9月25日星期五2:48:12PM中国标准时间//en-us:2020年9月25日星期五下午2:48:12中国标准时间//ko-kr:jp:2020年9月25日黄金日14:48:12中国标准时间有没有可用的翻译。综上所述,对于跨境项目来说,这些功能都是非常重要的能力,可以帮助我们快速开发或者切换相关区域,然后在深入学习的时候给出详细的学习讲解。这一次,全是热身!测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/11。了解PHP中的国际化功能以查看货币和日期信息。PHP参考文档:《PHP7编程实战》各媒体平台均可搜索【硬核项目经理】
