【问题标题】:Android: Get the device interface language in ISO 639 3-letters format?Android:获取 ISO 639 3 字母格式的设备界面语言?
【发布时间】:2014-10-16 16:29:19
【问题描述】:

我正在为全球市场开发一个 Android 应用程序,它将(希望!)由说不同语言的用户安装。

由于我想将我的界面语言调整为设备的语言,我需要以方便的标准格式获取该语言名称 - 最好是 ISO 639-2 3-letter format,其中希伯来语是 heb,英语是 eng 和西班牙语是spa

如何获得 ISO 639-2 3 字母格式的 Android 界面语言?

【问题讨论】:

    标签: android locale iso-639-2


    【解决方案1】:

    你可以使用这个代码sn-p:

    protected static String lang = Locale.getDefault().getISO3Language();//.substring(0, 2);
    

    我使用 2 个字符的变体,但我把那部分删掉了,根据需要为您留下 3 个字符的变体。

    【讨论】:

    • 太棒了! 1. 只是为了完成图片 - 您设备上的界面语言是什么,调用返回什么值? 2. 2 字母缩写不是 3 字母缩写的子串。
    • 我经常在不同的语言环境中设置语言,以测试我的应用程序,但大多数时候我保留默认的英语,它返回“en”(因为我只从“ eng" - 我添加了 ;// 以符合您的规格)。如果没有剪辑,我会得到“eng”,这也更快,因为它执行的操作更少(当然以纳秒为单位)。 The 2-letters abbreviations are not a substring of the 3-letters abbreviations.你确定吗?由于它获得了 ISO3 变体,它应该与 ISO-Locale(缩短为 3 个字符)兼容...
    • 我必须测试德语是否给了我gerdeu(但在我的情况下它应该返回de,而不是ge - 因为我的应用程序没有本地化问题)。
    • 经过测试:我正确地得到德语的“de”和西班牙语的“es”。 “it”表示意大利语,“fr”表示法语,“en”表示英语。
    • 此答案的子字符串部分不正确。例如,两个字母的瑞典语言代码是“sv”,而三个字母的一是“swe”。
    【解决方案2】:

    List of ISO codes for languages

    如您所见,ISO 639-3(3 个字母)代码的子串并不总是 ISO 639-1(2 个字母)代码。 我也不推荐这个。选择一个hashtable获取对应的code。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      • 2015-06-20
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多