Поддержка пользовательских Multi Language
Мне известно о создании нового каталога значений для языка с суффиксом кода языка. Для german: values-de или French: values-fr затем скопируйте наш string.xml в это и переведите каждую запись. И это работает на основе настроек локализации телефона
Я хотел знать, можем ли мы обойти настройки телефона и заставить пользователя выбрать нужный язык внутри приложения?
Мое требование: я хочу указать вариант выбора языка внутри своего приложения и сделать выбор пользователем языка, который он хочет для приложения. Как динамически переключаться между string.xml(для разных языков)???
заблаговременно
Ответы
Ответ 1
Создайте метод, который задает ваш основной язык. Скажем
public static void setDefaultLocale(Context context,String locale) {
Locale locJa = new Locale(locale);
Locale.setDefault(locJa);
Configuration config = new Configuration();
config.locale = locJa;
context.getResources().updateConfiguration(config, context.getResources()
.getDisplayMetrics());
locJa = null;
config = null;
}
Теперь проверьте, когда пользователь выбрал Locale (здесь в основном я использовал меню для выбора языка).
Configuration config = new Configuration();
String newLocale = config.locale.getLanguage().substring(0, 2)
.toLowerCase();
if ("ja".equalsIgnoreCase(newLocale)) {
// Call above method with context & newLocale
}
// Sequentially you check for Locale & change that.
Ответ 2
Отметьте этот пост... Это одно и то же в основном.
Изменение локали в самом приложении
Locale appLoc = new Locale("en");
Locale.setDefault(appLoc);
Configuration appConfig = new Configuration();
appConfig.locale = appLoc;
getBaseContext().getResources().updateConfiguration(appConfig,
getBaseContext().getResources().getDisplayMetrics());
Ответ 3
Если вы хотите получить изображения в соответствии с их соответствующими языками, вы должны создать папку макета ниже, как это. Сначала я возьму пример для пользовательской локализации.
Locale appLoc = new Locale("xx");
Locale.setDefault(appLoc);
Configuration appConfig = new Configuration();
appConfig.locale = appLoc;
getBaseContext().getResources().updateConfiguration(appConfig,
getBaseContext().getResources().getDisplayMetrics());
Ваша папка макета должна быть layout-xx, и ваша папка с выделением также должна быть drawable-xx. Но одно, что при изменении языка вам нужно обновить макет. Я использовал в своем приложении, запустил кнопку и установил фоновое изображение. Но иногда изображения не меняются, поэтому я сделал это следующим образом.
btn.setBackgroundDrawable(null);
btn.setBackgroundResource(R.drwable.yourimage);
Ответ 4
Очень просто перейти по этой ссылке
languageToLoad = "hi"; // your language
locale = new Locale(languageToLoad);
Locale.setDefault(locale);
config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
this.setContentView(R.layout.activity_main);
- См. больше на: http://www.theappguruz.com/blog/multi-language-support-to-android-app#sthash.eGmzq57K.dpuf