无法在Android中读取特定地区文件夹中的字符串



我正在尝试覆盖应用程序中的区域设置配置。但是,我无法区分语言和它们的地区。

我正在尝试以下代码来覆盖区域设置。

正在获取要覆盖的区域设置。

示例:"de_de"、"de_AT"

public static Locale getLocaleFromString(@NonNull final String locale) {
        String[] split = locale.split("_");
        if (split != null || split.length > 1) {
            String language = split[0];
            String country = split[1];
            return new Locale(language, language, country);
        }
        return Locale.getDefault();
    }

我的资源文件夹的结构是:

values/strings.xml    (default strings)
values-de-rDE/strings.xml
values-de-rAT/strings.xml

如果我定义了值de/strings.xml,应用程序就会开始从这个文件夹中读取。这意味着区域设置覆盖在应用程序中有效,但在某些方面,安卓系统无法从特定区域的文件夹中读取字符串。

(我的设备语言是英语。)

如有任何帮助,我们将不胜感激。

传递给Location构造函数的参数可能是错误的:
第二个应该是国家,第三个应该是变体。

所以getLocaleFromString应该是这样的:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = getLocaleFromString("de_DE");
        res.updateConfiguration(conf, dm);
        setContentView(R.layout.activity_main);
    }
    public static Locale getLocaleFromString(@NonNull final String locale) {
        String[] split = locale.split("_");
        if (split != null || split.length > 1) {
            String language = split[0];
            String country = split[1];
            return new Locale(language, country);
        }
        return Locale.getDefault();
    }
}

相关内容

  • 没有找到相关文章

最新更新