求JavaScript中支持Intl.NumberFormat的货币格式化可用地区列表
支持Intl.NumberFormat()的地区列表获取方法及示例
动态获取当前环境支持的所有地区
由于不同运行环境(浏览器、Node.js等)对地区的支持可能略有差异,最准确的方式是通过代码动态获取当前环境下Intl.NumberFormat支持的所有地区,并转换成你需要的结构:
// 生成并过滤当前环境支持的地区列表 const getSupportedLocales = () => { // 覆盖主流语言及地区变体的基础标签集合 const baseLangTags = [ 'af', 'am', 'ar', 'az', 'be', 'bg', 'bn', 'bs', 'ca', 'cs', 'cy', 'da', 'de', 'el', 'en', 'es', 'et', 'eu', 'fa', 'fi', 'fr', 'ga', 'gl', 'gu', 'he', 'hi', 'hr', 'hu', 'hy', 'id', 'is', 'it', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ky', 'lo', 'lt', 'lv', 'mk', 'ml', 'mn', 'mr', 'ms', 'mt', 'my', 'nb', 'ne', 'nl', 'nn', 'pa', 'pl', 'pt', 'ro', 'ru', 'si', 'sk', 'sl', 'sq', 'sr', 'sv', 'sw', 'ta', 'te', 'th', 'tr', 'uk', 'ur', 'uz', 'vi', 'zh' ]; // 常见地区代码,用于生成语言+地区的变体标签 const commonRegions = ['US', 'GB', 'IN', 'AU', 'CA', 'NZ', 'MT', 'DE', 'FR', 'JP', 'CN', 'TW', 'KR', 'BR', 'ES', 'IT', 'RU', 'NG', 'ZA']; // 生成完整的候选标签列表 const candidateLocales = baseLangTags.flatMap(lang => { return [lang, ...commonRegions.map(region => `${lang}_${region}`)]; }); // 过滤出当前环境支持的地区 const supportedTags = Intl.NumberFormat.supportedLocalesOf(candidateLocales); // 转换为你需要的{code, name}结构 return supportedTags.map(tag => ({ code: tag.toLowerCase(), name: new Intl.DisplayNames([tag], { type: 'language' }).of(tag) })); }; // 调用方法获取列表 const supportedLocales = getSupportedLocales(); console.log(supportedLocales);
常见支持地区示例(与你的格式一致)
以下是主流环境普遍支持的部分地区列表,可直接用于Intl.NumberFormat:
const locale = [ // 英语系 { code:"en_us", name:"English (United States)" }, { code:"en_gb", name:"English (United Kingdom)" }, { code:"en_in", name:"English (India)" }, { code:"en_mt", name:"English (Malta)" }, { code:"en_nz", name:"English (New Zealand)" }, { code:"en_au", name:"English (Australia)" }, { code:"en_ca", name:"English (Canada)" }, // 中文系 { code:"zh_cn", name:"Chinese (China)" }, { code:"zh_tw", name:"Chinese (Taiwan)" }, { code:"zh_hk", name:"Chinese (Hong Kong)" }, // 欧洲地区 { code:"de_de", name:"German (Germany)" }, { code:"fr_fr", name:"French (France)" }, { code:"es_es", name:"Spanish (Spain)" }, { code:"it_it", name:"Italian (Italy)" }, { code:"ru_ru", name:"Russian (Russia)" }, { code:"nl_nl", name:"Dutch (Netherlands)" }, // 亚太地区 { code:"ja_jp", name:"Japanese (Japan)" }, { code:"ko_kr", name:"Korean (Korea)" }, { code:"hi_in", name:"Hindi (India)" }, { code:"th_th", name:"Thai (Thailand)" }, // 其他地区 { code:"ar_sa", name:"Arabic (Saudi Arabia)" }, { code:"pt_br", name:"Portuguese (Brazil)" }, { code:"af_za", name:"Afrikaans (South Africa)" } ];
说明
Intl.NumberFormat遵循ECMA-402国际API标准,主流浏览器(Chrome 24+、Firefox 29+、Safari 10+)和Node.js 10+版本都支持绝大多数常见地区代码。动态获取方法能确保你拿到当前运行环境下100%兼容的地区列表。
内容的提问来源于stack exchange,提问作者Jay Patel
相关产品推荐
相关产品推荐

