我需要在运行时找到我的应用程序中有多少语言的string.xml。示例:我有en,zh,fr的string.xml,现在我的服务器发送我的语言类型为hi然后我应检查hi文件夹中是否存在???
提前致谢。
答案 0 :(得分:0)
由于您的字符串可能位于string.xml
以外的文件中,因此这是一种更强大的方法:
将您知道的字符串ID翻译成所有支持的语言,并测试它是否与默认语言不同。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Configuration configuration = new Configuration(getResources().getConfiguration());
configuration.locale = new Locale(""); // default locale
Resources resources = new Resources(getAssets(), metrics, configuration);
String defaultStr = resources.getString(R.string.hello); // default string
// lang is the two-character language code, e.g. "zh", "hi"
configuration.locale = new Locale(lang);
resources = new Resources(getAssets(), metrics, configuration);
String testStr = resources.getString(R.string.hello);
boolean supported = !defaultStr.equals(testStr);
Log.d(TAG, lang + " is " + (supported ? "" : "not ") + "supported");
请注意,自Nougat以来,Configuration.locale
已被弃用。请参阅文档以获取更新。