You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中如何通过语言标签获取对应显示语言名称?

解决方案:自动将语言标签转换为显示名称

方案1:使用原生Intl API(无额外依赖)

现代JavaScript和React Native环境原生支持ECMAScript的Intl.DisplayNames API,它能自动处理所有标准语言标签(包括带区域的变体,如en-US、zh-CN)到显示名称的映射,完全无需手动维护对照表。

代码示例

const getLanguageDisplayName = (langTag) => {
  try {
    // 用目标语言标签本地化显示名称,比如传入'zh-CN'会返回中文名称
    return new Intl.DisplayNames([langTag], { type: 'language' }).of(langTag);
    // 如果要统一用英文显示所有语言名称,替换为:
    // return new Intl.DisplayNames(['en'], { type: 'language' }).of(langTag);
  } catch (error) {
    // 处理不支持的标签,返回原标签作为 fallback
    return langTag;
  }
};

// 测试使用
const inputTags = ['en', 'it', 'zh-CN', 'fr-CA'];
const outputNames = inputTags.map(tag => getLanguageDisplayName(tag));
// 输出(用目标语言本地化):["English", "Italiano", "中文(中国)", "français (Canada)"]
// 输出(统一英文):["English", "Italian", "Chinese (China)", "French (Canada)"]

方案2:使用@formatjs/intl-displaynames(兼容旧环境)

如果你的React Native环境对原生Intl API支持有限,可以使用FormatJS提供的polyfill库,它和原生API用法完全一致,且内置了完整的语言标签映射数据。

安装与使用

npm install @formatjs/intl-displaynames
import { DisplayNames } from '@formatjs/intl-displaynames';

const getLanguageDisplayName = (langTag) => {
  try {
    return new DisplayNames(['en'], { type: 'language' }).of(langTag);
  } catch (error) {
    return langTag;
  }
};

这两个方案都能自动适配所有符合ISO规范的语言标签变体,彻底省去手动维护映射表的麻烦。

内容的提问来源于stack exchange,提问作者blarredflunky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:25:22