Вот метод, который я использую во время каждого действия onCreate () или onResume () в зависимости от моих потребностей (если моя деятельность будет возобновлена после изменения пользователем языковых настроек или всегда будет создаваться с уже установленным языком):
Оттуда я просто обновляю представление вручную или из onConfigurationChanged (), который вызывается после завершения этого метода.
public static void changeLocale(Activity activity, String language)
{
final Resources res = activity.getResources();
final Configuration conf = res.getConfiguration();
if (language == null || language.length() == 0)
{
conf.locale = Locale.getDefault();
}
else
{
final int idx = language.indexOf('-');
if (idx != -1)
{
final String[] split = language.split("-");
conf.locale = new Locale(split[0], split[1].substring(1));
}
else
{
conf.locale = new Locale(language);
}
}
res.updateConfiguration(conf, null);
}