Disable localization in Android application

后端 未结 3 554
Happy的楠姐
Happy的楠姐 2021-01-06 03:59

Is there any way to disable localization in an Android application? It must use only English strings. We have library projects with French localized strings. Some apps that

3条回答
  •  隐瞒了意图╮
    2021-01-06 04:29

    2019 - Gradle-based approach

    As pointed out by Nidhin in their answer, this is easier and less error prone now than it was in 2012. In the defaultConfig section of the android section of your build.gradle file, you can set resConfigs to the single language you support. For example:

    android {
        defaultConfig {
            resConfigs "en"
        }
    }
    

    This isn't just for disabling localization—resConfigs simply tells the build system which resources to keep. It can be set to a single language, or ideally to many, and it can be used to filter resources by something other than language, like screen density, as well. As such, saying "only include the English resources" effectively forces the app to always be in that language.

    The programmatic way of loading the resources for a specific language is still sometimes useful, so my 2012 answer is still provided:

    2012 - Programmatic approach

    Doing the following before calling setContentView() or anything else that loads locale-specific resources should ensure that you always load only the English strings.

    Resources res = getApplicationContext().getResources();
    
    Locale locale = new Locale("en");
    Locale.setDefault(locale);
    
    Configuration config = new Configuration();
    config.locale = locale;
    
    res.updateConfiguration(config, res.getDisplayMetrics());
    

提交回复
热议问题