LxBox v2.24.2
L×Box v2.24.2
The interface speaks Simplified Chinese. Settings, the node wizard, routing
and DNS, plus the native Android surfaces — the notification, the Quick Settings
tile and the shortcuts — are translated in full. Pick the language in
Settings → General, or leave it on System and the app follows the device. The
translation was contributed by @wyphgsy; the
dictionary was brought up to the current branch, since 58 strings had been added
to the app while the contribution was in flight. Behind it, a quieter fix: the
localization checks used to look at Russian alone, so a newly added language
passed CI while missing dozens of strings. They now cover every language.
Интерфейс заговорил на упрощённом китайском. Настройки, мастер узла,
маршрутизация и DNS, а также нативные поверхности Android — уведомление, плитка
быстрых настроек и ярлыки — переведены целиком. Язык выбирается в «Настройки →
Общие», а при значении «Системный» приложение следует языку устройства. Перевод
прислал @wyphgsy; словарь доведён до текущей
ветки — пока перевод шёл, в приложении появились ещё 58 строк. За этим — более
тихая починка: проверки локализации смотрели только на русский, поэтому
свежедобавленный язык проходил CI с десятками непереведённых строк. Теперь они
охватывают все языки.
🇬🇧 English
🇨🇳 Simplified Chinese (docs/spec/tasks/452, #139, #137)
- Was: the interface existed in English and Russian. Users in mainland China
asked for Chinese in #139. - Now: a third language. The UI dictionary, the wizard template overlay and the
native Android strings are all translated — 1598 UI strings, 205 template
strings and the notification / tile / shortcut surfaces. The language picker
gains 中文(简体), and System follows the device language on Android 13+
per-app language settings as before. - The translation was contributed by @wyphgsy in
#137 and follows the project's
own guide for adding a language, down to the CLDR plural resolver — Chinese
has a singleotherform. The dictionary was then brought up todevelop:
the 58 strings that arrived with 2.24.x (Tailscale nodes, node sections) were
translated and two stale entries dropped. - Nothing changed structurally: English remains the base language and the source
of truth, and the English text at each call site is still the key.
🧰 The localization checks cover every language (docs/spec/tasks/452)
- Was:
ui_checkwas hardcoded toassets/l10n/ru/ui.jsonandkotlin_check
tovalues-ru/strings.xml. Run against a Chinese dictionary that was 58 keys
short, both reported zero findings — they never looked at it. A language added
exactly as the documentation prescribes would have stayed outside CI and
fallen further behind with every new string. - Now: both discover languages by their directories, the way
template_check
already did, and the set of plural forms is taken per language, mirroring the
resolver choice inLocaleController. A new language is under the gates from
the moment its files exist, and the checkers need no edit to accept it. - The practical effect: one new interface string now requires one translation
per language, andui_check --strictwill not let it slip.
🧪 Tests
flutter analyzeis clean and all four l10n checkers pass under--strict,
now reporting per language.- The Chinese dictionary was verified key for key against Russian: identical key
sets, matching printf placeholder arity in every plural form, no entry with
forms other thanother, no empty values.
🇷🇺 Русский
🇨🇳 Упрощённый китайский (docs/spec/tasks/452, #139, #137)
- Было: интерфейс существовал на английском и русском. Пользователи из
материкового Китая просили китайский в #139. - Стало: третий язык. Переведены словарь интерфейса, оверлей шаблона мастера и
нативные строки Android — 1598 строк интерфейса, 205 строк шаблона и
поверхности уведомления, плитки и ярлыков. В выборе языка появился пункт
中文(简体), а значение «Системный», как и раньше, следует языку устройства
и пер-приложенческой настройке Android 13+. - Перевод прислал @wyphgsy в
#137; он сделан по проектному
руководству по добавлению языка вплоть до CLDR-резолвера множественного
числа — у китайского единственная формаother. Словарь доведён до ветки
develop: 58 строк, пришедших с 2.24.x (узлы Tailscale, секции узлов),
переведены, две устаревшие удалены. - Структурно не изменилось ничего: английский остаётся базовым языком и
источником истины, английский текст в месте вызова по-прежнему служит ключом.
🧰 Проверки локализации охватывают все языки (docs/spec/tasks/452)
- Было:
ui_checkбыл зашит наassets/l10n/ru/ui.json,kotlin_check— на
values-ru/strings.xml. На китайском словаре, которому не хватало 58 ключей,
оба показывали ноль находок: они в него не заглядывали. Язык, добавленный
ровно по документации, оставался вне CI и отставал бы всё сильнее с каждой
новой строкой. - Стало: оба находят языки по каталогам — так уже делал
template_check, — а
набор форм множественного числа берётся для каждого языка отдельно и зеркалит
выбор resolver'а вLocaleController. Новый язык попадает под гейты самим
фактом своих файлов, и править чекеры под него не нужно. - Практическое следствие: одна новая строка интерфейса теперь требует по
переводу на каждый язык, иui_check --strictне даст это пропустить.
🧪 Тесты
flutter analyzeчист, все четыре l10n-чекера проходят под--strictи
отчитываются теперь по каждому языку.- Китайский словарь сверен с русским поключно: множества ключей совпадают,
арность printf-плейсхолдеров совпадает в каждой форме, нет записей с формами
кромеother, нет пустых значений.
Install / Установка
adb install -r LxBox-v2.24.2-arm64-v8a.apkБез uninstall! Поверх существующей установки. Настройки и подписки сохранятся.
No uninstall needed — install over the existing one. Settings and subscriptions
are preserved.
Previous release / Предыдущий релиз: v2.24.1.