mirror of
git://f0xx.org/ac/ac-platform-web
synced 2026-07-29 04:18:31 +03:00
initial
This commit is contained in:
218
assets/i18n/en.json
Normal file
218
assets/i18n/en.json
Normal file
@@ -0,0 +1,218 @@
|
||||
{
|
||||
"app_name": "Android Cast Issues",
|
||||
"nav.home": "Home",
|
||||
"nav.reports": "Issues",
|
||||
"nav.tickets": "Tickets",
|
||||
"nav.logout": "Logout",
|
||||
"nav.toggle": "Navigation",
|
||||
"nav.home_desc": "Console home and workspace cards.",
|
||||
"nav.reports_desc": "Browse and triage issues.",
|
||||
"nav.tickets_desc": "Roadmap tasks, QA items, and tags.",
|
||||
"nav.graphs": "Graphs",
|
||||
"nav.graphs_desc": "Sessions, issues, and device activity.",
|
||||
"nav.remote": "Remote access",
|
||||
"nav.remote_desc": "WireGuard sessions and device reachability.",
|
||||
"nav.access": "Access",
|
||||
"nav.access_desc": "Roles, privilege sets, and operators.",
|
||||
"nav.builder": "Builder",
|
||||
"nav.builder_desc": "Docker CI for APK baking and OTA artifacts.",
|
||||
"theme.label": "Theme",
|
||||
"theme.dark": "Dark",
|
||||
"theme.light": "Light",
|
||||
"lang.label": "Language",
|
||||
"lang.en": "English",
|
||||
"lang.ru": "Russian",
|
||||
"home.title": "Console",
|
||||
"home.intro": "Issue triage, tickets, and session metrics — pick a workspace below.",
|
||||
"home.card_issues": "Issues",
|
||||
"home.card_issues_desc": "Browse and triage issues, tags, and fingerprints.",
|
||||
"home.card_new_issue_desc": "Log a new issue or task in one step.",
|
||||
"home.card_new_ticket_desc": "Create a roadmap or QA ticket in one step.",
|
||||
"home.card_tickets_desc": "Roadmap tasks, QA items, and workflow tags.",
|
||||
"home.card_graphs": "Graphs",
|
||||
"home.card_graphs_desc": "Sessions, issues, and device activity over time.",
|
||||
"home.card_short_links": "Short links",
|
||||
"home.card_short_links_desc": "Mint bearer tokens and shorten URLs for s.f0xx.org.",
|
||||
"home.more": "All services",
|
||||
"reports.title": "Issues",
|
||||
"reports.by_time": "By time",
|
||||
"reports.grouped": "Grouped",
|
||||
"reports.per_page": "Per page",
|
||||
"reports.search": "Search",
|
||||
"reports.search_placeholder": "Keywords (exceptions, devices, stack traces…)",
|
||||
"reports.clear": "Clear",
|
||||
"reports.loading": "Loading…",
|
||||
"reports.empty": "No reports yet.",
|
||||
"reports.status_showing": "Showing {from}–{to} of {total}",
|
||||
"reports.invalid_response": "Invalid response",
|
||||
"reports.load_failed": "Load failed",
|
||||
"reports.network_error": "Network error",
|
||||
"reports.mode_disabled_filter": "Disabled while a filter is active",
|
||||
"filter.banner_similar": "Similar reports for #{id}",
|
||||
"filter.banner_device": "Device: “{value}”",
|
||||
"filter.banner_abi": "ABI: {value}",
|
||||
"filter.banner_sdk": "SDK {value}",
|
||||
"filter.banner_os": "Android {value}",
|
||||
"filter.banner_app": "App {value}",
|
||||
"filter.banner_build": "Build {value}",
|
||||
"filter.banner_search": "Search: “{value}”",
|
||||
"filter.clear": "Clear filters",
|
||||
"pagination.previous": "← Previous",
|
||||
"pagination.next": "Next →",
|
||||
"pagination.previous_range": "← Previous ({before}/{through})",
|
||||
"pagination.next_range": "Next ({start}/{end}) →",
|
||||
"col.device": "Device",
|
||||
"col.app": "App",
|
||||
"col.os": "OS",
|
||||
"col.os_ver": "OS ver",
|
||||
"col.received": "Received",
|
||||
"col.rating": "Rating",
|
||||
"col.count": "Count",
|
||||
"col.fingerprint": "Fingerprint",
|
||||
"col.type": "Type",
|
||||
"col.last_generated": "Last generated",
|
||||
"col.last_received": "Last received",
|
||||
"col.tags": "Tags",
|
||||
"col.expand": "Expand",
|
||||
"col.drag": "Drag column",
|
||||
"col.drag_reorder": "Drag column to reorder",
|
||||
"graphs.brick_drag": "Drag chart to reorder",
|
||||
"graphs.session_deficit": "Session charts are empty. On the device: Developer settings → enable “Grab session stats”, cast a session, then wait for upload to graph_upload.php.",
|
||||
"row.show_summary": "Show summary",
|
||||
"row.open_report": "Click to open full report",
|
||||
"row.edit_tags": "Edit tags",
|
||||
"tag.new": "new",
|
||||
"tag.java": "Java",
|
||||
"tag.ndk": "NDK",
|
||||
"tag.android": "Android",
|
||||
"tag.edit_title": "Edit tags",
|
||||
"tag.close": "Close",
|
||||
"tag.label": "Label",
|
||||
"tag.color": "Color",
|
||||
"tag.add": "Add",
|
||||
"tag.add_tag": "Add tag",
|
||||
"tag.save": "Save",
|
||||
"tag.save_tags": "Save tags",
|
||||
"tag.suggestions": "Suggestions:",
|
||||
"tag.placeholder": "e.g. regression",
|
||||
"tag.hint_auto": "Auto tags (NDK / Java / Android / new) appear in the list. Add custom labels below.",
|
||||
"tag.hint_admin": "Sign in as admin to edit custom tags.",
|
||||
"tag.none_custom": "No custom tags yet.",
|
||||
"tag.none_preview": "No custom tags",
|
||||
"tag.remove": "Remove tag",
|
||||
"tag.saving": "Saving…",
|
||||
"tag.saved": "Saved",
|
||||
"tag.save_failed": "Save failed",
|
||||
"tag.workflow": "Workflow",
|
||||
"tag.filter_label": "Filter by tag",
|
||||
"tag.filter_mode": "Match",
|
||||
"tag.filter_and": "All tags (AND)",
|
||||
"tag.filter_or": "Any tag (OR)",
|
||||
"detail.back": "Back to list",
|
||||
"detail.title": "Issue report",
|
||||
"detail.report_meta": "Report {id} · {type}",
|
||||
"detail.tags": "Tags",
|
||||
"detail.device": "Device",
|
||||
"detail.app": "App",
|
||||
"detail.timing": "Timing",
|
||||
"detail.abis": "ABIs:",
|
||||
"detail.build": "Build:",
|
||||
"detail.generated": "Generated:",
|
||||
"detail.received": "Received:",
|
||||
"detail.fingerprint": "Fingerprint:",
|
||||
"detail.filter_device": "Show reports for similar devices",
|
||||
"detail.filter_os": "Show reports on this OS",
|
||||
"detail.filter_version": "Show reports for this app version",
|
||||
"detail.filter_build": "Show reports from this build",
|
||||
"detail.java_exception": "Java exception",
|
||||
"detail.native_crash": "Native issue",
|
||||
"detail.find_similar": "Find similar issues",
|
||||
"detail.thread": "Thread:",
|
||||
"detail.signal": "Signal:",
|
||||
"detail.session_context": "Session context (issue)",
|
||||
"detail.raw_json": "Raw JSON",
|
||||
"login.sign_in_hint": "Sign in to view anonymous issue reports",
|
||||
"login.username": "Username",
|
||||
"login.password": "Password",
|
||||
"login.submit": "Sign in",
|
||||
"login.hint_default": "Default: admin / admin",
|
||||
"login.register": "Register",
|
||||
"login.register_soon": "(coming soon)",
|
||||
"login.error": "Invalid credentials",
|
||||
"register.title": "Create account",
|
||||
"register.hint": "We will email a verification link before you can sign in.",
|
||||
"register.email": "Email",
|
||||
"register.username": "Username (optional)",
|
||||
"register.password": "Password",
|
||||
"register.submit": "Register",
|
||||
"register.back_login": "Back to sign in",
|
||||
"verify.title": "Email verification",
|
||||
"verify.ok": "Your email is verified. You can sign in and enroll two-factor authentication.",
|
||||
"verify.fail": "Invalid or expired link.",
|
||||
"verify.sign_in": "Sign in",
|
||||
"verify.register_again": "Register again",
|
||||
"twofa.title": "Two-factor authentication",
|
||||
"twofa.hint": "Enter the 6-digit code from your authenticator app.",
|
||||
"twofa.code": "Authentication code",
|
||||
"twofa.submit": "Continue",
|
||||
"twofa.cancel": "Cancel",
|
||||
"twofa.error": "Invalid code",
|
||||
"security.title": "Account security",
|
||||
"security.totp_intro": "Protect your account with a 6-digit authenticator app (recommended for alpha).",
|
||||
"security.start_totp": "Set up authenticator",
|
||||
"security.scan_qr": "Scan this QR code with your authenticator app, then enter a code to confirm.",
|
||||
"security.manual_secret": "Can't scan?",
|
||||
"security.confirm_totp": "Confirm enrollment",
|
||||
"security.totp_enabled": "Authenticator app is enrolled.",
|
||||
"security.remove_totp": "Remove authenticator",
|
||||
"security.back_console": "Back to console",
|
||||
"nav.security": "Security",
|
||||
"footer.copyright": "© Anton Afanaasyeu, {year}",
|
||||
"tickets.title": "Tickets",
|
||||
"issues.new": "New issue",
|
||||
"tickets.new": "New ticket",
|
||||
"ticket.create": "Create",
|
||||
"ticket.cancel": "Cancel",
|
||||
"ticket.title": "Title",
|
||||
"ticket.brief": "Brief",
|
||||
"ticket.body": "Description",
|
||||
"tickets.empty": "No tickets yet.",
|
||||
"tickets.col_issue": "Issue",
|
||||
"tickets.col_opened": "Opened",
|
||||
"tickets.col_env": "App / OS",
|
||||
"tickets.filter_tag": "Status tag",
|
||||
"tickets.filter_all": "All",
|
||||
"ticket.back": "Back to tickets",
|
||||
"ticket.detail_title": "Ticket",
|
||||
"ticket.id_label": "ID",
|
||||
"ticket.tag_hint": "Must include ticket and a status tag (open, in progress, closed, …).",
|
||||
"ticket.tag_readonly": "Only the owner or an admin can edit tags.",
|
||||
"ticket.issue": "Issue",
|
||||
"ticket.caption": "Caption",
|
||||
"ticket.summary": "Summary",
|
||||
"ticket.description": "Description",
|
||||
"ticket.workflow": "Workflow",
|
||||
"ticket.owner": "Owner",
|
||||
"ticket.verified_by": "Verified by",
|
||||
"ticket.timing": "Timing",
|
||||
"ticket.opened": "Opened",
|
||||
"ticket.created": "Created",
|
||||
"ticket.updated": "Updated",
|
||||
"ticket.save": "Save ticket",
|
||||
"ticket.source": "Source / context",
|
||||
"ticket.lifecycle": "Lifecycle",
|
||||
"ticket.assignees": "Assignees",
|
||||
"ticket.assignee_add": "Add assignee",
|
||||
"ticket.comments": "Comments",
|
||||
"ticket.comment_add": "Add comment",
|
||||
"ticket.comment_post": "Post comment",
|
||||
"ticket.attachments": "Attachments",
|
||||
"ticket.attach_link": "Add link",
|
||||
"ticket.attach_link_hint": "Google Docs, Sheets, Drive, Meet, or any HTTPS URL.",
|
||||
"ticket.attach_link_btn": "Attach link",
|
||||
"ticket.attach_file": "Upload file",
|
||||
"ticket.attach_file_hint": "Max 16 MiB — images, logs, pdf, zip, …",
|
||||
"ticket.attach_file_btn": "Upload",
|
||||
"ticket.link_title": "Title (optional)",
|
||||
"ticket.file_pick": "File"
|
||||
}
|
||||
196
assets/i18n/ru.json
Normal file
196
assets/i18n/ru.json
Normal file
@@ -0,0 +1,196 @@
|
||||
{
|
||||
"app_name": "Сбои Android Cast",
|
||||
"nav.home": "Главная",
|
||||
"nav.reports": "Задачи (Issues)",
|
||||
"nav.tickets": "Задачи",
|
||||
"tickets.title": "Задачи",
|
||||
"issues.new": "Новая проблема",
|
||||
"tickets.new": "Новый тикет",
|
||||
"ticket.create": "Создать",
|
||||
"ticket.cancel": "Отмена",
|
||||
"ticket.title": "Заголовок",
|
||||
"ticket.brief": "Кратко",
|
||||
"ticket.body": "Описание",
|
||||
"tickets.empty": "Задач пока нет.",
|
||||
"ticket.detail_title": "Задача",
|
||||
"nav.logout": "Выход",
|
||||
"nav.toggle": "Навигация",
|
||||
"nav.home_desc": "Главная консоли и карточки разделов.",
|
||||
"nav.reports_desc": "Просмотр и разбор issues.",
|
||||
"nav.tickets_desc": "Задачи roadmap, QA и теги.",
|
||||
"nav.graphs": "Графики",
|
||||
"nav.graphs_desc": "Сессии, issues и активность устройств.",
|
||||
"nav.remote": "Удалённый доступ",
|
||||
"nav.remote_desc": "Сессии WireGuard и доступ к устройствам.",
|
||||
"nav.access": "Доступ",
|
||||
"nav.access_desc": "Роли, наборы привилегий и операторы.",
|
||||
"nav.builder": "Сборщик",
|
||||
"nav.builder_desc": "Docker CI для сборки APK и OTA.",
|
||||
"theme.label": "Тема",
|
||||
"theme.dark": "Тёмная",
|
||||
"theme.light": "Светлая",
|
||||
"lang.label": "Язык",
|
||||
"lang.en": "English",
|
||||
"lang.ru": "Русский",
|
||||
"home.title": "Консоль",
|
||||
"home.intro": "Сбои, задачи и метрики сессий — выберите раздел ниже.",
|
||||
"home.card_issues": "Проблемы",
|
||||
"home.card_issues_desc": "Просмотр и разбор issues, тегов и отпечатков.",
|
||||
"home.card_new_issue_desc": "Создать новую проблему или задачу.",
|
||||
"home.card_new_ticket_desc": "Создать тикет roadmap или QA за один шаг.",
|
||||
"home.card_tickets_desc": "Задачи, QA и теги workflow.",
|
||||
"home.card_graphs": "Графики",
|
||||
"home.card_graphs_desc": "Сессии, issues и активность устройств.",
|
||||
"home.card_short_links": "Короткие ссылки",
|
||||
"home.card_short_links_desc": "Токены и сокращение URL для s.f0xx.org.",
|
||||
"home.more": "Все сервисы",
|
||||
"reports.title": "Issues",
|
||||
"reports.by_time": "По времени",
|
||||
"reports.grouped": "Группы",
|
||||
"reports.per_page": "На странице",
|
||||
"reports.search": "Поиск",
|
||||
"reports.search_placeholder": "Ключевые слова (исключения, устройства, стеки…)",
|
||||
"reports.clear": "Очистить",
|
||||
"reports.loading": "Загрузка…",
|
||||
"reports.empty": "Отчётов пока нет.",
|
||||
"reports.status_showing": "Показано {from}–{to} из {total}",
|
||||
"reports.invalid_response": "Некорректный ответ",
|
||||
"reports.load_failed": "Ошибка загрузки",
|
||||
"reports.network_error": "Сетевая ошибка",
|
||||
"reports.mode_disabled_filter": "Недоступно при активном фильтре",
|
||||
"filter.banner_similar": "Похожие отчёты для №{id}",
|
||||
"filter.banner_device": "Устройство: «{value}»",
|
||||
"filter.banner_abi": "ABI: {value}",
|
||||
"filter.banner_sdk": "SDK {value}",
|
||||
"filter.banner_os": "Android {value}",
|
||||
"filter.banner_app": "Приложение {value}",
|
||||
"filter.banner_build": "Сборка {value}",
|
||||
"filter.banner_search": "Поиск: «{value}»",
|
||||
"filter.clear": "Сбросить фильтры",
|
||||
"pagination.previous": "← Назад",
|
||||
"pagination.next": "Вперёд →",
|
||||
"pagination.previous_range": "← Назад ({before}/{through})",
|
||||
"pagination.next_range": "Вперёд ({start}/{end}) →",
|
||||
"col.device": "Устройство",
|
||||
"col.app": "Приложение",
|
||||
"col.os": "ОС",
|
||||
"col.os_ver": "Версия ОС",
|
||||
"col.received": "Получен",
|
||||
"col.rating": "Рейтинг",
|
||||
"col.count": "Кол-во",
|
||||
"col.fingerprint": "Отпечаток",
|
||||
"col.type": "Тип",
|
||||
"col.last_generated": "Создан",
|
||||
"col.last_received": "Получен",
|
||||
"col.tags": "Метки",
|
||||
"col.expand": "Развернуть",
|
||||
"col.drag": "Перетащить столбец",
|
||||
"col.drag_reorder": "Перетащите для смены порядка столбцов",
|
||||
"graphs.brick_drag": "Перетащите график для смены порядка",
|
||||
"graphs.session_deficit": "Графики сессий пусты. На устройстве: Настройки разработчика → «Grab session stats», проведите сессию трансляции и дождитесь загрузки в graph_upload.php.",
|
||||
"row.show_summary": "Показать сводку",
|
||||
"row.open_report": "Нажмите, чтобы открыть полный отчёт",
|
||||
"row.edit_tags": "Редактировать метки",
|
||||
"tag.new": "новый",
|
||||
"tag.java": "Java",
|
||||
"tag.ndk": "NDK",
|
||||
"tag.android": "Android",
|
||||
"tag.edit_title": "Редактирование меток",
|
||||
"tag.close": "Закрыть",
|
||||
"tag.label": "Название",
|
||||
"tag.color": "Цвет",
|
||||
"tag.add": "Добавить",
|
||||
"tag.add_tag": "Добавить метку",
|
||||
"tag.save": "Сохранить",
|
||||
"tag.save_tags": "Сохранить метки",
|
||||
"tag.suggestions": "Подсказки:",
|
||||
"tag.hint_auto": "Автометки (NDK / Java / Android / новый) в списке. Ниже можно добавить свои.",
|
||||
"tag.hint_admin": "Войдите как администратор, чтобы редактировать метки.",
|
||||
"tag.none_custom": "Пользовательских меток пока нет.",
|
||||
"tag.none_preview": "Нет пользовательских меток",
|
||||
"tag.remove": "Удалить метку",
|
||||
"tag.saving": "Сохранение…",
|
||||
"tag.saved": "Сохранено",
|
||||
"tag.save_failed": "Не удалось сохранить",
|
||||
"tag.workflow": "Статус",
|
||||
"tag.filter_label": "Фильтр по метке",
|
||||
"tag.filter_mode": "Совпадение",
|
||||
"tag.filter_and": "Все метки (И)",
|
||||
"tag.filter_or": "Любая метка (ИЛИ)",
|
||||
"detail.back": "К списку",
|
||||
"detail.title": "Issue-отчёт",
|
||||
"detail.report_meta": "Отчёт {id} · {type}",
|
||||
"detail.tags": "Метки",
|
||||
"detail.device": "Устройство",
|
||||
"detail.app": "Приложение",
|
||||
"detail.timing": "Время",
|
||||
"detail.abis": "ABI:",
|
||||
"detail.build": "Сборка:",
|
||||
"detail.generated": "Создан:",
|
||||
"detail.received": "Получен:",
|
||||
"detail.fingerprint": "Отпечаток:",
|
||||
"detail.filter_device": "Показать отчёты для похожих устройств",
|
||||
"detail.filter_os": "Показать отчёты с этой ОС",
|
||||
"detail.filter_version": "Показать отчёты для этой версии приложения",
|
||||
"detail.filter_build": "Показать отчёты этой сборки",
|
||||
"detail.java_exception": "Исключение Java",
|
||||
"detail.native_crash": "Нативный issue",
|
||||
"detail.find_similar": "Найти похожие отчёты",
|
||||
"detail.thread": "Поток:",
|
||||
"detail.signal": "Сигнал:",
|
||||
"detail.session_context": "Контекст сессии (issue)",
|
||||
"detail.raw_json": "Исходный JSON",
|
||||
"login.sign_in_hint": "Войдите для просмотра анонимных issue-отчётов",
|
||||
"login.username": "Имя пользователя",
|
||||
"login.password": "Пароль",
|
||||
"login.submit": "Войти",
|
||||
"login.hint_default": "По умолчанию: admin / admin",
|
||||
"login.register": "Регистрация",
|
||||
"login.register_soon": "(скоро)",
|
||||
"login.error": "Неверные учётные данные",
|
||||
"register.title": "Создать аккаунт",
|
||||
"register.hint": "Мы отправим ссылку для подтверждения email перед входом.",
|
||||
"register.email": "Email",
|
||||
"register.username": "Имя пользователя (необязательно)",
|
||||
"register.password": "Пароль",
|
||||
"register.submit": "Зарегистрироваться",
|
||||
"register.back_login": "Назад ко входу",
|
||||
"verify.title": "Подтверждение email",
|
||||
"verify.ok": "Email подтверждён. Войдите и настройте двухфакторную аутентификацию.",
|
||||
"verify.fail": "Недействительная или просроченная ссылка.",
|
||||
"verify.sign_in": "Войти",
|
||||
"verify.register_again": "Зарегистрироваться снова",
|
||||
"twofa.title": "Двухфакторная аутентификация",
|
||||
"twofa.hint": "Введите 6-значный код из приложения-аутентификатора.",
|
||||
"twofa.code": "Код аутентификации",
|
||||
"twofa.submit": "Продолжить",
|
||||
"twofa.cancel": "Отмена",
|
||||
"twofa.error": "Неверный код",
|
||||
"security.title": "Безопасность аккаунта",
|
||||
"security.totp_intro": "Защитите аккаунт приложением-аутентификатором (рекомендуется для альфы).",
|
||||
"security.start_totp": "Настроить аутентификатор",
|
||||
"security.scan_qr": "Отсканируйте QR-код и введите код для подтверждения.",
|
||||
"security.manual_secret": "Не удаётся сканировать?",
|
||||
"security.confirm_totp": "Подтвердить настройку",
|
||||
"security.totp_enabled": "Приложение-аутентификатор подключено.",
|
||||
"security.remove_totp": "Отключить аутентификатор",
|
||||
"security.back_console": "Назад в консоль",
|
||||
"nav.security": "Безопасность",
|
||||
"footer.copyright": "© Anton Afanaasyeu, {year}",
|
||||
"nav.tickets": "Тикеты",
|
||||
"ticket.lifecycle": "Жизненный цикл",
|
||||
"ticket.assignees": "Исполнители",
|
||||
"ticket.assignee_add": "Добавить",
|
||||
"ticket.comments": "Комментарии",
|
||||
"ticket.comment_add": "Новый комментарий",
|
||||
"ticket.comment_post": "Отправить",
|
||||
"ticket.attachments": "Вложения",
|
||||
"ticket.attach_link": "Ссылка",
|
||||
"ticket.attach_link_hint": "Google Docs, Таблицы, Drive, Meet или любой HTTPS URL.",
|
||||
"ticket.attach_link_btn": "Прикрепить",
|
||||
"ticket.attach_file": "Файл",
|
||||
"ticket.attach_file_hint": "До 16 МБ — изображения, логи, pdf, zip…",
|
||||
"ticket.attach_file_btn": "Загрузить",
|
||||
"ticket.link_title": "Название (необяз.)",
|
||||
"ticket.file_pick": "Файл"
|
||||
}
|
||||
Reference in New Issue
Block a user