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

Android如何获取ISO 639双字母格式的用户语言代码?

解决获取双字母语言代码的问题

这个坑我之前踩过!你完全不用绕弯子去处理三位代码,Java的Locale类本身就提供了直接获取双字母语言代码的方法,而且绝对靠谱。

正确的解决方案

直接调用Locale.getDefault().getLanguage()就可以了!这个方法返回的是ISO 639-1标准的双字母语言代码,比如:

  • 英文返回 "en"(而不是三位的 "eng")
  • 葡萄牙语返回 "pt"(而不是 "por")
  • 日语返回 "ja"(而不是 "jap")

代码示例:

// 获取当前系统默认的双字母语言代码
String twoLetterLangCode = Locale.getDefault().getLanguage();
System.out.println(twoLetterLangCode); // 输出符合需求的双字母代码

为什么substring截取三位代码不可靠?

你说的没错,这种方法完全适配不了所有场景。因为ISO 639-2的三位语言代码和ISO 639-1的双字母代码并不是简单的前两位对应关系,举个典型反例:

  • 爱尔兰语的三位代码是 "gle",但双字母代码是 "ga",如果用substring(0,2)会得到错误的 "gl"。

所以手动截取的方式会在部分语言上出现错误,绝对不能用。

额外补充:获取带国家的语言标签

如果需要类似 "en-US"、"pt-BR" 这种包含国家/地区的完整语言标签,可以用toLanguageTag()方法:

String fullLanguageTag = Locale.getDefault().toLanguageTag();
System.out.println(fullLanguageTag); // 输出如 "en-US"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:52:37