здесь что-то очень странное, и я явно не понимаю, что происходит, но, может быть, один из вас может включить свет в моем мозге ...Изменения конкретных строк для различных языков с использованием различных общих модулей (Android)
У меня есть проект по AndroidStudio с несколькими общими файлами (и на нескольких языках), которые используются в различных приложениях:
|Common core
|- default module 1
|- default module 2
|- default images
|- | default strings
|- danish (default) in "values" folder
|- english in "values-en" folder
|- swedish in "values-sv" folder
|App one
|- specific module 3
|- specific module 4
|- specific images
|- | specific strings
|- in "values" folder
|App two
...
FYI, в моих программах, у меня есть AppApplication.java файл, который является первым файл с именем в e app и который используется для настройки моего приложения, например конфигурации меню, некоторых спецификаций переменных и настроек языков.
Теперь, когда я компилирую приложение 1 (например,), которое использует модуль по умолчанию из общего ядра, и я хочу изменить любую из строк или изображений из модуля по умолчанию, я просто помещаю их в конкретные images/strings с теми же именами, что и в общих папках изображений/строк по умолчанию, и они будут переопределены.
Это отлично работает. И я доволен этим. Но ... реальная проблема ...
Когда я хочу, чтобы настроить конфигурацию языков:
Ситуация # 1
_ "Я хочу использовать язык по умолчанию (на датском) в моем приложении 1 "_
Файл приложения AppApplication.java не вызывает никакой конкретной языковой конфигурации, и все в порядке. (Внутри общих файлов ядра я установил локальный «DK» по умолчанию.) Мое приложение имеет датский язык со всеми строками из строк по умолчанию в папке «values».
Если я хочу изменить некоторые конкретные строки в своем приложении, я помещаю их в свою папку «values» в конкретных приложениях, и они переопределяют строки по умолчанию. !! Отлично !!
Ситуация # 2
_ "Я хочу использовать шведский язык в моем приложении 1" _
Мой AppApplication.java файл содержит следующие строки:
LocaleAnswer[] localeAnswers = new LocaleAnswer[]{new LocaleAnswer(new Locale("sv", "SE"), "Swedish")};
public LocaleAnswer[] getLocaleChoices(){
return localeAnswers;
}
(Я могу без проблем добавить несколько языков внутри своего Loc aleAnswers array. После этого основное ядро позаботится об этом, показывая диалог с вопросом, какой язык вы хотите использовать при запуске)
Если моему приложению не нужно изменять какие-либо строки по умолчанию, то у меня нет любой конкретный файл строк, о котором нужно беспокоиться, и мы в порядке. Приложение хорошо компилируется, и приложение работает на шведском языке. ТЕБЯ! Отлично !!
НО, если мне нужно изменить строку, то, что я думал, это положить эту строку в папку «values».Но нет :(:(:(:( Строки не переопределяется
Я думаю, я знаю, почему:. Проект собирает все, а затем, когда я запускаю мое приложение, последний звонок о языках в моем AppApplication .java, и он говорит, что использует шведский файл. Таким образом, он использует шведский файл по умолчанию из папки «values-sv».
Давайте попробуем обойти это, переименовав мои значения «папка внутри моего приложения в« values-sv », так что, когда приложение будет вызывать файл шведских строк, оно будет использовать мои конкретные строки приложения и использует значения по умолчанию для тех, которые я не изменил. HAHAHAHAH вы знаете, что ?? «Я просто создаю приложение« автозагрузки »: D. Приложение компилируется, но когда оно пытается установить, телефон перезагружается, перезагружается, перезагружается и перезагружается снова и снова. Я должен был запустить телефон в SafeMode (том вниз + меню) во время одной из перезагрузок, чтобы иметь возможность стереть мое установленное приложение, а затем перезагрузить телефон в обычном режиме. Huuu:/Это не очень помогает.
Давайте попробуем обойти это путем дублирования моей папки «values-sv» внутри моего приложения и переименования одного из них в «значения». Итак, теперь у меня есть папка «values» и «values-sv» в моем приложении, и оба они содержат один и тот же файл строк (со специальными строковыми строками, которые я хочу изменить из стандартных). И ТАДААААМММ !! Работает !!
Coooooool, НО, КАК? ЗАЧЕМ ?
Вопросы
- Я не хочу, чтобы это повторяющиеся строки файла на двух разных папках, чтобы были мои строки изменены! Как я могу изменить свои строки по умолчанию конкретными, когда я выбираю конкретный язык, отличный от стандартного, только с одним файлом строк в моем приложении?
- Это не очень важный вопрос для проекта, но может быть очень интересно узнать, почему, когда вы добавляете только строку с определенным именем языка, например «values-sv» в моем приложении, он делает весь телефон перезагружать ? Я бы сказал, что приложение ищет значения по умолчанию, которые означают папку «values», а поскольку их нет, BOUM, ошибка! Но почему приложение не просто падает? Почему весь телефон перезагружается?
Заранее спасибо;) C.