Проблема получения изображения в многоязычном приложении
Я разработал приложение, которое поддерживает два языка: английский (en) и испанский (es), для поддержки мультиязычности. Я перешел по ссылке developer.android http://developer.android.com/training/basics/supporting-devices/languages.html Я поместил испанские изображения в папки drawable-es-rES-hdpi, drawable-es-rES-ldpi, drawable-es-rES-mdpi и весь связанный с испанским языком текст в strings.xml в папке values-es.
Когда я изменил язык с английского на испанский в настройках своего приложения, тогда он меняет весь текст с английского на испанский, работают правильно, однако приложение не получает изображения из папок, которые можно нарисовать на испанском языке (эта проблема возникает для устройства HDPI и всего текста, изменения изображений отлично работает на устройствах MDPI, таких как Samsung Galaxy ACE (Res: 320 X 480)).
Я сталкиваюсь с этой проблемой на устройстве Google Nexus с ОС 4.1.2, разрешение 480 X 800.
Кто-нибудь сталкивался с такой проблемой? Пожалуйста, помогите мне.
1 ответ
Наконец-то я получил решение.
Я создавал локальный объект только с языком, вплоть до пряника он изменяет весь текст и изображения для английского <-> испанского, однако не меняет изображения на желейных бобах: мой старый объект Local для английского и испанского языков:
Locale locale2 = новая локаль (appLanguageStr)
рабочий локальный объект
Locale locale2 = новый Locale(appLanguageStr, код страны);
Это последний метод, который работает для меня как на Gingerbread и Jelly Bean:
public void updateAppsLanguage(String appLanguageStr)
{
Locale locale2 = null;
if(appLanguageStr.equalsIgnoreCase("English"))
{
appLanguageStr = "en";
locale2 = new Locale(appLanguageStr);
}
else if(appLanguageStr.equalsIgnoreCase("Spanish"))
{
appLanguageStr = "es";
locale2 = new Locale(appLanguageStr, "esp");
}
Locale.setDefault(locale2);
Configuration config2 = new Configuration();
config2.locale = locale2;
getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());
//Refresh the current page
finish();
Intent intent = new Intent(this,AppSetting.class);
startActivity(intent);
}