y83 code / справочник

Язык

Раздел «Язык» переключает язык всего интерфейса приложения: надписей на экранах, подсказок, сообщений об ошибках и текста уведомлений. Вариантов три: Системный, Русский и English. Переключение мгновенное — приложение перерисовывается целиком, перезагрузка и переустановка не нужны.

раздел
Подсистемы приложения
пунктов возможностей
16
источник
docs/about/language.md

Это дополнение к штатному выбору языка самого телефона, а не замена ему: на Android 13 и новее язык приложения можно переключить и в системных настройках, и здесь. Оба способа работают вместе.

Возможности

  • Три чипа в ряд под заголовком ЯЗЫК ИНТЕРФЕЙСА (в английском интерфейсе он будет INTERFACE LANGUAGE): Системный, Русский, English. Выбранный обведён бирюзовой рамкой вдвое толще обычной, и его подпись тоже бирюзовая. Фон у всех трёх одинаковый — меняется только рамка и цвет текста.
  • Подписи чипов названы по-русски и по-английски одновременно. Если интерфейс русский, вы увидите «Русский» и «English». Если английский — «Russian» и «English». Каждая подпись остаётся понятной в любом из двух языков, а не переводится в нечитаемое.
  • Строка «Сейчас: …» под чипами — показывает выбранный язык словами, а не кодом. Это дублирует выбранный чип, чтобы язык был виден текстом.
  • Подсказка внизу экрана объясняет, чем системный вариант отличается от русского и английского, и предупреждает про пересоздание приложения.
  • Две подписи в шапке экрана: имя раздела y83@language и короткая метка справа. Метка — код языка буквами: ru или en. При системном варианте там код языка самого телефона, а не слово «системный».
  • Кнопка «назад» в шапке возвращает на предыдущий экран.
  • Никаких других настроек тут нет — только язык. Формат времени, разряды батареи, шрифт и размеры текста живут в других разделах.

Технические данные

ПараметрЗначение
Вариантов языка3: Системный, Русский, English
Языков в сборке2: русский и английский
Где лежат переводы1214 русских строк, 1201 английских
Строк без перевода13, все помечены как непереводимые
Где хранится выборнастройки телефона, не в базе данных
Ключ настройкиодин, называется ui_language
Куда дублируется выборна Android 13+ и в системный выбор языка
Что происходит при сменеприложение пересоздаётся целиком
Экран возвращаетсяна тот же, где вы были
Где раздел в хабесекция App, пять карточек
Тайл на главнойне показывается, настроить нельзя
Работает без интернетада

Как читать экран

Экран маленький и весь состоит из трёх вещей: секции с чипами, строки «Сейчас» и абзаца-подсказки под ними. Никаких списков, переключателей и кнопок сохранения тут нет — язык применяется сразу по нажатию.

Все три чипа стоят в одну строку и не прокручиваются. На очень узком экране они могут оказаться теснее, чем на обычном.

Про системный вариант

Системный — это не отдельный перевод, а отказ от своего выбора: приложение берёт язык телефона. Телефон на русском — приложение на русском.

Так сделано специально. Если бы выбор всё время оставался зашитым в приложении, то смена языка в системных настройках Android 13 и новее перестала бы на него влиять. Сейчас обе настройки работают вместе: системная настроит приложение целиком, а эта — только язык интерфейса.

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

Про два языка, а не двадцать

В приложении всего два языка интерфейса — русский и английский. Никаких других в сборке нет, поэтому системный вариант на любом нерусском телефоне даёт английский: других переводов просто не из чего показать.

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

Почему переводов не ровно столько, сколько строк

Русских строк 1214, английских — 1201. Разница в 13 строк — это образцы текста на экране оформления: ваш вопрос, ответ агента, строка плана, блок размышлений, блок кода, подпись события. Они специально помечены как непереводимые и содержат оба языка внутри одной строки через косую черту.

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

Почему приложение пересоздаётся

Смена языка меняет не надписи на одном экране, а все строки в процессе разом. Чтобы не вычислять это вручную, приложение пересоздаёт себя целиком и читает строки заново. Отсюда и подсказка на экране, и ощущение короткой паузы при переключении.

Раньше из-за этого терялся экран: после переключения вы оказывались на главном. Сейчас этого нет — открытый экран запоминается и восстанавливается, поэтому можно спокойно переключить язык прямо на этом экране и сразу увидеть результат. Кнопка «назад» после этого работает как обычно.

Что ещё меняет язык

Язык влияет не только на надписи на экране. Он же определяет язык:

  • сообщений об ошибках и длинных подсказок, которые собираются вне экранов;
  • подписей кнопок и полей в диалогах;
  • имён и подписей, которые приложение показывает вне своих экранов, в том числе в списке приложений телефона.

Это работает даже для тех строк, которые читаются не из экрана, а из кода: сообщения об ошибках, тексты в уведомлениях, записи в журнал. Такие строки берут язык на лету и не отстают от интерфейса.

А вот на то, что пишет агент, язык не влияет никак. Ответы агента, текст его размышлений и названия файлов остаются такими, какие пришли от модели.

Что агент умеет

Агент может открыть этот экран командой открытия экрана language — это работает, проверено на живом устройстве.

Агент может прочитать текущий выбранный язык командой чтения настроек: он видит ключ ui_language со значением ru, en или system. На устройстве разработчика сейчас стоит английский, при том что телефон русский — так видно, что выбор именно здесь, а не системный.

Агент может и сменить язык: команда нажатия на элемент экрана умеет тапать по чипу. Но есть условие — телефон должен быть открыт и лежать на экране, а не в фоне. Проверено: пока приложение свёрнуто, чтение и нажатие на элементы отказываются работать и требуют сначала вывести приложение на первый план.

Отдельного инструмента «поставить язык» нет ни в мосте, ни среди инструментов агента. Смена языка — это обычное нажатие на экран, обходных команд нет.

Ограничения

  • Языков всего два. Системный вариант на нерусском телефоне даёт английский.
  • Выбрать язык отдельного агента или отдельного чата нельзя — язык общий для всего приложения.
  • Приложение пересоздаётся целиком: открытые всплывающие окна и диалоги закрываются, недописанный текст в поле ввода может потеряться.
  • На экране оформления часть подписей всегда на обоих языках сразу — это образцы, а не ошибка перевода.
  • Выбор языка хранится в настройках телефона. Сброс настроек приложения к заводским вернёт системный вариант.
  • Уведомление VPN всегда английское: на выбор языка оно не реагирует, потому что его текст написан в коде напрямую, без перевода.

Источник: docs/about/language.md. Страница собрана из документации проекта при сборке сайта — без пересказа.