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
Post a Comment