diff --git a/www/i18n-ext.js b/www/i18n-ext.js index 29c1229..f94725f 100644 --- a/www/i18n-ext.js +++ b/www/i18n-ext.js @@ -19,6 +19,7 @@ var I18nExtensions = (function() { 'de-DE': German, 'nl-NL': Dutch, 'fr': French, + 'ru': Russian, 'ar': Arabic }; @@ -143,6 +144,20 @@ var I18nExtensions = (function() { } } } + /** + * @type {ExtensionOf<'ru'>} + */ + function Russian(things, conditions) { + if (typeof conditions === 'string') + return conditions; + for (let index in things) { + let value = things[index]; + if (typeof value === 'number') { + if (value == 1) return conditions['single']; + else return conditions['multiple']; + } + } + } /** * @type {ExtensionOf<'ar'>} */ diff --git a/www/lang/list.json b/www/lang/list.json index 841057e..295f921 100644 --- a/www/lang/list.json +++ b/www/lang/list.json @@ -3,6 +3,7 @@ "de-DE": "Deutsch", "pl-PL": "Polski (Polska)", "fr": "Français (FR)", + "ru": "Русский (RU)", "zh-CN": "中文(简体字)", "zh-TW": "中文(正體字)", "zh-HK": "中文(香港字)", diff --git a/www/lang/ru.json b/www/lang/ru.json new file mode 100644 index 0000000..f240360 --- /dev/null +++ b/www/lang/ru.json @@ -0,0 +1,169 @@ +{ + "$language": "Русский (RU)", + "cat-printer": "Cat Printer", + "printer": "Принтер", + "device-": "Устройство:", + "refresh": "Обновить", + "mode-": "Режим:", + "canvas": "Холст", + "document": "Документ", + "insert-picture": "Вставить картинку", + "insert-text": "Вставить текст", + "help": "Справка", + "javascript-license-information": "Информация о лицензии JavaScript", + "settings": "Настройки", + "image": "Изображение", + "threshold-": "Порог", + "transmission-speed-": "Скорость передачи:", + "low": "Низкая", + "moderate": "Средняя", + "high": "Высокая", + "transparent-as-white": "Прозрачность белым цветом", + "misc": "Прочее", + "system": "Система", + "disable-animation": "Отключить анимации", + "exit": "Выход", + "error-message": "Сообщение об ошибке", + "preview": "Предварительный просмотр", + "print": "Печатать", + "expand": "Расширить", + "crop": "Кадрировать", + "scanning-for-devices": "Поиск устройств…", + "scan-time-": "Время сканирования:", + "-seconds": "секунд", + "no-available-devices-found": "Не найдено доступных устройств", + "found-0-available-devices": { + "single": "Найдено {0} доступное устройство", + "multiple": "Найдено {0} доступных устройств" + }, + "please-check-if-the-printer-is-down": "Проверьте, выключен ли принтер", + "printing": "Печатаем…", + "finished": "Выполнено", + "coming-soon": "Скоро появится…", + "dry-run": "Пробный прогон", + "dry-run-test-print-process-only": "Пробный прогон: только проверка процесса печати", + "you-can-close-this-page-manually": "Вы можете закрыть эту страницу вручную", + "please-enable-bluetooth": "Пожалуйста, включите Bluetooth", + "error-happened-please-check-error-message": "Произошла ошибка, посмотрите сообщение об ошибке", + "you-can-seek-for-help-with-detailed-info-below": "Вы можете запросить помощь используя детальную информацию, приведённую ниже", + "or-try-to-scan-longer": "Или попытайтесь искать дольше", + "print-to-cat-printer": "Распечатать на Cat Printer", + "supported-models-": "Поддерживаемые модели:", + "path-to-input-file-dash-for-stdin": "Путь к исходному файлу. '-' для чтения из stdin", + "dump-the-traffic": "Сделать дамп трафика", + "please-install-pyobjc-via-pip": "Пожалуйста, установите `pyobjc` через pip", + "please-install-bleak-via-pip": "Пожалуйста, установите `bleak` через pip", + "folder-printer_lib-is-incomplete-or-missing-please-check": "Каталог `printer_lib` неполный, или отсутствует, проверьте", + "input-is-not-pbm-image": "Исходный файл не является изображением в формате PBM", + "unsuitable-image-width-expected-0-got-1": "Неподходящая ширина изображения, ожидаемая {0}, фактическая {1}", + "broken-pbm-image": "Повреждённое изображение PBM", + "input-is-not-text-file": "Исходный файл не является текстовым", + "match-printer-with-this-name-or-address": "Искать принтер по этому имени или адресу", + "virtual-run-on-specified-model": "Виртуальный запуск на указанной модели", + "font-size-0": "Размер шрифта {0}", + "stopping": "Остановка", + "connecting": "Подключение", + "model-0-is-not-supported-yet": "Модель '{0}' ещё не поддерживается", + "invalid-address-0": "Неверный адрес: '{0}'", + "will-listen-on-all-addresses": "Сервер слушает на ВСЕХ адресах", + "serving-at-0": "Сервер слушает по адресу {0}", + "disconnecting-from-printer": "Отключение от принтера", + "connected-to-0-1": "Подключено к {0} {1}", + "flip-horizontally": "Отразить по горизонтали", + "flip-vertically": "Отразить по вертикали", + "dump-traffic": "Делать дамп трафика", + "right-to-left-text-order": "Текст справа налево", + "auto-wrap-line": "Автоматический перенос строк", + "process-as-": "Обрабатывать как:", + "text": "Текст", + "picture": "Изображение", + "pattern": "Узор", + "large-font": "Крупный шрифт", + "accessibility": "Специальные возможности", + "language": "Язык", + "layout": "Интерфейс", + "ok": "OK", + "cancel": "Отмена", + "yes": "Да", + "no": "Нет", + "about": "О программе", + "home-page-": "Домашняя страница:", + "contributors": "Участники проекта", + "developer": "Разработчик", + "collaborator": "Соавтор", + "translator": "Переводчик", + "all-users-and-developers": "Пользователи и разработчики", + "everyone-is-awesome": "Все замечательные!", + "license": "Лицензия", + "exiting": "Выполняется выход…", + + "dark-theme": "Тёмная тема", + "high-contrast": "Высокая контрастность", + "welcome": "Добро пожаловать!", + "copyright-and-license": "Авторские права и лицензия", + "some-rights-reserved": "Некоторые права защищены.", + "ENTER": "Enter", + "SPACE": "Пробел", + "ESCAPE": "Esc", + "TAB": "Tab", + "COMMA": "Запятая", + "DOT": "Точка", + "to-enter-keyboard-mode-press-tab": "Чтобы перейти в клавиатурный режим, нажмите Tab", + "usage-": "Использование:", + "positional-arguments-": "Позиционные аргументы:", + "options-": "Опции:", + "show-this-help-message": "Вывести эту справку", + "do-nothing": "Ничего не делать", + "scan-for-a-printer": "Искать принтер", + "text-printing-mode-with-options": "Режим печати текста с настройками", + "image-printing-options": "Настройки печати изображения", + "convert-input-image-with-imagemagick": "Конвертировать исходное изображение при помощи ImageMagick", + "reset-configuration-": "Сбросить настройки?", + "brightness-": "Яркость:", + "text-printing-mode": "Режим печати текста", + "internal-error-please-see-terminal": "Внутренняя ошибка, посмотрите в терминал", + "control-printer-thermal-strength": "Настройка температурной мощности принтера", + "strength-": "Мощность:", + "or-drag-file-to-below": "Или перетащите файл ниже", + "reset": "Сброс", + "cat-face-toward": "Кошка на лицевой стороне", + "quality-": "Качество:", + "print-quality": "Качество печати", + "show-more-options": "Показать больше настроек", + "text-font": "Шрифт", + "text-size": "Размер", + "enter-text": "Введите текст", + "wrap-text": "Перенос текста", + "you-can-see-all-javascript-programs-used": "Все JavaScript-программы, использующиеся в этом приложении - Свободное ПО.", + "javascript-resource": "Ресурс", + "javascript-license": "Лицензия", + "javascript-source": "Исходник", + "javascript-description": "Описание", + "javascript-everyjs-description": "Динамическая конкатенация всех скриптов разработки.", + "javascript-maincompjs-description": "Транспиляция всех скриптов разработки для обеспечения совместимости.", + "javascript-loaderjs-description": "Для динамической загрузки других скриптов и отката к резервному варианту в случае проблем.", + "javascript-polyfilljs-description": "Добавляет возможности, не поддерживаемые старыми браузерами.", + "javascript-i18nextjs-description": "“Расширения” I18n", + "javascript-i18njs-description": "Для поддержки интернационализации (поддержки многоязычности)", + "javascript-imagejs-description": "Для манипуляций с изображением на Canvas", + "javascript-accessibilityjs-description": "Обеспечение специальных возможностей", + "javascript-catprinter-description": "Основной скрипт Cat-Printer", + "free-software": "Свободное ПО", + "free-software-description": "ПО, которое уважает вашу свободу.", + "wrap-words-by-spaces": "Переносить слова по пробелам", + "minor-tweaks": "Незначительные настройки", + "serif": "Serif", + "sans-serif": "Sans Serif", + "monospace": "Monospace", + "rotate-image": "Повернуть изображение", + "test-unknown-device": "Тестировать неизвестную модель устройства", + "scan": "Поиск", + "pf2-font-not-found-or-broken-0": "PF2 шрифт не найден или повреждён: '{0}'", + "imagemagick-not-found": "ImageMagick не найден, пожалуйста, установите его и повторите попытку.", + "try-to-print-through-an-unknown-device": "Попытаться печатать на неизвестную модель устройства", + "scanning-for-all-bluetooth-devices-nearby": "Поиск всех Bluetooth устройств вокруг…", + "there-are-multiple-devices-": "Найдено несколько устройств:", + "choose-which-one-0-": "Выберите, какое? [{0}]: ", + "multiple-devices-found-please-specify-one": "Найдено несколько устройств, выберите какое-то одно", + "no-prompt-for-multiple-devices": "Не спрашивать, если найдено несколько устройств" +}