Document requested locales and notification language refresh contracts
This commit is contained in:
1 parent
7b8e0a95bb
commit
3a6ef25ca6
2 files changed
+31
-1
No files matched your search
@@ -46,7 +46,7 @@ object AppLanguage {
|
||||
throw error
|
||||
}
|
||||
|
||||
/** Запрошенный Android/AppCompat список через запятую; пусто — следовать системе, это не effective язык ресурсов.
|
||||
/** После Activity.onCreate: запрошенный Android/AppCompat список через запятую; пусто — система, не effective язык ресурсов.
|
||||
* Ошибка чтения логируется и передаётся вызывающему, не маскируется под системный выбор. */
|
||||
fun selectedTag(): String = try { AppCompatDelegate.getApplicationLocales().toLanguageTags()
|
||||
} catch (error: Exception) {
|
||||
|
||||
@@ -134,6 +134,36 @@ UDP-лог — в `[log_udp] ip/port`; полный набор задаёт Conf
|
||||
Начальная генерация ключей пытается сохранить их в `db_path/keys.conf`.
|
||||
`instance_lite_regenerate_keys()` меняет ключи/node_id на месте, без пересоздания соединений.
|
||||
|
||||
## Язык интерфейса
|
||||
|
||||
`AppLanguage.supportedTags` читает общий `res/xml/locales_config.xml`: имена
|
||||
нормализуются в BCP47, пустые/повторные/некорректные записи отклоняются атомарно.
|
||||
Parser закрывается также при ошибке. Успешный каталог кэшируется; провал lazy
|
||||
логируется и не запрещает следующую попытку чтения.
|
||||
|
||||
`selectedTag()` возвращает requested список Android/AppCompat через запятую,
|
||||
пустая строка означает системный выбор. Effective ресурсы получают отдельно
|
||||
через `context()`/`text()`, в том числе вне Activity: для этого используется
|
||||
[ContextCompat.getContextForLanguage](https://developer.android.com/reference/androidx/core/content/ContextCompat#getContextForLanguage(android.content.Context)).
|
||||
`nativeName()` учитывает приоритетный список и именует каждый тег на его языке.
|
||||
|
||||
`select()` вызывается на main после создания Activity, принимает один тег
|
||||
каталога либо пустую строку. true означает уже выбранный/принятый запрос,
|
||||
false — отказ, а не подтверждение отката или завершения смены ресурсов.
|
||||
Выбор хранит Android/AppCompat с `autoStoreLocales`, без дублирования в DataStore;
|
||||
механизм хранения/пересоздания описан в
|
||||
[AppCompatDelegate.setApplicationLocales](https://developer.android.com/reference/androidx/appcompat/app/AppCompatDelegate#setApplicationLocales(androidx.core.os.LocaleListCompat)).
|
||||
UI перечитывает requested состояние после попытки, включая частичный отказ;
|
||||
ошибки чтения и выбора показываются отдельно с возможностью повторить действие.
|
||||
|
||||
`applied()` на main получает effective locale и при каждом сигнале конфигурации/
|
||||
создании Activity заново запрашивает обновление четырёх владельцев уведомлений:
|
||||
сеть, входящий звонок/рация, текущий звонок и radio overlay. Кэша «этот locale
|
||||
уже применён» нет: владелец может обработать отказ внутри себя или стать активным
|
||||
после прежнего сигнала. Обновляются каналы/тексты; ядро, media и сигналы вызова
|
||||
не перезапускаются. Ошибка одного владельца не прерывает остальные. При отказе
|
||||
чтения конфигурации сигнал логируется и пропускается до следующего вызова.
|
||||
|
||||
## Каналы, приглашения и DM
|
||||
|
||||
Создание канала ставится в uasync; channel_id, переданный старому bridge API создания,
|
||||
|
||||
Reference in new issue
Block a user