Създавам приложение, което ще поддържа езика хинди и гуджарати. Задавам езика на приложението от екрана с настройки на приложението. като дадох опция на потребителя да избере език между английски/хинди/гуджарати.
Задавам Locale въз основа на избор на бутон за избор. Запазвам селекцията в постоянство и на тази основа променям шрифта на всички текстови изгледи в моето приложение.
ВСИЧКО РАБОТИ ДОБРЕ.. но сменя езика на английски между стартирането на приложението. да предположим, че съм избрал езика на хинди от моя екран с настройки и стартирам приложението си. изведнъж след 10-15 минути той взема текстови стойности от директорията "values", а не от "values-hi". Наистина не разбирам защо се взема от директорията със стойности по подразбиране. динамичните данни на приложенията ми работят добре. идва на хинди и дори чертежите на приложението ми също работят добре, но проблемът е само, че взема стойностите от директорията "стойности".
ТОЗИ МЕТОД СЕ ИЗПОЛЗВА, КОГАТО ПОТРЕБИТЕЛЯТ ИЗБЕРЕ ЕЗИКА ОТ ЕКРАНА ЗА НАСТРОЙКИ НА МОЕТО ПРИЛОЖЕНИЕ.
public void setLocale(Context context, String lang) {
Locale myLocale = new Locale(lang);
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}
ТОЗИ МЕТОД СЕ ИЗПОЛЗВА ЗА НАСТРОЙКА НА TYPEFACE НА TEXTVIEW В МЕТОДА ONCREATE
public static void setTypeface(TextView textView, Context context) {
SharedPreferences sp = context.getSharedPreferences("language_selection", context.MODE_PRIVATE);
String language = sp.getString("language", "English");
if (language != null) {
if (language.equalsIgnoreCase("Hindi")) {
textView.setTypeface(Typeface.createFromAsset(context.getAssets(), "gargi.ttf"));
}
if (language.equalsIgnoreCase("Gujrati")) {
textView.setTypeface(Typeface.createFromAsset(context.getAssets(), "SHRUTI.TTF"));
}
}
}
Locale.setDefault(locale);
опитайте според моя отговор - person M D   schedule 01.03.2014