feat(extension): implement full dynamic i18n support and automated consistency checks

This commit is contained in:
Koala
2026-06-01 01:05:46 +02:00
parent 3fcafbd081
commit fd47eb82b9
12 changed files with 1579 additions and 118 deletions
+177
View File
@@ -0,0 +1,177 @@
{
"LANG_CODE": "ru",
"HTML_CLASS": "lang-ru",
"APP_TITLE": "KoalaSync",
"TAB_ROOM": "Комната",
"TAB_ROOM_TOOLTIP": "Настройки комнаты и подключение",
"TAB_SYNC": "Синхро",
"TAB_SYNC_TOOLTIP": "Управление синхронизацией видео и действия",
"TAB_SETTINGS": "Опции",
"TAB_SETTINGS_TOOLTIP": "Настройки расширения",
"TAB_STATUS": "Статус",
"TAB_STATUS_TOOLTIP": "Дополнительная диагностика и журналы",
"BTN_CREATE_ROOM": "+ Создать комнату",
"MANUAL_CONNECT_HEADER": "Ручное подключение / Дополнительно",
"LABEL_SERVER": "Сервер",
"BTN_SERVER_OFFICIAL": "Официальный",
"BTN_SERVER_OFFICIAL_TOOLTIP": "Использовать официальный надежный сервер",
"BTN_SERVER_CUSTOM": "Свой",
"BTN_SERVER_CUSTOM_TOOLTIP": "Подключиться к своему выделенному серверу",
"PLACEHOLDER_SERVER_URL": "wss://ваш-сервер:3000",
"LABEL_ROOM_ID": "ID комнаты",
"LABEL_ROOM_ID_TOOLTIP": "Уникальный идентификатор вашей синхронной комнаты",
"PLACEHOLDER_ROOM_ID": "Введите ID комнаты",
"PLACEHOLDER_ROOM_ID_TOOLTIP": "Уникальный ID комнаты, к которой хотите присоединиться",
"LABEL_PASSWORD": "Пароль (Опционально)",
"LABEL_PASSWORD_TOOLTIP": "Дополнительный пароль для ограничения доступа к комнате",
"PLACEHOLDER_PASSWORD": "Пароль комнаты (опционально)",
"PLACEHOLDER_PASSWORD_TOOLTIP": "Пароль от комнаты (оставьте пустым, если его нет)",
"BTN_JOIN_ROOM": "Войти в комнату",
"BTN_JOIN_ROOM_TOOLTIP": "Подключиться к комнате",
"LABEL_PUBLIC_ROOMS": "Публичные комнаты",
"LABEL_PUBLIC_ROOMS_TOOLTIP": "Список публично доступных комнат на этом сервере",
"BTN_REFRESH": "ОБНОВИТЬ",
"BTN_REFRESH_TOOLTIP": "Обновить список публичных комнат",
"PUBLIC_ROOMS_REFRESHING": "Обновление...",
"LABEL_ACTIVE_ROOM": "Активная комната",
"LABEL_ACTIVE_ROOM_TOOLTIP": "Комната, к которой вы сейчас подключены",
"ACTIVE_ROOM_NONE": "НЕТ",
"ACTIVE_SERVER_OFFICIAL": "Официальный сервер",
"LABEL_INVITE_LINK": "Ссылка-приглашение",
"LABEL_INVITE_LINK_TOOLTIP": "Поделитесь этой ссылкой с друзьями, чтобы они вошли",
"LABEL_PEERS_IN_ROOM": "Участники в комнате",
"LABEL_PEERS_IN_ROOM_TOOLTIP": "Другие пользователи, подключенные к этой комнате",
"NO_PEERS_CONNECTED": "Нет подключенных участников",
"BTN_LEAVE_ROOM": "Выйти из комнаты",
"LABEL_SELECT_VIDEO": "Выбрать видео",
"LABEL_SELECT_VIDEO_TOOLTIP": "Выберите вкладку браузера, содержащую видео для синхронизации",
"OPTION_SELECT_TAB": "-- Выберите вкладку --",
"LABEL_REMOTE_CONTROL": "Дистанционное управление",
"BTN_COPY_INVITE": "📋 Ссылка",
"BTN_COPY_INVITE_TOOLTIP": "Копировать ссылку-приглашение",
"BTN_PLAY": "▶ Запуск",
"BTN_PLAY_TOOLTIP": "Отправить команду воспроизведения всем",
"BTN_PAUSE": "⏸ Пауза",
"BTN_PAUSE_TOOLTIP": "Отправить команду паузы всем",
"BTN_SYNC": "⚡ СИНХРО",
"BTN_SYNC_TOOLTIP": "Принудительно синхронизировать всех участников",
"OPTION_JUMP_TO_OTHERS": "Перейти к другим",
"OPTION_JUMP_TO_ME": "Синхронизировать по мне",
"OPTION_JUMP_MODE_TOOLTIP": "Выбрать цель синхронизации",
"LABEL_LAST_ACTIVITY": "Последняя активность",
"LABEL_LAST_ACTIVITY_TOOLTIP": "Показывает самую последнюю команду воспроизведения, паузы или перемотки",
"NO_RECENT_COMMANDS": "Нет последних команд",
"LOBBY_HEADER": "ЛОББИ СЕРИИ",
"LOBBY_WAITING_FOR": "🎬 Ожидание: \"{title}\"",
"LOBBY_WAITING_PEERS": "Ожидание участников...",
"BTN_SKIP_PLAY": "Пропустить и запустить",
"BTN_SKIP_PLAY_TOOLTIP": "Закрыть лобби и воспроизвести в любом случае",
"LOBBY_CONNECT_FIRST": "Сначала войдите в комнату",
"LOBBY_CONNECT_FIRST_DESC": "Вам необходимо войти в комнату по ссылке-приглашению или создать новую, чтобы синхронизировать видео.",
"BTN_CREATE_ROOM_ALT": "Создать новую комнату",
"BTN_CREATE_ROOM_ALT_TOOLTIP": "Создать новую случайную комнату и войти",
"LABEL_USERNAME": "Ваше имя пользователя",
"LABEL_USERNAME_TOOLTIP": "Имя пользователя помогает другим узнать вас.",
"PLACEHOLDER_USERNAME": "Анонимный Коала",
"LABEL_HIDE_CLUTTER": "Чистый список вкладок",
"LABEL_HIDE_CLUTTER_TOOLTIP": "Скрывает вкладки без видео и несвязанные домены для порядка",
"LABEL_AUTO_SYNC_NEXT": "Автосинхрон следующей серии",
"LABEL_AUTO_SYNC_NEXT_TOOLTIP": "Автоматически ставит на паузу и ждет всех при смене серии, затем запускает видео синхронно.",
"LABEL_AUTO_COPY_INVITE": "Автокопирование ссылки",
"LABEL_AUTO_COPY_INVITE_TOOLTIP": "Автоматически копирует ссылку-приглашение в буфер обмена при создании новой комнаты.",
"LABEL_NOTIFICATIONS": "Уведомления браузера",
"LABEL_NOTIFICATIONS_TOOLTIP": "Показывает системные уведомления, когда кто-то входит/выходит или запускает/приостанавливает воспроизведение.",
"LABEL_LANGUAGE": "Язык приложения",
"LABEL_LANGUAGE_TOOLTIP": "Выберите предпочтительный язык интерфейса расширения",
"LABEL_TROUBLESHOOTING": "Устранение неполадок",
"LABEL_TROUBLESHOOTING_TOOLTIP": "Инструменты для исправления проблем с подключением",
"BTN_REGEN_ID": "Сбросить Peer ID",
"BTN_REGEN_ID_TOOLTIP": "Сбросить ваш внутренний идентификатор и переподключиться",
"REGEN_ID_DESC": "Используйте при появлении ошибок дублирования идентификации.",
"LABEL_CONN_STATUS": "Статус подключения",
"LABEL_CONN_STATUS_TOOLTIP": "Текущий статус WebSocket-соединения с сервером",
"CONN_STATUS_DISCONNECTED": "Отключено",
"BTN_RETRY": "ПОВТОРИТЬ",
"BTN_RETRY_TOOLTIP": "Попробовать переподключиться к серверу",
"BTN_COPY_LOGS": "Копировать логи",
"BTN_COPY_LOGS_TOOLTIP": "Скопировать логи в буфер обмена для отправки",
"LABEL_VIDEO_DEBUG": "Отладочные данные видео",
"LABEL_VIDEO_DEBUG_TOOLTIP": "Технические сведения о выбранном видеоэлементе",
"VIDEO_DEBUG_EMPTY": "Вкладка не выбрана или видео не обнаружено.",
"LABEL_HISTORY": "История действий",
"LABEL_HISTORY_TOOLTIP": "Хронологический список всех команд синхронизации в комнате",
"HISTORY_EMPTY": "Нет недавней активности",
"LABEL_LOGS": "Логи (Последние 50)",
"LABEL_LOGS_TOOLTIP": "Технические системные сообщения подключения",
"BTN_CLEAR": "ОЧИСТИТЬ",
"BTN_CLEAR_TOOLTIP": "Очистить вывод логов",
"LABEL_GITHUB": "Репозиторий GitHub",
"BTN_ONBOARDING_SKIP": "Пропустить",
"BTN_ONBOARDING_SKIP_TOOLTIP": "Пропустить руководство",
"BTN_ONBOARDING_NEXT": "Далее",
"BTN_ONBOARDING_NEXT_TOOLTIP": "Перейти к следующему шагу",
"ONBOARDING_1_TITLE": "Добро пожаловать в KoalaSync!",
"ONBOARDING_1_TEXT": "Смотрите видео в идеальной синхронизации вместе — где бы вы ни находились. Давайте проведем небольшую экскурсию!",
"ONBOARDING_2_TITLE": "1. Создайте комнату",
"ONBOARDING_2_TEXT": "Начните здесь. Создайте комнату и поделитесь ссылкой-приглашением со своими друзьями.",
"ONBOARDING_3_TITLE": "2. Выберите видео",
"ONBOARDING_3_TEXT": "Выберите вкладку с видео для синхронизации. Запуск, пауза, перемотка — воспроизведение синхронизируется у всех.",
"ONBOARDING_4_TITLE": "3. Настройте профиль",
"ONBOARDING_4_TEXT": "Введите имя пользователя, чтобы друзья знали, кто совершает действия.",
"ONBOARDING_5_TITLE": "Всё готово!",
"ONBOARDING_5_TEXT": "Время готовить попкорн. Приятного совместного просмотра!",
"ERR_CONN_TIMEOUT": "Время ожидания подключения истекло. Пожалуйста, попробуйте снова.",
"ERR_INVALID_SERVER_URL": "Неверный формат URL-адреса сервера.",
"ERR_IDENTITY_NOT_LOADED": "Идентификатор еще не загружен. Подождите немного и повторите попытку.",
"ERR_NO_PEERS_TIME": "Нет других участников с известной позицией плеера. Выберите 'Синхронизировать по мне'.",
"ERR_NO_VIDEO_TAB": "Не удалось подключиться к вкладке с видео.",
"ERR_SELECT_VIDEO": "Пожалуйста, сначала выберите вкладку с видео!",
"TOAST_INVITE_COPIED": "Ссылка скопирована в буфер обмена!",
"TOAST_COPY_FAILED": "Не удалось скопировать ссылку в буфер обмена",
"TOAST_LOBBY_SKIPPED": "Ожидание серии отменено.",
"TOAST_LOBBY_SKIP_FAILED": "Не удалось отменить ожидание серии.",
"TOAST_LOGS_COPIED": "Скопировано!",
"TOAST_PEER_JOINED": "{name} вошел в комнату",
"TOAST_PEER_LEFT": "{name} вышел из комнаты",
"TOAST_PEER_ACTION": "{name}: {action}",
"STATUS_CONNECTED": "Подключено",
"STATUS_RECONNECTING": "Переподключение...",
"STATUS_CONNECTING": "Подключение...",
"STATUS_FAILED": "Ошибка",
"STATUS_DISCONNECTED": "Отключено",
"BTN_STATE_JOINING": "🚀 Вход...",
"BTN_STATE_RECONNECTING": "🔄 Переподключение...",
"BTN_STATE_PLAYING": "▶ Запуск...",
"BTN_STATE_PAUSING": "⏸ Пауза...",
"BTN_STATE_SYNCING_GROUP": "Синхронизация по группе ({time})...",
"BTN_STATE_SYNCING": "Синхронизация...",
"BTN_STATE_SYNCED": "✅ Синхронно!",
"NOTIF_PLAY": "запустил воспроизведение",
"NOTIF_PAUSE": "приостановил воспроизведение",
"NOTIF_SEEK": "перемотал видео",
"NOTIF_FORCE_PREPARE": "запустил принудительный синхрон",
"NOTIF_FORCE_EXECUTE": "синхронизировал воспроизведение у всех",
"DEBUG_NO_TAB": "Целевая вкладка не выбрана.",
"DEBUG_COMM_FAIL": "Не удалось связаться с плеером на вкладке.",
"EMPTY_PEERS_TITLE": "Участников пока нет",
"EMPTY_PEERS_HINT": "Поделитесь ссылкой-приглашением, чтобы начать",
"EMPTY_HISTORY_TITLE": "История действий пуста",
"EMPTY_HISTORY_HINT": "Запускайте, останавливайте или перематывайте видео, чтобы увидеть лог",
"EMPTY_LOGS_TITLE": "Журнал пуст",
"EMPTY_LOGS_HINT": "События подключения будут отображаться здесь",
"EMPTY_ROOMS_TITLE": "Нет активных комнат",
"EMPTY_ROOMS_HINT": "Создайте комнату или обновите список, чтобы найти публичные"
}