【发布时间】:2014-10-16 16:29:19
【问题描述】:
我正在为全球市场开发一个 Android 应用程序,它将(希望!)由说不同语言的用户安装。
由于我想将我的界面语言调整为设备的语言,我需要以方便的标准格式获取该语言名称 - 最好是 ISO 639-2 3-letter format,其中希伯来语是 heb,英语是 eng 和西班牙语是spa。
如何获得 ISO 639-2 3 字母格式的 Android 界面语言?
【问题讨论】:
我正在为全球市场开发一个 Android 应用程序,它将(希望!)由说不同语言的用户安装。
由于我想将我的界面语言调整为设备的语言,我需要以方便的标准格式获取该语言名称 - 最好是 ISO 639-2 3-letter format,其中希伯来语是 heb,英语是 eng 和西班牙语是spa。
如何获得 ISO 639-2 3 字母格式的 Android 界面语言?
【问题讨论】:
你可以使用这个代码sn-p:
protected static String lang = Locale.getDefault().getISO3Language();//.substring(0, 2);
我使用 2 个字符的变体,但我把那部分删掉了,根据需要为您留下 3 个字符的变体。
【讨论】:
;// 以符合您的规格)。如果没有剪辑,我会得到“eng”,这也更快,因为它执行的操作更少(当然以纳秒为单位)。 The 2-letters abbreviations are not a substring of the 3-letters abbreviations.你确定吗?由于它获得了 ISO3 变体,它应该与 ISO-Locale(缩短为 3 个字符)兼容...
ger 或deu(但在我的情况下它应该返回de,而不是ge - 因为我的应用程序没有本地化问题)。
List of ISO codes for languages
如您所见,ISO 639-3(3 个字母)代码的子串并不总是 ISO 639-1(2 个字母)代码。 我也不推荐这个。选择一个hashtable获取对应的code。
【讨论】: