有没有办法在Android应用程序中禁用本地化?它必须只使用英语字符串。我们有带有法语本地化字符串的库项目。使用这些库的某些应用程序必须仅为英语,而其他一些则不是。
有没有办法在Android应用程序中禁用本地化?它必须只使用英语字符串。我们有带有法语本地化字符串的库项目。使用这些库的某些应用程序必须仅为英语,而其他一些则不是。
2019 - 基于Gradle的方法
正如Nidhin在他们的回答中指出的那样,现在比2012年更容易且较少出错。 在你的build.gradle
文件中的android
部分的defaultConfig
节中,可以将resConfigs
设置为你支持的单一语言。 例如:
android {
defaultConfig {
resConfigs "en"
}
}
这不仅适用于禁用本地化,resConfigs
还告诉构建系统需要保留哪些资源。它可以设置为单个语言,或者最好设置为多个语言,并且还可以用于根据其他条件过滤资源,例如屏幕密度。因此,说“只包括英文资源”实际上强制应用程序始终使用该语言。
以编程方式加载特定语言的资源有时仍然很有用,因此我的2012年回答仍然提供:
2012-编程方法
在调用 setContentView()
或任何其他加载特定区域设置资源的操作之前执行以下操作,可以确保始终仅加载英语字符串。
Resources res = getApplicationContext().getResources();
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
res.updateConfiguration(config, res.getDisplayMetrics());
defaultConfig {
resConfigs "en"
}
http://developer.android.com/guide/topics/resources/localization.html
如果您无法控制提供的字符串,或者希望动态设置区域设置以进行支持,则可以覆盖默认的区域设置。http://developer.android.com/reference/java/util/Locale.html#setDefault(java.util.Locale)
编辑
我忘了提到的是,你需要使用新配置更新你的配置文件
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());