Как Android определяет из какого файла нужно достать строку в зависимости от локали?

Проблема такая, в приложении есть экран со сменой языка на нем списком языков и кнопка сохранить, нужно чтобы при нажатии на язык надпись на кнопке менялась в соответствии с локалью выбранного языка. Например выбрали English на кнопке надпись должна поменяться, вместо "сохранить" должно быть "save". Вопрос в том как андроид определяет к какому файлу со строками обратиться и как этот момент перехватить и переопределить чтобы менять локаль строки

РЕШЕНИЕ

val context = LocalContext.current
val conf = context.resources.configuration`conf.setLocale(Locale1(locale ?: "ru"))
val resources = context.createConfigurationContext(conf)
val textRes = R.string.your_string
    localizedString.value = resources.getString(textRes)`

метод createConfigurationContext нужно использовать вместо устаревшего конструктора класса Resources, метод создает новый контекст с новой конфигурацей который не является общим (не поменяет язык во всем приложении) подробнее: https://developer.android.com/reference/android/content/Context#createConfigurationContext(android.content.res.Configuration)


Ответы (1 шт):

Автор решения: Danil Apsadikov
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;

public class Main extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String languageToLoad  = "fa"; // код языка, который вы хотите сделать
    Locale locale = new Locale(languageToLoad); 
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config, 
      getBaseContext().getResources().getDisplayMetrics());
    this.setContentView(R.layout.main);
  }
}

Подробнее здесь https://stackoverflow.com/questions/2900023/change-app-language-programmatically-in-android

→ Ссылка