< p >PHP Intl 是 PHP 開發者用于處理國際化和本地化問題的一款擴展包。它提供了基于Unicode標準的多種功能,比如字符集翻譯、貨幣格式轉換、數字格式轉換、文本排序等。< p >舉個例子,當我們需要將阿拉伯語中的貨幣顯示為英文格式時,可以使用 PHP Intl 擴展包實現:
$amount = 1234.56; $currency = 'SAR'; $locale = 'en_US'; $formatter = new NumberFormatter($locale, NumberFormatter::CURRENCY); $formatter->setPattern('¤#,##0.00'); $formatter->setTextAttribute(NumberFormatter::CURRENCY_CODE, $currency); echo $formatter->formatCurrency($amount, $currency);< p >在這個例子中,我們使用了 NumberFormatter 技術類,同時指定了需要將金額格式化成的英文格式。最后我們可以通過調用 formatCurrency 方法來完成貨幣的翻譯和轉換。這里需要注意的是,$locale 參數表示我們使用的地區是美國(en_US),而 $currency 參數表示我們要將阿拉伯貨幣 SAR 轉換為美國的美元。< p >PHP Intl 提供的另一個強大的功能是 DateFormatter。例如,當我們需要將一個日本日期格式轉換為英文格式時,我們可以這樣寫:
$date = new DateTime('2019年12月25日', new DateTimeZone('Asia/Tokyo')); $formatter = new IntlDateFormatter('en-US', IntlDateFormatter::FULL, IntlDateFormatter::SHORT); echo $formatter->format($date);< p >在這個例子中,我們通過 DateTime 類創建了一個東京時區的日期,并使用到了 IntlDateFormatter 技術類來進行轉換。$formatter->format 方法將會把日本日期 "2019年12月25日" 轉換為美國的日期格式,因為我們的 $locale 參數為 "en_US"。< p >另一個有趣的例子是,如何根據用戶語言偏好來選擇合適的翻譯。接下來的代碼摘自官方文檔:
$locale = 'en_US'; $a = new MessageFormatter($locale, '{0,number} monkeys on {1,number} trees make {2,number}.'); echo $a->format([4560, 123, 4560 * 123]);< p >在這個例子中,我們通過 MessageFormatter 技術類實現了一個翻譯,它可以將不同地區的語言轉換成我們需要的格式。這里我們把數字的數據通過 pre 標簽顯示出來,4560 表示猴子的數量,123 表示樹木的數量,4560 * 123 則是猴子和樹的乘積。< p >通過 PHP Intl 擴展包翻譯的功能,我們可以將復雜的所有語言翻譯問題變得簡單。通過上述例子,我們可以了解到它非常好用,包括語言和貨幣的轉換、日期和數字的格式化等等。如果你還沒有使用過 PHP Intl 擴展包,那么趕緊試一試吧!