TypeScript中将ISO 639-1语言代码转ISO 3166-1国家代码的方案咨询
可用方案
你可以用以下成熟的npm工具实现需求,均支持TypeScript:
- 组合使用
iso-639-1和i18n-iso-countries
前者负责处理ISO 639-1语言代码的基础信息,后者负责ISO 3166-1国家代码的转换,你可以额外加一层自定义映射规则,处理en这类对应多个国家的场景,灵活指定默认返回GB还是US。 - 直接使用
locale-code库
该库原生支持语言区域代码的解析和转换,自带常见语言到默认国家的映射,也支持自定义覆盖规则,类型定义完善,适配你的使用场景。
示例代码(适配你定义的LangItem模型)
import { getLangInfo } from 'locale-code'; // 自定义特殊语言的默认国家映射,可根据业务需求调整 const customLangToCountry: Record<string, string> = { 'en': 'US', 'zh': 'CN' } function generateLangItem(langKey: string): LangItem { const langInfo = getLangInfo(langKey); return { key: langKey, name: langInfo.languageName, // 优先走自定义映射,没有则使用库默认返回的国家代码 countryCode: customLangToCountry[langKey] || langInfo.countryCode } }
如果你的业务场景有非常特殊的映射规则,也可以直接基于公开的ISO 639-1、ISO 3166-1映射表做本地JSON配置,无需依赖第三方库,灵活性更高。
内容的提问来源于stack exchange,提问作者J.BizMai
相关产品推荐
相关产品推荐

