我正在尝试覆盖我的应用中的区域设置配置。但是,我无法区分语言和他们的地区。
我正在尝试使用代码来覆盖语言环境。
让语言环境覆盖。
示例:" 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
如果我定义了values-de / strings.xml,应用程序将从此文件夹开始读取。 这意味着区域设置覆盖在应用程序中工作,但是一些android系统如何无法从区域特定文件夹中读取字符串。
(我的设备语言是英语。)
任何帮助都会非常感激。
答案 0 :(得分:1)
传递给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();
}
}