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

ngx-translate语言选择下拉框如何将显示值从语言代码改为完整名称

解决方案

你只需要额外新增一层语言码和显示名称的映射即可,无需修改addLangs的入参(该参数值需要和语言包文件名对应,确实不能修改),具体修改如下:


1. 修改 app.component.ts 代码

新增映射对象,原有添加语言的逻辑保持不变:

// 新增语言码与显示名称的映射
public langDisplayMap: Record<string, string> = {
  'en': 'English',
  'es': 'Espanol',
  'fr': 'Francais'
};

// 原有代码无需改动
this.translate.addLangs(['en', 'es', 'fr']);

2. 修改 component.html 模板

将下拉选项的显示值替换为从映射对象中取值即可:

<select class="form-control" selLang (change)="translateLanguageTo(selLang.value)">
    <option *ngFor="let language of translate.getLangs()" [value]="language" [selected]="language === translate.currentLang">
        <!-- 从映射中取显示名,加兜底避免未配置的语言显示为空 -->
        {{ langDisplayMap[language] || language }}
    </option>
</select>

实现说明

addLangs方法传入的语言码是ngx-translate用来匹配对应语言包文件的标识,和显示逻辑完全解耦,新增的映射层只负责控制前端显示内容,不会影响语言包的加载逻辑。后续新增语言时,只需要同步在langDisplayMap中新增对应的键值对、在addLangs的入参数组中新增对应语言码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:18:01