如何查找我的应用程序中存在多少语言的string.xml

时间:2017-01-26 07:25:57

标签: javascript android localization locale string.xml

我需要在运行时找到我的应用程序中有多少语言的string.xml。示例:我有en,zh,fr的string.xml,现在我的服务器发送我的语言类型为hi然后我应检查hi文件夹中是否存在???

提前致谢。

1 个答案:

答案 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已被弃用。请参阅文档以获取更新。