溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么使用PHP中的國(guó)際化功能來(lái)查看貨幣及日期信息

發(fā)布時(shí)間:2021-07-02 09:25:28 來(lái)源:億速云 閱讀:148 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下怎么使用PHP中的國(guó)際化功能來(lái)查看貨幣及日期信息,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

獲取當(dāng)前瀏覽器用戶的所在地

首先,我們來(lái)獲取當(dāng)前訪問用戶的所在地信息,也就是我們常見的 zh-cn 、 en-us 這類的地區(qū)語(yǔ)言編碼信息。

// $_SERVER['HTTP_ACCEPT_LANGUAGE'] = zh-CN,zh;q=0.9;
$browserLocale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);

print_r($browserLocale);
echo '<br/>';
// zh

瀏覽器傳遞的這類區(qū)域信息是 zh-CN,zh;q=0.9; 這種形式的,我們可以通過 Locale::acceptFromHttp() 獲得具體的區(qū)域信息。不過需要注意的是,不管是 zh-cn 還是 zh-tw ,返回的都是 zh ,而英文則會(huì)返回具體的是 en-us 還是 en-gd 之類的內(nèi)容,也就是說(shuō)這個(gè)函數(shù)對(duì)于我們中文語(yǔ)言的結(jié)果獲取是有問題的。

$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($locale as $code){
    print_r(Locale::acceptFromHttp($code));
    echo '<br/>';
}
// en
// fr_FR
// da
// zh
// zh
// en_US
// en_CA
// ja_JP

我們可以手動(dòng)來(lái)指定區(qū)域信息,可以看出除了 zh 之外其它的都是可以獲取到正常的具體區(qū)域信息的。這點(diǎn)是我們使用這個(gè)函數(shù)時(shí)需要注意的地方。

獲取指定地區(qū)所在地的標(biāo)準(zhǔn)數(shù)字信息

對(duì)于我們中國(guó)人來(lái),數(shù)字比較習(xí)慣的是百、千、萬(wàn)位,一般也不太需要區(qū)分,而西方國(guó)家則喜歡三位一個(gè)逗號(hào)的分隔開來(lái),也就是對(duì)應(yīng)他們的英文數(shù)字習(xí)慣,比如 10000,在西方表示中是 10,000 ,英語(yǔ)是 ten thousand , 10000000 表示為 10,000,000 ,英語(yǔ)是 ten million 。因此,在 PHP 中,也是有相對(duì)于這種情況的數(shù)字表示形式,也就是為普通數(shù)字加上逗號(hào)以表示西方數(shù)字標(biāo)準(zhǔn)格式。

$locale = ['en', 'fr-FR', 'en-gb', 'zh-cn','en-us', 'ko-kr', 'ja-jp'];

$money = 1234567.89;

foreach($locale as $code){
    $numberformat = new NumberFormatter($code, NumberFormatter::DECIMAL);
    echo $code, ":";
    echo $numberformat->format($money), ', ';
    echo $numberformat->parse($numberformat->format($money)), '<br/>';
}
// en:1,234,567.89, 1234567.89
// fr-FR:1?234?567,89, 
// en-gb:1,234,567.89, 1234567.89
// zh-cn:1,234,567.89, 1234567.89
// en-us:1,234,567.89, 1234567.89
// ko-kr:1,234,567.89, 1234567.89
// ja-jp:1,234,567.89, 1234567.89

我們直接使用 format() 方法,就可以獲得指定地區(qū)的標(biāo)準(zhǔn)數(shù)字表示形式??梢钥闯鰜喼薜貐^(qū)的都是和歐美國(guó)家相同的,但法國(guó)則是使用空格進(jìn)行分隔的。

獲取指定地區(qū)所在地的貨幣符號(hào)信息

既然有數(shù)字格式的不同了,那么貨幣形式的區(qū)別就也是類似的形式了,只不過我們?cè)谑褂?NumberFormatter 類的時(shí)候需要指定后面的數(shù)字類型常量為貨幣形式 NumberFormatter::PERCENT 。

oreach($locale as $code){
    $numberformat = new NumberFormatter($code, NumberFormatter::PERCENT);
    echo $code, ":";
    echo $numberformat->format($money), '<br/>';
}
// en:¤1,234,567.89
// fr-FR:1?234?567,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

看出來(lái)了嗎,當(dāng)指定了貨幣形式后,format() 出來(lái)的結(jié)果直接就帶上了貨幣符號(hào)。第一個(gè) en 的貨幣符號(hào)其實(shí)就是國(guó)際通用貨幣符號(hào),而日元和我們?nèi)嗣駧诺姆?hào)是相同的,這也是一個(gè)有趣的歷史知識(shí),大家可以自行查詢下。

獲取指定地區(qū)所在地的完整日期

最后就是獲取的各地的日期標(biāo)準(zhǔn)格式。其實(shí)現(xiàn)在大家通用的都是 yyyy-mm-dd 這種形式來(lái)表示日期,不過正式規(guī)范的日期標(biāo)準(zhǔn)格式各個(gè)地區(qū)還是有所不同的。

$date = '2020-09-25 11:05:22';
foreach($locale as $code){
    $l = new Locale($code);
    
    $d = new IntlDateFormatter($code, IntlDateFormatter::FULL, IntlDateFormatter::FULL);
    $c = IntlCalendar::createInstance(NULL, $code);
    $c->set('2020', '09', '25', '11', '22', '33');
    echo $code, ":";
    echo $d->format($c), "<br/>";
}

// en:Friday, September 25, 2020 at 2:48:12 PM China Standard Time
// fr-FR:vendredi 25 septembre 2020 à 14:48:12 heure normale de la Chine
// en-gb:Friday, 25 September 2020 at 14:48:12 China Standard Time
// zh-cn:2020年9月25日星期五 中國(guó)標(biāo)準(zhǔn)時(shí)間 下午2:48:12
// en-us:Friday, September 25, 2020 at 2:48:12 PM China Standard Time
// ko-kr:2020? 9? 25? ??? ?? 2? 48? 12? ?? ???
// ja-jp:2020年9月25日金曜日 14時(shí)48分12秒 中國(guó)標(biāo)準(zhǔn)時(shí)

是不是很方便,直接就以當(dāng)?shù)氐恼Z(yǔ)言來(lái)表示指定地區(qū)的標(biāo)準(zhǔn)日期格式了。

看完了這篇文章,相信你對(duì)“怎么使用PHP中的國(guó)際化功能來(lái)查看貨幣及日期信息”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI