0

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

提前致谢。

4

1 回答 1

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");

请注意,Configuration.locale自牛轧糖以来已弃用。请参阅文档以获取更新。

于 2017-01-26T15:45:33.327 回答