2

Я ищу способ «поменять» язык по умолчанию со вторичным языком, который уже определен файлами string.xml в основном проекте. Это должно влиять только на конкретный вкус.Изменение языка по умолчанию для конкретного аромата

Пример ситуации: Привкус приложения ориентирован на другой регион, чем на все другие вкусы, где язык по умолчанию больше не имеет смысла для пользователей.

Примечание: Копирование. Вставка строковых файлов из основного проекта не является решением.

ответ

1

решения, которое я пошел, основанный на решении MTZ4, в звали это на onCreate() в одноэлементном моем приложении:

/** 
    * Sets the locale to {@link Locale#ENGLISH} 
    * if the device locale is not {@link Locale#GERMAN}. 
    */ 
public void setLocale() { 
    if(BuildConfig.FLAVOR.equals("flavorWithSwapedLocale")) { 
     Resources res = getResources(); 
     Configuration conf = res.getConfiguration(); 
     if (!conf.locale.equals(Locale.GERMAN)) { 
      conf.locale = Locale.ENGLISH; 
      res.updateConfiguration(conf, res.getDisplayMetrics()); 
     } 
    } 
} 

Обратите внимание, что язык по умолчанию в основном проекте - немецкий, этот своп делает язык языка по умолчанию английским, если устройство не находится на немецком языке.

При таком подходе может потребоваться перезапуск приложения для изменений, отображаемых после изменения языка устройства.

1

может быть, вы можете попробовать

public void setLocale(String lang) { 
    myLocale = new Locale(lang); 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    conf.locale = myLocale; 
    res.updateConfiguration(conf, dm); 
    reloadUI(); // you may not need this, in my activity ui must be refreshed immediately so it has a function like this. 
} 

берет из here

-1

Используйте символические ссылки на различные языки в вкусовых папках

0

Это, как я это сделал, что у вас есть:

main/ 
    res/ 
    values/ 
     strings.xml 
    values-es/ 
     strings.xml 

где под основных/значениями у вас есть язык по умолчанию (допустит, английский язык) и under_main/values-es_ на испанском переводе. Теперь вы хотите один из вашего вкуса по умолчанию на испанском языке вместо английского языка, даже когда пользователь выбирает США или Великобритании локали:

main/ 
    res/ 
    values/ 
     strings.xml 
    values-es/ 
     strings.xml 
a_flavor/ 
    res/ 
    values/ 
     strings.xml // <-- this is a symbolic link 

так что я ввел в аромате символическую ссылку strings.xml, чтобы указать на Испанский перевод, переписывая файл по умолчанию под значениями.

Symlink был создан с помощью команды:

$ cd app/src/a_flavor/res/values 
$ ln -s ../../../main/res/values-es/strings.xml strings.xml 
Смежные вопросы