如何获取当前应用的语言,而不是设备的语言?
我已经在网上进行了研究,发现大多数回复都使用了Locale.getDefault()
和getResources().getConfiguration().getLocales()
,但我认为这对我的情况不起作用。
例如,我将Android设备语言设置为“法语(比利时)”(语言标签:fr-be),而我的应用仅支持“ fr,fr-CA,fr-CH”。安装该应用程序后,它以法语显示,但是这两个函数都返回“ fr-be”:
Locale.getDefault() -> fr-be
fragment.getResources().getConfiguration().getLocales().get(0) -> fr-be
我很困惑,因为我的应用程序不支持fr-be,但是它确实显示在(某种)法语中。那么如何获得我的应用程序当前正在使用的内容?它应该来自“ fr,fr-CA或fr-CH”。
谢谢!
答案 0 :(得分:0)
如何获取当前应用的语言,而不是设备的语言?
应用没有语言。因此,没有“当前应用程序的语言”。
我很困惑,因为我的应用程序不支持fr-be
应用程序不“支持”语言。
一个应用程序具有字符串资源。这些字符串资源可能包括多种语言的翻译。每个字符串资源都有其自己的一套以其自己的语言组成的翻译。因此,您自己的字符串资源之一可能仅具有fr,fr-CA或fr-CH的翻译,但是从库中获得的字符串资源可能具有针对不同语言集的翻译。
那我该如何获取我的应用目前正在使用的内容?
您的应用未使用任何内容。
Android用作字符串资源翻译的方式是在运行时在请求该字符串资源时确定的。可以想象的是,根据应用程序中可用的翻译和用户的设备级语言设置,对于100种不同的字符串资源,可以进行100种不同的语言选择。
应为“ fr,fr-CA或fr-CH”
对于任何给定的字符串资源,它可能来自其中之一。如果字符串资源恰好来自提供fr-BE
翻译的库,则可能来自fr-BE
。如果字符串资源碰巧没有更好的翻译结果,则可能来自默认的res/values/
来源。
但是关键是,语言选择是针对每个单独的字符串资源 ,而不是针对整个应用。