我正在为我正在编写的PHP应用程序寻找所有地区及其短代码的列表。不同平台之间的数据是否存在很大差异?
另外,如果我正在开发一个国际应用程序,我是否可以只支持一种英语版本,或者世界各地的英语是否存在显著差异?
我正在为我正在编写的PHP应用程序寻找所有地区及其短代码的列表。不同平台之间的数据是否存在很大差异?
另外,如果我正在开发一个国际应用程序,我是否可以只支持一种英语版本,或者世界各地的英语是否存在显著差异?
当前回答
从http://www.w3.org/International/articles/language-tags/
"Language tag syntax is defined by the IETF's BCP 47. BCP stands for 'Best Current Practice', and is a persistent name for a series of RFCs whose numbers change as they are updated. The latest RFC describing language tag syntax is RFC 5646, Tags for the Identification of Languages, and it obsoletes the older RFCs 4646, 3066 and 1766. You used to find subtags by consulting the lists of codes in various ISO standards, but now you can find all subtags in the IANA Language Subtag Registry."
我相信大多数语言环境感知应用程序(由专业人员编写)都遵守这个标准。它不只是某个人拼凑起来的东西,不同的人会有不同的解读。
我强烈建议您研究您的特定开发语言的国际化特性,因为如果不这样做,您很可能会重新发明轮子。
其他回答
我花了一整天的时间为我的公司整理这些信息,因为我们正在构建一个多语言平台。如果你发现任何问题,缺失的语言,或不正确的字符集,请编辑列表,以便将来更有用。下面是所有语言区域设置、名称和字符集的完整列表。
对于PHP数组,这里是链接https://github.com/jerryurenaa/language-list/blob/main/language-list-array.php
JSON的链接是https://github.com/jerryurenaa/language-list/blob/main/language-list-json.json
如果您正在使用php-intl来本地化您的应用程序,您可能希望使用ResourceBundle::getLocales()而不是您自己维护的静态列表。它还可以为您提供特定语言的locale。
<?php
print_r(ResourceBundle::getLocales(''));
/* Output might show
* Array
* (
* [0] => af
* [1] => af_NA
* [2] => af_ZA
* [3] => am
* [4] => am_ET
* [5] => ar
* [6] => ar_AE
* [7] => ar_BH
* [8] => ar_DZ
* [9] => ar_EG
* [10] => ar_IQ
* ...
*/
?>
这里有一个非常详尽的文化代码列表。据我所知,编程语言之间没有差异,因为它是RFC标准。至于英语,我认为如果你支持通用的en或en- us,那么你应该没问题。
从http://www.w3.org/International/articles/language-tags/
"Language tag syntax is defined by the IETF's BCP 47. BCP stands for 'Best Current Practice', and is a persistent name for a series of RFCs whose numbers change as they are updated. The latest RFC describing language tag syntax is RFC 5646, Tags for the Identification of Languages, and it obsoletes the older RFCs 4646, 3066 and 1766. You used to find subtags by consulting the lists of codes in various ISO standards, but now you can find all subtags in the IANA Language Subtag Registry."
我相信大多数语言环境感知应用程序(由专业人员编写)都遵守这个标准。它不只是某个人拼凑起来的东西,不同的人会有不同的解读。
我强烈建议您研究您的特定开发语言的国际化特性,因为如果不这样做,您很可能会重新发明轮子。
一段程序,列出有关语言代码、当地名称、货币iso代码和货币符号(如果有的话)的信息。 这是PHP版本中包含的本地数据。
<?php
// get array of Locales codes included in PHP
$ARR_LANGS_PHP = ResourceBundle::getLocales('');
// prepa. an array for rendering
$LANGS = array();
foreach ($ARR_LANGS_PHP as $k => $v) {
// currency ISO code if exist
$currency_iso = NumberFormatter::create(
$v,NumberFormatter::CURRENCY)
->getTextAttribute(NumberFormatter::CURRENCY_CODE);
// if no currency ISO code -> 'XXX' is returned, $currency_iso => ''
$currency_iso = ( $currency_iso == 'XXX') ? '' : $currency_iso;
// currency symbol if exist
$currency_symbol = new NumberFormatter( $v, NumberFormatter::DECIMAL );
$symbol = $currency_symbol->getSymbol(NumberFormatter::CURRENCY_SYMBOL);
// if no symbol -> '¤' is returned, $symbol => ''
$symbol = ( $symbol == '¤' ) ? '' : $symbol;
// return name of locale with details ex. Arabic (Tunisia)
$descr_locale = Locale::getDisplayName($v, 'en');
// add datas to lang array
$LANGS[] = array(
'code_min' => strtolower(substr($v, 0, 2)),
// code -> ex. 'fr_FR'
'code' => $v,
// locale string in english for all
'locale' => $descr_locale,
// currency_iso -> ex. 'EUR'
'currency_iso' => $currency_iso,
// ex. €
'symbol' => $symbol
);
}
// var_dump( count($LANGS) ); // 732 langs
echo '<pre>';
print_r( $LANGS );
echo '</pre>';
exit;
?>
// output :
Array
(
[0] => Array
(
[code_min] => af
[code] => af
[locale] => Afrikaans
[currency_iso] =>
[symbol] =>
)
[1] => Array
(
[code_min] => af
[code] => af_NA
[locale] => Afrikaans (Namibia)
[currency_iso] => NAD
[symbol] => $
)
[2] => Array
(
[code_min] => af
[code] => af_ZA
[locale] => Afrikaans (South Africa)
[currency_iso] => ZAR
[symbol] => R
)
// ...
);