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

Angular使用i18n-iso-countries获取阿语国名替换ar无效问题

解决i18n-iso-countries获取阿拉伯语国家名称的问题

问题原因

i18n-iso-countries库默认只包含英文语言数据,阿拉伯语这类非英文语言需要单独加载对应的语言包,否则调用getNames('ar')时会自动 fallback 到英文结果。

解决步骤

1. 导入并注册阿拉伯语语言数据

在组件文件中,除了导入库本身,还需引入阿拉伯语的语言模块并完成注册:

import * as countriesLib from 'i18n-iso-countries';
// 导入阿拉伯语语言包
import ar from 'i18n-iso-countries/langs/ar.json';

// 注册阿拉伯语语言数据
countriesLib.registerLocale(ar);

2. 调整现有方法代码

确保getCountries方法正确使用阿拉伯语参数,同时保留英文国家代码:

getCountries(): { id: string; name: string }[] {
  return Object.entries(countriesLib.getNames('ar', { select: 'official' })).map((entry) => {
    return {
      id: entry[0], // 保留英文国家代码
      name: entry[1] // 返回阿拉伯语官方名称
    };
  });
}

// 若需要获取阿拉伯语国家名称,可修改此方法
getCountry(countryKey: string): string {
  return countriesLib.getName(countryKey, 'ar');
}

3. 确认依赖安装

确保已正确安装库(你之前的简写命令没问题,这里补充标准写法):

npm install i18n-iso-countries --save

额外说明

  • 如需其他语言,遵循相同逻辑:导入对应语言的.json文件(如fr.json对应法语),调用registerLocale完成注册即可。
  • select: 'official'会返回国家官方名称,若需要通用名称,可去掉该参数或改为select: 'common'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:05:23