我需要在运行时找出我的应用程序中存在多少种语言的 string.xml。示例:我有 en、zh、fr 的 string.xml 。现在我的服务器向我发送语言类型为 hi 那么我应该检查值文件夹中是否存在 hi ???
提前致谢。
我需要在运行时找出我的应用程序中存在多少种语言的 string.xml。示例:我有 en、zh、fr 的 string.xml 。现在我的服务器向我发送语言类型为 hi 那么我应该检查值文件夹中是否存在 hi ???
提前致谢。
由于您的字符串可能位于 以外的文件中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");
请注意,Configuration.locale
自牛轧糖以来已弃用。请参阅文档以获取更新。