在Android应用程序中禁用本地化

时间:2012-06-13 11:27:55

标签: android localization

有没有办法在Android应用程序中禁用本地化?它必须只使用英文字符串。我们有使用法语本地化字符串的库项目。某些使用这些库的应用程序必须只有英文版,有些则不是。

3 个答案:

答案 0 :(得分:7)

在调用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());

答案 1 :(得分:5)

Android的正常行为是,只有在您支持时才定义给定语言。对于法语,这将是values-fr / strings.xml。如果你不想支持法语,请不要包含french.xml for french,它将回退到values文件夹中的strings.xml

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

答案 2 :(得分:1)

在build.gradle中添加特定的资源配置

 defaultConfig {

          resConfigs "en"
}