android - Set Locale programmatically -


my app supports 3 (soon 4) languages. since several locales quite similar i'd give user option change locale in application, instance italian person might prefer spanish on english.

is there way user select among locales available application , change locale used? don't see problem set locale each activity since simple task perform in base class.

for people still looking answer, since configuration.locale deprecated can use api 24:

configuration.setlocale(locale); 

take in consideration minskdversion method api 17.

full example code prior api 17:

resources resources = getresources(); configuration configuration = resources.getconfiguration(); displaymetrics displaymetrics = resources.getdisplaymetrics(); configuration.setlocale(locale); resources.updateconfiguration(configuration,displaymetrics); 

edit

from api 25 updateconfiguration(configuration,displaymetrics) deprecated, should use createconfigurationcontext(configuration), documentation here

full example code api 17 or higher:

resources resources = getresources(); configuration configuration = resources.getconfiguration(); configuration.setlocale(locale); getapplicationcontext().createconfigurationcontext(configuration); 

edit 2

full example code handle both cases:

@suppresswarnings("deprecation") private void setlocale(locale locale){     resources resources = getresources();     configuration configuration = resources.getconfiguration();     displaymetrics displaymetrics = resources.getdisplaymetrics();     if (build.version.sdk_int >= build.version_codes.jelly_bean_mr1){         configuration.setlocale(locale);         getapplicationcontext().createconfigurationcontext(configuration);     }     else{         configuration.locale=locale;         resources.updateconfiguration(configuration,displaymetrics);     } } 

Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -