feat(i18n): add Ukrainian (uk) locale support (#28061)

This commit is contained in:
MYMDO 2026-05-19 09:45:39 +03:00 committed by GitHub
parent 3bd304796b
commit cbd2620c46
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 1970 additions and 1 deletions

View File

@ -18,6 +18,7 @@ export type Locale =
| "ja" | "ja"
| "pl" | "pl"
| "ru" | "ru"
| "uk"
| "ar" | "ar"
| "no" | "no"
| "br" | "br"
@ -45,6 +46,7 @@ const LOCALES: readonly Locale[] = [
"ja", "ja",
"pl", "pl",
"ru", "ru",
"uk",
"bs", "bs",
"ar", "ar",
"no", "no",
@ -65,6 +67,7 @@ const INTL: Record<Locale, string> = {
ja: "ja", ja: "ja",
pl: "pl", pl: "pl",
ru: "ru", ru: "ru",
uk: "uk",
ar: "ar", ar: "ar",
no: "nb-NO", no: "nb-NO",
br: "pt-BR", br: "pt-BR",
@ -85,6 +88,7 @@ const LABEL_KEY: Record<Locale, keyof Dictionary> = {
ja: "language.ja", ja: "language.ja",
pl: "language.pl", pl: "language.pl",
ru: "language.ru", ru: "language.ru",
uk: "language.uk",
ar: "language.ar", ar: "language.ar",
no: "language.no", no: "language.no",
br: "language.br", br: "language.br",
@ -110,6 +114,7 @@ const loaders: Record<Exclude<Locale, "en">, () => Promise<Dictionary>> = {
ja: () => merge(import("@/i18n/ja"), import("@opencode-ai/ui/i18n/ja")), ja: () => merge(import("@/i18n/ja"), import("@opencode-ai/ui/i18n/ja")),
pl: () => merge(import("@/i18n/pl"), import("@opencode-ai/ui/i18n/pl")), pl: () => merge(import("@/i18n/pl"), import("@opencode-ai/ui/i18n/pl")),
ru: () => merge(import("@/i18n/ru"), import("@opencode-ai/ui/i18n/ru")), ru: () => merge(import("@/i18n/ru"), import("@opencode-ai/ui/i18n/ru")),
uk: () => merge(import("@/i18n/uk"), import("@opencode-ai/ui/i18n/uk")),
ar: () => merge(import("@/i18n/ar"), import("@opencode-ai/ui/i18n/ar")), ar: () => merge(import("@/i18n/ar"), import("@opencode-ai/ui/i18n/ar")),
no: () => merge(import("@/i18n/no"), import("@opencode-ai/ui/i18n/no")), no: () => merge(import("@/i18n/no"), import("@opencode-ai/ui/i18n/no")),
br: () => merge(import("@/i18n/br"), import("@opencode-ai/ui/i18n/br")), br: () => merge(import("@/i18n/br"), import("@opencode-ai/ui/i18n/br")),
@ -145,6 +150,7 @@ const localeMatchers: Array<{ locale: Locale; match: (language: string) => boole
{ locale: "ja", match: (language) => language.startsWith("ja") }, { locale: "ja", match: (language) => language.startsWith("ja") },
{ locale: "pl", match: (language) => language.startsWith("pl") }, { locale: "pl", match: (language) => language.startsWith("pl") },
{ locale: "ru", match: (language) => language.startsWith("ru") }, { locale: "ru", match: (language) => language.startsWith("ru") },
{ locale: "uk", match: (language) => language.startsWith("uk") },
{ locale: "ar", match: (language) => language.startsWith("ar") }, { locale: "ar", match: (language) => language.startsWith("ar") },
{ {
locale: "no", locale: "no",

View File

@ -416,6 +416,7 @@ export const dict = {
"language.no": "Norsk", "language.no": "Norsk",
"language.br": "Português (Brasil)", "language.br": "Português (Brasil)",
"language.bs": "Bosanski", "language.bs": "Bosanski",
"language.uk": "Українська",
"language.th": "ไทย", "language.th": "ไทย",
"language.tr": "Türkçe", "language.tr": "Türkçe",

View File

@ -12,12 +12,13 @@ import { dict as ko } from "./ko"
import { dict as no } from "./no" import { dict as no } from "./no"
import { dict as pl } from "./pl" import { dict as pl } from "./pl"
import { dict as ru } from "./ru" import { dict as ru } from "./ru"
import { dict as uk } from "./uk"
import { dict as th } from "./th" import { dict as th } from "./th"
import { dict as zh } from "./zh" import { dict as zh } from "./zh"
import { dict as zht } from "./zht" import { dict as zht } from "./zht"
import { dict as tr } from "./tr" import { dict as tr } from "./tr"
const locales = [ar, br, bs, da, de, es, fr, ja, ko, no, pl, ru, th, tr, zh, zht] const locales = [ar, br, bs, da, de, es, fr, ja, ko, no, pl, ru, uk, th, tr, zh, zht]
const keys = ["command.session.previous.unseen", "command.session.next.unseen"] as const const keys = ["command.session.previous.unseen", "command.session.next.unseen"] as const
describe("i18n parity", () => { describe("i18n parity", () => {

963
packages/app/src/i18n/uk.ts Normal file
View File

@ -0,0 +1,963 @@
export const dict = {
"command.category.suggested": "Рекомендовані",
"command.category.view": "Вигляд",
"command.category.project": "Проєкт",
"command.category.provider": "Провайдер",
"command.category.server": "Сервер",
"command.category.session": "Сесія",
"command.category.theme": "Тема",
"command.category.language": "Мова",
"command.category.file": "Файл",
"command.category.context": "Контекст",
"command.category.terminal": "Термінал",
"command.category.model": "Модель",
"command.category.mcp": "MCP",
"command.category.agent": "Агент",
"command.category.permissions": "Дозволи",
"command.category.workspace": "Робоча область",
"command.category.settings": "Налаштування",
"theme.scheme.system": "Системна",
"theme.scheme.light": "Світла",
"theme.scheme.dark": "Темна",
"command.sidebar.toggle": "Перемкнути бічну панель",
"command.project.open": "Відкрити проєкт",
"command.project.previous": "Попередній проєкт",
"command.project.next": "Наступний проєкт",
"command.project.index": "Перемкнути на проєкт {{index}}",
"command.provider.connect": "Підключити провайдера",
"command.server.switch": "Перемкнути сервер",
"command.settings.open": "Відкрити налаштування",
"command.session.previous": "Попередня сесія",
"command.session.next": "Наступна сесія",
"command.session.previous.unseen": "Попередня непрочитана сесія",
"command.session.next.unseen": "Наступна непрочитана сесія",
"command.session.archive": "Архівувати сесію",
"command.palette": "Палітра команд",
"command.theme.cycle": "Перемкнути тему",
"command.theme.set": "Використати тему: {{theme}}",
"command.theme.scheme.cycle": "Перемкнути кольорову схему",
"command.theme.scheme.set": "Використати кольорову схему: {{scheme}}",
"command.language.cycle": "Перемкнути мову",
"command.language.set": "Використати мову: {{language}}",
"command.session.new": "Нова сесія",
"command.file.open": "Відкрити файл",
"command.tab.close": "Закрити вкладку",
"command.context.addSelection": "Додати виділення до контексту",
"command.context.addSelection.description": "Додати вибрані рядки з поточного файлу",
"command.input.focus": "Фокус на полі введення",
"command.terminal.toggle": "Перемкнути термінал",
"command.fileTree.toggle": "Перемкнути дерево файлів",
"command.review.toggle": "Перемкнути огляд",
"command.terminal.new": "Новий термінал",
"command.terminal.new.description": "Створити нову вкладку термінала",
"command.steps.toggle": "Перемкнути кроки",
"command.steps.toggle.description": "Показати або приховати кроки для поточного повідомлення",
"command.message.previous": "Попереднє повідомлення",
"command.message.previous.description": "Перейти до попереднього повідомлення користувача",
"command.message.next": "Наступне повідомлення",
"command.message.next.description": "Перейти до наступного повідомлення користувача",
"command.model.choose": "Вибрати модель",
"command.model.choose.description": "Вибрати іншу модель",
"command.mcp.toggle": "Перемкнути MCP",
"command.mcp.toggle.description": "Перемкнути MCP",
"command.agent.cycle": "Перемкнути агента",
"command.agent.cycle.description": "Перемкнути на наступного агента",
"command.agent.cycle.reverse": "Перемкнути агента в зворотному напрямку",
"command.agent.cycle.reverse.description": "Перемкнути на попереднього агента",
"command.model.variant.cycle": "Перемкнути рівень мислення",
"command.model.variant.cycle.description": "Перемкнути на наступний рівень зусилля",
"command.prompt.mode.shell": "Команда",
"command.prompt.mode.normal": "Запит",
"command.permissions.autoaccept.enable": "Автоматично приймати дозволи",
"command.permissions.autoaccept.disable": "Зупинити автоматичне прийняття дозволів",
"command.workspace.toggle": "Перемкнути робочі області",
"command.workspace.toggle.description": "Увімкнути або вимкнути декілька робочих областей на бічній панелі",
"command.session.undo": "Скасувати",
"command.session.undo.description": "Скасувати останнє повідомлення",
"command.session.redo": "Повторити",
"command.session.redo.description": "Повторити останнє скасоване повідомлення",
"command.session.compact": "Стиснути сесію",
"command.session.compact.description": "Підсумувати сесію, щоб зменшити розмір контексту",
"command.session.fork": "Відгалузити від повідомлення",
"command.session.fork.description": "Створити нову сесію з попереднього повідомлення",
"command.session.share": "Поділитися сесією",
"command.session.share.description": "Поділитися цією сесією та скопіювати URL у буфер обміну",
"command.session.unshare": "Припинити поширення сесії",
"command.session.unshare.description": "Припинити поширення цієї сесії",
"palette.search.placeholder": "Пошук файлів, команд і сесій",
"palette.empty": "Результатів не знайдено",
"palette.group.commands": "Команди",
"palette.group.files": "Файли",
"dialog.provider.search.placeholder": "Пошук провайдерів",
"dialog.provider.empty": "Провайдерів не знайдено",
"dialog.provider.group.popular": "Популярні",
"dialog.provider.group.other": "Інші",
"dialog.provider.tag.recommended": "Рекомендовані",
"dialog.provider.opencode.note": "Відібрані моделі, включаючи Claude, GPT, Gemini та інші",
"dialog.provider.opencode.tagline": "Надійні оптимізовані моделі",
"dialog.provider.opencodeGo.tagline": "Недорога підписка для всіх",
"dialog.provider.anthropic.note": "Прямий доступ до моделей Claude, включаючи Pro та Max",
"dialog.provider.copilot.note": "Моделі AI для допомоги в кодуванні через GitHub Copilot",
"dialog.provider.openai.note": "Моделі GPT для швидких і універсальних завдань AI",
"dialog.provider.google.note": "Моделі Gemini для швидких структурованих відповідей",
"dialog.provider.openrouter.note": "Доступ до всіх підтримуваних моделей від одного провайдера",
"dialog.provider.vercel.note": "Уніфікований доступ до моделей AI з інтелектуальною маршрутизацією",
"dialog.model.select.title": "Вибрати модель",
"dialog.model.search.placeholder": "Пошук моделей",
"dialog.model.empty": "Немає результатів моделей",
"dialog.model.manage": "Керувати моделями",
"dialog.model.manage.description": "Налаштуйте, які моделі відображатимуться у виборі моделей.",
"dialog.model.manage.provider.toggle": "Перемкнути всі моделі {{provider}}",
"dialog.model.unpaid.freeModels.title": "Безкоштовні моделі від OpenCode",
"dialog.model.unpaid.addMore.title": "Додати більше моделей від популярних провайдерів",
"dialog.provider.viewAll": "Показати більше провайдерів",
"provider.connect.title": "Підключити {{provider}}",
"provider.connect.title.anthropicProMax": "Увійти з Claude Pro/Max",
"provider.connect.selectMethod": "Виберіть спосіб входу для {{provider}}.",
"provider.connect.method.apiKey": "Ключ API",
"provider.connect.status.inProgress": "Авторизація виконується...",
"provider.connect.status.waiting": "Очікування авторизації...",
"provider.connect.status.failed": "Авторизація не вдалася: {{error}}",
"provider.connect.apiKey.description":
"Введіть ключ API {{provider}}, щоб підключити обліковий запис і використовувати моделі {{provider}} у OpenCode.",
"provider.connect.apiKey.label": "Ключ API {{provider}}",
"provider.connect.apiKey.placeholder": "Ключ API",
"provider.connect.apiKey.required": "Ключ API обов'язковий",
"provider.connect.opencodeZen.line1":
"OpenCode Zen надає доступ до відібраного набору надійних оптимізованих моделей для агентів кодування.",
"provider.connect.opencodeZen.line2":
"З одним ключем API ви отримаєте доступ до таких моделей, як Claude, GPT, Gemini, GLM та інших.",
"provider.connect.opencodeZen.visit.prefix": "Відвідайте ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": ", щоб отримати ключ API.",
"provider.connect.oauth.code.visit.prefix": "Відвідайте ",
"provider.connect.oauth.code.visit.link": "це посилання",
"provider.connect.oauth.code.visit.suffix":
", щоб отримати код авторизації, підключити обліковий запис і використовувати моделі {{provider}} у OpenCode.",
"provider.connect.oauth.code.label": "Код авторизації {{method}}",
"provider.connect.oauth.code.placeholder": "Код авторизації",
"provider.connect.oauth.code.required": "Код авторизації обов'язковий",
"provider.connect.oauth.code.invalid": "Недійсний код авторизації",
"provider.connect.oauth.auto.visit.prefix": "Відвідайте ",
"provider.connect.oauth.auto.visit.link": "це посилання",
"provider.connect.oauth.auto.visit.suffix":
" і введіть код нижче, щоб підключити обліковий запис і використовувати моделі {{provider}} у OpenCode.",
"provider.connect.oauth.auto.confirmationCode": "Код підтвердження",
"provider.connect.toast.connected.title": "{{provider}} підключено",
"provider.connect.toast.connected.description": "Моделі {{provider}} тепер доступні для використання.",
"provider.custom.title": "Користувацький провайдер",
"provider.custom.description.prefix": "Налаштуйте провайдера, сумісного з OpenAI. Перегляньте ",
"provider.custom.description.link": "документацію з налаштування провайдера",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "ID провайдера",
"provider.custom.field.providerID.placeholder": "myprovider",
"provider.custom.field.providerID.description": "Малі літери, цифри, дефіси або підкреслення",
"provider.custom.field.name.label": "Відображувана назва",
"provider.custom.field.name.placeholder": "Мій AI Провайдер",
"provider.custom.field.baseURL.label": "Базовий URL",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "Ключ API",
"provider.custom.field.apiKey.placeholder": "Ключ API",
"provider.custom.field.apiKey.description": "Необов'язково. Залиште порожнім, якщо ви керуєте авторизацією через заголовки.",
"provider.custom.models.label": "Моделі",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "model-id",
"provider.custom.models.name.label": "Назва",
"provider.custom.models.name.placeholder": "Відображувана назва",
"provider.custom.models.remove": "Видалити модель",
"provider.custom.models.add": "Додати модель",
"provider.custom.headers.label": "Заголовки (необов'язково)",
"provider.custom.headers.key.label": "Заголовок",
"provider.custom.headers.key.placeholder": "Назва-Заголовка",
"provider.custom.headers.value.label": "Значення",
"provider.custom.headers.value.placeholder": "значення",
"provider.custom.headers.remove": "Видалити заголовок",
"provider.custom.headers.add": "Додати заголовок",
"provider.custom.error.providerID.required": "ID провайдера обов'язкове",
"provider.custom.error.providerID.format": "Використовуйте малі літери, цифри, дефіси або підкреслення",
"provider.custom.error.providerID.exists": "ID провайдера вже існує",
"provider.custom.error.name.required": "Відображувана назва обов'язкова",
"provider.custom.error.baseURL.required": "Базовий URL обов'язковий",
"provider.custom.error.baseURL.format": "Має починатися з http:// або https://",
"provider.custom.error.required": "Обов'язково",
"provider.custom.error.duplicate": "Дублікат",
"provider.disconnect.toast.disconnected.title": "{{provider}} відключено",
"provider.disconnect.toast.disconnected.description": "Моделі {{provider}} більше недоступні.",
"model.tag.free": "Безкоштовно",
"model.tag.latest": "Остання",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
"model.provider.xai": "xAI",
"model.provider.meta": "Meta",
"model.input.text": "текст",
"model.input.image": "зображення",
"model.input.audio": "аудіо",
"model.input.video": "відео",
"model.input.pdf": "pdf",
"model.tooltip.allows": "Дозволяє: {{inputs}}",
"model.tooltip.reasoning.allowed": "Підтримує мислення",
"model.tooltip.reasoning.none": "Без мислення",
"model.tooltip.context": "Ліміт контексту {{limit}}",
"common.search.placeholder": "Пошук",
"common.goBack": "Назад",
"common.goForward": "Вперед",
"common.loading": "Завантаження",
"common.loading.ellipsis": "...",
"common.cancel": "Скасувати",
"common.open": "Відкрити",
"common.connect": "Підключити",
"common.disconnect": "Відключити",
"common.continue": "Продовжити",
"common.submit": "Надіслати",
"common.save": "Зберегти",
"common.saving": "Збереження...",
"common.default": "За замовчуванням",
"common.attachment": "вкладення",
"prompt.placeholder.shell": "Введіть команду термінала... {{example}}",
"prompt.placeholder.normal": "Запитайте що завгодно... \"{{example}}\"",
"prompt.placeholder.simple": "Запитайте що завгодно...",
"prompt.placeholder.summarizeComments": "Підсумувати коментарі…",
"prompt.placeholder.summarizeComment": "Підсумувати коментар…",
"prompt.mode.shell": "Команда",
"prompt.mode.normal": "Запит",
"prompt.mode.shell.exit": "esc для виходу",
"session.child.promptDisabled": "Сесії підагентів не можна надсилати запити.",
"session.child.backToParent": "Назад до основної сесії.",
"prompt.example.1": "Виправити TODO у коді",
"prompt.example.2": "Який технологічний стек цього проєкту?",
"prompt.example.3": "Виправити зламані тести",
"prompt.example.4": "Пояснити, як працює автентифікація",
"prompt.example.5": "Знайти та виправити вразливості безпеки",
"prompt.example.6": "Додати модульні тести для сервісу користувача",
"prompt.example.7": "Рефакторити цю функцію, щоб зробити її більш читабельною",
"prompt.example.8": "Що означає ця помилка?",
"prompt.example.9": "Допоможіть мені налагодити цю проблему",
"prompt.example.10": "Згенерувати документацію API",
"prompt.example.11": "Оптимізувати запити до бази даних",
"prompt.example.12": "Додати валідацію введення",
"prompt.example.13": "Створити новий компонент для...",
"prompt.example.14": "Як розгорнути цей проєкт?",
"prompt.example.15": "Перевірити мій код на відповідність найкращим практикам",
"prompt.example.16": "Додати обробку помилок до цієї функції",
"prompt.example.17": "Пояснити цей регулярний вираз",
"prompt.example.18": "Конвертувати це в TypeScript",
"prompt.example.19": "Додати логування по всьому коду",
"prompt.example.20": "Які залежності застарілі?",
"prompt.example.21": "Допоможіть написати скрипт міграції",
"prompt.example.22": "Реалізувати кешування для цього ендпоінта",
"prompt.example.23": "Додати посторінкову навігацію до цього списку",
"prompt.example.24": "Створити команду CLI для...",
"prompt.example.25": "Як тут працюють змінні середовища?",
"prompt.popover.emptyResults": "Немає відповідних результатів",
"prompt.popover.emptyCommands": "Немає відповідних команд",
"prompt.dropzone.label": "Перетягніть сюди зображення, PDF або текстові файли",
"prompt.dropzone.file.label": "Перетягніть, щоб @згадати файл",
"prompt.slash.badge.custom": "користувацький",
"prompt.slash.badge.skill": "навичка",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "активний",
"prompt.context.includeActiveFile": "Включити активний файл",
"prompt.context.removeActiveFile": "Видалити активний файл з контексту",
"prompt.context.removeFile": "Видалити файл з контексту",
"prompt.action.attachFile": "Додати файли",
"prompt.attachment.remove": "Видалити вкладення",
"prompt.action.send": "Надіслати",
"prompt.action.stop": "Зупинити",
"prompt.toast.pasteUnsupported.title": "Непідтримуване вкладення",
"prompt.toast.pasteUnsupported.description": "Сюди можна прикріплювати лише зображення, PDF або текстові файли.",
"prompt.toast.modelAgentRequired.title": "Виберіть агента та модель",
"prompt.toast.modelAgentRequired.description": "Виберіть агента та модель перед надсиланням запиту.",
"prompt.toast.worktreeCreateFailed.title": "Не вдалося створити робоче дерево",
"prompt.toast.sessionCreateFailed.title": "Не вдалося створити сесію",
"prompt.toast.shellSendFailed.title": "Не вдалося надіслати команду термінала",
"prompt.toast.commandSendFailed.title": "Не вдалося надіслати команду",
"prompt.toast.promptSendFailed.title": "Не вдалося надіслати запит",
"prompt.toast.promptSendFailed.description": "Не вдалося отримати сесію",
"dialog.mcp.title": "MCP",
"dialog.mcp.description": "{{enabled}} з {{total}} увімкнено",
"dialog.mcp.empty": "MCP не налаштовано",
"dialog.lsp.empty": "LSP автоматично виявлені за типами файлів",
"dialog.plugins.empty": "Плагіни налаштовані в opencode.json",
"mcp.status.connected": "підключено",
"mcp.status.failed": "помилка",
"mcp.status.needs_auth": "потрібна авторизація",
"mcp.status.disabled": "вимкнено",
"mcp.auth.clickToAuthenticate": "Натисніть для автентифікації",
"dialog.fork.empty": "Немає повідомлень для відгалуження",
"dialog.directory.search.placeholder": "Пошук папок",
"dialog.directory.empty": "Папок не знайдено",
"app.server.unreachable": "Не вдалося досягти {{server}}",
"app.server.retrying": "Автоматичне повторення...",
"app.server.otherServers": "Інші сервери",
"dialog.server.title": "Сервери",
"dialog.server.description": "Перемкніть сервер OpenCode, до якого підключається ця програма.",
"dialog.server.search.placeholder": "Пошук серверів",
"dialog.server.empty": "Ще немає серверів",
"dialog.server.add.title": "Додати сервер",
"dialog.server.add.url": "Адреса сервера",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "Не вдалося підключитися до сервера",
"dialog.server.add.checking": "Перевірка...",
"dialog.server.add.button": "Додати сервер",
"dialog.server.add.name": "Назва сервера (необов'язково)",
"dialog.server.add.namePlaceholder": "Localhost",
"dialog.server.add.username": "Ім'я користувача (необов'язково)",
"dialog.server.add.usernamePlaceholder": "ім'я користувача",
"dialog.server.add.password": "Пароль (необов'язково)",
"dialog.server.add.passwordPlaceholder": "пароль",
"dialog.server.edit.title": "Редагувати сервер",
"dialog.server.default.title": "Сервер за замовчуванням",
"dialog.server.default.description":
"Підключатися до цього сервера під час запуску програми замість запуску локального сервера. Потребує перезапуску.",
"dialog.server.default.none": "Сервер не вибрано",
"dialog.server.default.set": "Встановити поточний сервер як сервер за замовчуванням",
"dialog.server.default.clear": "Очистити",
"dialog.server.action.remove": "Видалити сервер",
"dialog.server.menu.edit": "Редагувати",
"dialog.server.menu.default": "Встановити за замовчуванням",
"dialog.server.menu.defaultRemove": "Видалити за замовчуванням",
"dialog.server.menu.delete": "Видалити",
"dialog.server.current": "Поточний сервер",
"dialog.server.status.default": "За замовчуванням",
"server.row.noUsername": "без імені користувача",
"dialog.project.edit.title": "Редагувати проєкт",
"dialog.project.edit.name": "Назва",
"dialog.project.edit.icon": "Іконка",
"dialog.project.edit.icon.alt": "Іконка проєкту",
"dialog.project.edit.icon.hint": "Натисніть або перетягніть зображення",
"dialog.project.edit.icon.recommended": "Рекомендовано: 128x128px",
"dialog.project.edit.color": "Колір",
"dialog.project.edit.color.select": "Вибрати колір {{color}}",
"dialog.project.edit.worktree.startup": "Скрипт запуску робочої області",
"dialog.project.edit.worktree.startup.description": "Виконується після створення нової робочої області (worktree).",
"dialog.project.edit.worktree.startup.placeholder": "напр. bun install",
"dialog.releaseNotes.action.getStarted": "Розпочати",
"dialog.releaseNotes.action.next": "Далі",
"dialog.releaseNotes.action.hideFuture": "Не показувати це в майбутньому",
"dialog.releaseNotes.media.alt": "Попередній перегляд релізу",
"context.breakdown.title": "Розподіл контексту",
"context.breakdown.note": "Приблизний розподіл вхідних токенів. \"Інше\" включає визначення інструментів і накладні витрати.",
"context.breakdown.system": "Система",
"context.breakdown.user": "Користувач",
"context.breakdown.assistant": "Асистент",
"context.breakdown.tool": "Виклики інструментів",
"context.breakdown.other": "Інше",
"context.systemPrompt.title": "Системний запит",
"context.rawMessages.title": "Сировинні повідомлення",
"context.stats.session": "Сесія",
"context.stats.messages": "Повідомлення",
"context.stats.provider": "Провайдер",
"context.stats.model": "Модель",
"context.stats.limit": "Ліміт контексту",
"context.stats.totalTokens": "Всього токенів",
"context.stats.usage": "Використання",
"context.stats.inputTokens": "Вхідні токени",
"context.stats.outputTokens": "Вихідні токени",
"context.stats.reasoningTokens": "Токени мислення",
"context.stats.cacheTokens": "Токени кешу (читання/запис)",
"context.stats.userMessages": "Повідомлення користувача",
"context.stats.assistantMessages": "Повідомлення асистента",
"context.stats.totalCost": "Загальна вартість",
"context.stats.sessionCreated": "Сесію створено",
"context.stats.lastActivity": "Остання активність",
"context.usage.tokens": "Токени",
"context.usage.usage": "Використання",
"context.usage.cost": "Вартість",
"context.usage.clickToView": "Натисніть, щоб переглянути контекст",
"context.usage.view": "Переглянути використання контексту",
"language.en": "English",
"language.zh": "简体中文",
"language.zht": "繁體中文",
"language.ko": "한국어",
"language.de": "Deutsch",
"language.es": "Español",
"language.fr": "Français",
"language.da": "Dansk",
"language.ja": "日本語",
"language.pl": "Polski",
"language.ru": "Русский",
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
"language.bs": "Bosanski",
"language.uk": "Українська",
"language.th": "ไทย",
"language.tr": "Türkçe",
"toast.language.title": "Мова",
"toast.language.description": "Перемкнено на {{language}}",
"toast.theme.title": "Тему змінено",
"toast.scheme.title": "Кольорова схема",
"toast.workspace.enabled.title": "Робочі області увімкнено",
"toast.workspace.enabled.description": "Кілька робочих дерев тепер відображаються на бічній панелі",
"toast.workspace.disabled.title": "Робочі області вимкнено",
"toast.workspace.disabled.description": "Тільки головне робоче дерево відображається на бічній панелі",
"toast.permissions.autoaccept.on.title": "Автоматичне прийняття дозволів",
"toast.permissions.autoaccept.on.description": "Запити дозволів будуть автоматично схвалюватися",
"toast.permissions.autoaccept.off.title": "Автоматичне прийняття дозволів зупинено",
"toast.permissions.autoaccept.off.description": "Запити дозволів вимагатимуть схвалення",
"toast.model.none.title": "Модель не вибрано",
"toast.model.none.description": "Підключіть провайдера, щоб підсумувати цю сесію",
"toast.file.loadFailed.title": "Не вдалося завантажити файл",
"toast.file.listFailed.title": "Не вдалося отримати список файлів",
"toast.context.noLineSelection.title": "Не вибрано рядків",
"toast.context.noLineSelection.description": "Спочатку виберіть діапазон рядків у вкладці файлу.",
"toast.session.share.copyFailed.title": "Не вдалося скопіювати URL у буфер обміну",
"toast.session.share.success.title": "Сесію опубліковано",
"toast.session.share.success.description": "Посилання скопійовано в буфер обміну!",
"toast.session.share.failed.title": "Не вдалося опублікувати сесію",
"toast.session.share.failed.description": "Під час публікації сесії сталася помилка",
"toast.session.unshare.success.title": "Поширення сесії припинено",
"toast.session.unshare.success.description": "Поширення сесії успішно припинено!",
"toast.session.unshare.failed.title": "Не вдалося припинити поширення сесії",
"toast.session.unshare.failed.description": "Під час припинення поширення сесії сталася помилка",
"toast.session.listFailed.title": "Не вдалося завантажити сесії для {{project}}",
"toast.project.reloadFailed.title": "Не вдалося перезавантажити {{project}}",
"toast.update.title": "Доступне оновлення",
"toast.update.description": "Нова версія OpenCode ({{version}}) тепер доступна для встановлення.",
"toast.update.action.installRestart": "Встановити та перезапустити",
"toast.update.action.notYet": "Не зараз",
"error.page.title": "Щось пішло не так",
"error.page.description": "Під час завантаження програми сталася помилка.",
"error.page.details.label": "Деталі помилки",
"error.page.action.restart": "Перезапустити",
"error.page.action.report": "Повідомити про помилку",
"error.page.action.reported": "Помилку повідомлено",
"error.page.action.checking": "Перевірка...",
"error.page.action.checkUpdates": "Перевірити оновлення",
"error.page.action.updateTo": "Оновити до {{version}}",
"error.page.circular": "[Циклічне]",
"error.page.report.prefix": "Будь ласка, повідомте про цю помилку команді OpenCode",
"error.page.report.discord": "на Discord",
"error.page.version": "Версія: {{version}}",
"error.dev.rootNotFound":
"Кореневий елемент не знайдено. Ви забули додати його до index.html? Або, можливо, атрибут id було написано з помилкою?",
"error.globalSync.connectFailed": "Не вдалося підключитися до сервера. Чи працює сервер за адресою `{{url}}`?",
"error.globalSDK.noServerAvailable": "Сервер недоступний",
"error.globalSDK.serverNotAvailable": "Сервер недоступний",
"error.childStore.persistedCacheCreateFailed": "Не вдалося створити постійний кеш",
"error.childStore.persistedProjectMetadataCreateFailed": "Не вдалося створити постійні метадані проєкту",
"error.childStore.persistedProjectIconCreateFailed": "Не вдалося створити постійну іконку проєкту",
"error.childStore.storeCreateFailed": "Не вдалося створити сховище",
"directory.error.invalidUrl": "Недійсний каталог у URL.",
"error.chain.unknown": "Невідома помилка",
"error.server.invalidConfiguration": "Недійсна конфігурація",
"error.chain.causedBy": "Причина:",
"error.chain.apiError": "Помилка API",
"error.chain.status": "Статус: {{status}}",
"error.chain.retryable": "Повторювано: {{retryable}}",
"error.chain.responseBody": "Тіло відповіді:\n{{body}}",
"error.chain.didYouMean": "Можливо, ви мали на увазі: {{suggestions}}",
"error.chain.modelNotFound": "Модель не знайдено: {{provider}}/{{model}}",
"error.chain.checkConfig": "Перевірте назви провайдерів/моделей у конфігурації (opencode.json)",
"error.chain.mcpFailed": "Сервер MCP \"{{name}}\" не працює. Зверніть увагу, OpenCode ще не підтримує автентифікацію MCP.",
"error.chain.providerAuthFailed": "Автентифікація провайдера не вдалася ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
"Не вдалося ініціалізувати провайдера \"{{provider}}\". Перевірте облікові дані та конфігурацію.",
"error.chain.configJsonInvalid": "Файл конфігурації {{path}} не є дійсним JSON(C)",
"error.chain.configJsonInvalidWithMessage": "Файл конфігурації {{path}} не є дійсним JSON(C): {{message}}",
"error.chain.configDirectoryTypo":
"Каталог \"{{dir}}\" у {{path}} недійсний. Перейменуйте каталог на \"{{suggestion}}\" або видаліть його. Це поширена помилка.",
"error.chain.configFrontmatterError": "Не вдалося розібрати frontmatter у {{path}}:\n{{message}}",
"error.chain.configInvalid": "Файл конфігурації {{path}} недійсний",
"error.chain.configInvalidWithMessage": "Файл конфігурації {{path}} недійсний: {{message}}",
"notification.permission.title": "Потрібен дозвіл",
"notification.permission.description": "{{sessionTitle}} у {{projectName}} потребує дозволу",
"notification.question.title": "Запитання",
"notification.question.description": "{{sessionTitle}} у {{projectName}} має запитання",
"notification.action.goToSession": "Перейти до сесії",
"notification.session.responseReady.title": "Відповідь готова",
"notification.session.error.title": "Помилка сесії",
"notification.session.error.fallbackDescription": "Сталася помилка",
"home.recentProjects": "Нещодавні проєкти",
"home.empty.title": "Немає нещодавніх проєктів",
"home.empty.description": "Почніть, відкривши локальний проєкт",
"session.tab.session": "Сесія",
"session.tab.review": "Огляд",
"session.tab.context": "Контекст",
"session.panel.reviewAndFiles": "Огляд і файли",
"session.review.filesChanged": "Змінено файлів: {{count}}",
"session.review.change.one": "Зміна",
"session.review.change.other": "Зміни",
"session.review.loadingChanges": "Завантаження змін...",
"session.review.empty": "У цій сесії ще немає змін",
"session.review.noVcs": "Систему контролю версій Git не виявлено, зміни не відображаються",
"session.review.noVcs.createGit.title": "Створити Git-репозиторій",
"session.review.noVcs.createGit.description": "Відстежуйте, переглядайте та скасовуйте зміни в цьому проєкті",
"session.review.noVcs.createGit.actionLoading": "Створення Git-репозиторію...",
"session.review.noVcs.createGit.action": "Створити Git-репозиторій",
"session.review.noSnapshot": "Відстеження знімків вимкнено в конфігурації, тому зміни сесії недоступні",
"session.review.noChanges": "Немає змін",
"session.review.noUncommittedChanges": "Ще немає незафіксованих змін",
"session.review.noBranchChanges": "Ще немає змін у гілці",
"session.files.selectToOpen": "Виберіть файл для відкриття",
"session.files.all": "Усі файли",
"session.files.empty": "Немає файлів",
"session.files.binaryContent": "Бінарний файл (вміст не може бути відображено)",
"session.messages.renderEarlier": "Відобразити раніші повідомлення",
"session.messages.loadingEarlier": "Завантаження раніших повідомлень...",
"session.messages.loadEarlier": "Завантажити раніші повідомлення",
"session.messages.loading": "Завантаження повідомлень...",
"session.messages.jumpToLatest": "Перейти до останніх",
"session.context.addToContext": "Додати {{selection}} до контексту",
"session.todo.title": "Завдання",
"session.todo.collapse": "Згорнути",
"session.todo.expand": "Розгорнути",
"session.todo.progress": "Виконано {{done}} з {{total}} завдань",
"session.question.progress": "{{current}} з {{total}} запитань",
"session.followupDock.summary.one": "{{count}} повідомлення в черзі",
"session.followupDock.summary.other": "{{count}} повідомлень у черзі",
"session.followupDock.sendNow": "Надіслати зараз",
"session.followupDock.edit": "Редагувати",
"session.followupDock.collapse": "Згорнути повідомлення в черзі",
"session.followupDock.expand": "Розгорнути повідомлення в черзі",
"session.revertDock.summary.one": "{{count}} скасоване повідомлення",
"session.revertDock.summary.other": "{{count}} скасованих повідомлень",
"session.revertDock.collapse": "Згорнути скасовані повідомлення",
"session.revertDock.expand": "Розгорнути скасовані повідомлення",
"session.revertDock.restore": "Відновити повідомлення",
"session.new.title": "Створити що завгодно",
"session.new.worktree.main": "Основна гілка",
"session.new.worktree.mainWithBranch": "Основна гілка ({{branch}})",
"session.new.worktree.create": "Створити нове робоче дерево",
"session.new.lastModified": "Востаннє змінено",
"session.header.search.placeholder": "Пошук {{project}}",
"session.header.searchFiles": "Пошук файлів",
"session.header.openIn": "Відкрити в",
"session.header.open.action": "Відкрити {{app}}",
"session.header.open.ariaLabel": "Відкрити в {{app}}",
"session.header.open.menu": "Параметри відкриття",
"session.header.open.copyPath": "Копіювати шлях",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Провідник файлів",
"session.header.open.fileManager": "Файловий менеджер",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
"session.header.open.app.zed": "Zed",
"session.header.open.app.textmate": "TextMate",
"session.header.open.app.antigravity": "Antigravity",
"session.header.open.app.terminal": "Термінал",
"session.header.open.app.iterm2": "iTerm2",
"session.header.open.app.ghostty": "Ghostty",
"session.header.open.app.warp": "Warp",
"session.header.open.app.xcode": "Xcode",
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.powershell": "PowerShell",
"session.header.open.app.sublimeText": "Sublime Text",
"status.popover.trigger": "Статус",
"status.popover.ariaLabel": "Конфігурації серверів",
"status.popover.tab.servers": "Сервери",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "Плагіни",
"status.popover.action.manageServers": "Керувати серверами",
"session.share.popover.title": "Опублікувати в інтернеті",
"session.share.popover.description.shared":
"Ця сесія є публічною в інтернеті. Вона доступна будь-кому за посиланням.",
"session.share.popover.description.unshared":
"Опублікуйте сесію публічно в інтернеті. Вона буде доступна будь-кому за посиланням.",
"session.share.action.share": "Поділитися",
"session.share.action.publish": "Опублікувати",
"session.share.action.publishing": "Публікація...",
"session.share.action.unpublish": "Скасувати публікацію",
"session.share.action.unpublishing": "Скасування публікації...",
"session.share.action.view": "Переглянути",
"session.share.copy.copied": "Скопійовано",
"session.share.copy.copyLink": "Копіювати посилання",
"lsp.tooltip.none": "Немає серверів LSP",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "Завантаження запиту...",
"terminal.loading": "Завантаження термінала...",
"terminal.title": "Термінал",
"terminal.title.numbered": "Термінал {{number}}",
"terminal.close": "Закрити термінал",
"terminal.connectionLost.title": "З'єднання втрачено",
"terminal.connectionLost.abnormalClose": "WebSocket закрито аномально: {{code}}",
"terminal.connectionLost.description":
"З'єднання з терміналом було перервано. Це може статися під час перезапуску сервера.",
"common.closeTab": "Закрити вкладку",
"common.dismiss": "Відхилити",
"common.moreCountSuffix": " (ще {{count}})",
"common.requestFailed": "Запит не виконано",
"common.moreOptions": "Більше опцій",
"common.learnMore": "Дізнатися більше",
"common.rename": "Перейменувати",
"common.reset": "Скинути",
"common.archive": "Архівувати",
"common.delete": "Видалити",
"common.close": "Закрити",
"common.edit": "Редагувати",
"common.loadMore": "Завантажити більше",
"common.key.esc": "ESC",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
"common.key.meta": "Meta",
"common.key.space": "Пробіл",
"common.key.backspace": "Backspace",
"common.key.enter": "Enter",
"common.key.tab": "Tab",
"common.key.delete": "Delete",
"common.key.home": "Home",
"common.key.end": "End",
"common.key.pageUp": "Page Up",
"common.key.pageDown": "Page Down",
"common.key.insert": "Insert",
"common.unknown": "невідомо",
"common.time.justNow": "Щойно",
"common.time.minutesAgo.short": "{{count}} хв тому",
"common.time.hoursAgo.short": "{{count}} год тому",
"common.time.daysAgo.short": "{{count}} дн тому",
"sidebar.menu.toggle": "Перемкнути меню",
"sidebar.nav.projectsAndSessions": "Проєкти та сесії",
"sidebar.settings": "Налаштування",
"sidebar.help": "Довідка",
"sidebar.workspaces.enable": "Увімкнути робочі області",
"sidebar.workspaces.disable": "Вимкнути робочі області",
"sidebar.gettingStarted.title": "Початок роботи",
"sidebar.gettingStarted.line1": "OpenCode містить безкоштовні моделі, тому ви можете почати негайно.",
"sidebar.gettingStarted.line2": "Підключіть будь-якого провайдера, щоб використовувати моделі, включаючи Claude, GPT, Gemini тощо.",
"sidebar.project.recentSessions": "Нещодавні сесії",
"sidebar.project.viewAllSessions": "Переглянути всі сесії",
"sidebar.project.clearNotifications": "Очистити сповіщення",
"sidebar.empty.title": "Немає відкритих проєктів",
"sidebar.empty.description": "Відкрийте проєкт, щоб почати",
"debugBar.ariaLabel": "Діагностика продуктивності розробки",
"debugBar.na": "н/д",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Останній завершений перехід маршруту, що торкається сторінки сесії, виміряний від запуску маршрутизатора до першого відображення після стабілізації.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Поточна кількість кадрів за секунду за останні 5 секунд.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Найгірший час кадру за останні 5 секунд.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Кадри понад 32 мс за останні 5 секунд.",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "Заблокований час і кількість довгих завдань за останні 5 секунд. Макс. завдання: {{max}}.",
"debugBar.delay.label": "DELAY",
"debugBar.delay.tip": "Найгірша спостережувана затримка введення за останні 5 секунд.",
"debugBar.inp.label": "INP",
"debugBar.inp.tip":
"Приблизна тривалість взаємодії за останні 5 секунд. Це схоже на INP, а не на офіційний Web Vitals INP.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Сукупний зсув макета за весь час роботи програми.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Використана купа JS проти ліміту купи. Тільки Chromium.",
"debugBar.mem.tip": "Використана купа JS проти ліміту купи. {{used}} з {{limit}}.",
"app.name.desktop": "OpenCode Desktop",
"settings.section.desktop": "Робочий стіл",
"settings.section.server": "Сервер",
"settings.tab.general": "Загальні",
"settings.tab.shortcuts": "Скорочення",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "Інтеграція WSL",
"settings.desktop.wsl.description": "Запускати сервер OpenCode всередині WSL на Windows.",
"settings.general.section.appearance": "Зовнішній вигляд",
"settings.general.section.advanced": "Додатково",
"settings.general.section.notifications": "Системні сповіщення",
"settings.general.section.updates": "Оновлення",
"settings.general.section.sounds": "Звукові ефекти",
"settings.general.section.feed": "Стрічка",
"settings.general.section.display": "Дисплей",
"settings.general.row.language.title": "Мова",
"settings.general.row.language.description": "Змінити мову інтерфейсу OpenCode",
"settings.general.row.shell.title": "Командна оболонка термінала",
"settings.general.row.shell.description":
"Виберіть оболонку для термінала. Сумісні оболонки також використовуються для викликів інструментів агента.",
"settings.general.row.shell.autoDefault": "Авто (за замовчуванням)",
"settings.general.row.shell.terminalOnly": "тільки термінал",
"settings.general.row.appearance.title": "Зовнішній вигляд",
"settings.general.row.appearance.description": "Налаштуйте вигляд OpenCode на вашому пристрої",
"settings.general.row.colorScheme.title": "Кольорова схема",
"settings.general.row.colorScheme.description": "Виберіть, чи OpenCode використовує системну, світлу або темну тему",
"settings.general.row.theme.title": "Тема",
"settings.general.row.theme.description": "Налаштуйте тему OpenCode.",
"settings.general.row.font.title": "Шрифт коду",
"settings.general.row.font.description": "Налаштуйте шрифт, який використовується в блоках коду",
"settings.general.row.terminalFont.title": "Шрифт термінала",
"settings.general.row.terminalFont.description": "Налаштуйте шрифт, який використовується в терміналі",
"settings.general.row.uiFont.title": "Шрифт інтерфейсу",
"settings.general.row.uiFont.description": "Налаштуйте шрифт, який використовується в інтерфейсі",
"settings.general.row.followup.title": "Поведінка продовження",
"settings.general.row.followup.description": "Виберіть, чи продовження виконується негайно, чи чекає в черзі",
"settings.general.row.followup.option.queue": "Черга",
"settings.general.row.followup.option.steer": "Керування",
"settings.general.row.showFileTree.title": "Дерево файлів",
"settings.general.row.showFileTree.description": "Показувати перемикач і панель дерева файлів у сесіях на робочому столі",
"settings.general.row.showNavigation.title": "Елементи навігації",
"settings.general.row.showNavigation.description": "Показувати кнопки назад і вперед у заголовку робочого столу",
"settings.general.row.showSearch.title": "Палітра команд",
"settings.general.row.showSearch.description": "Показувати кнопку пошуку та палітри команд у заголовку робочого столу",
"settings.general.row.showTerminal.title": "Термінал",
"settings.general.row.showTerminal.description": "Показувати кнопку термінала в заголовку робочого столу",
"settings.general.row.showStatus.title": "Статус сервера",
"settings.general.row.showStatus.description": "Показувати кнопку статусу сервера в заголовку робочого столу",
"settings.general.row.reasoningSummaries.title": "Показувати підсумки мислення",
"settings.general.row.reasoningSummaries.description": "Відображати підсумки мислення моделі на часовій шкалі",
"settings.general.row.shellToolPartsExpanded.title": "Розгортати частини інструменту оболонки",
"settings.general.row.shellToolPartsExpanded.description":
"Показувати частини інструменту оболонки розгорнутими за замовчуванням на часовій шкалі",
"settings.general.row.editToolPartsExpanded.title": "Розгортати частини інструменту редагування",
"settings.general.row.editToolPartsExpanded.description":
"Показувати частини інструментів редагування, запису та патчів розгорнутими за замовчуванням на часовій шкалі",
"settings.general.row.showSessionProgressBar.title": "Показувати індикатор прогресу сесії",
"settings.general.row.showSessionProgressBar.description":
"Відображати анімований індикатор прогресу вгорі сесії, коли агент працює",
"settings.general.row.wayland.title": "Використовувати нативний Wayland",
"settings.general.row.wayland.description": "Вимкнути резервний X11 на Wayland. Потребує перезапуску.",
"settings.general.row.wayland.tooltip":
"На Linux з моніторами з різною частотою оновлення нативний Wayland може бути більш стабільним.",
"settings.general.row.releaseNotes.title": "Нотатки до релізу",
"settings.general.row.releaseNotes.description": "Показувати спливаючі вікна \"Що нового\" після оновлень",
"settings.updates.row.startup.title": "Перевіряти оновлення під час запуску",
"settings.updates.row.startup.description": "Автоматично перевіряти наявність оновлень під час запуску OpenCode",
"settings.updates.row.check.title": "Перевірити оновлення",
"settings.updates.row.check.description": "Вручну перевірити наявність оновлень і встановити, якщо доступні",
"settings.updates.action.checkNow": "Перевірити зараз",
"settings.updates.action.checking": "Перевірка...",
"settings.updates.toast.latest.title": "У вас актуальна версія",
"settings.updates.toast.latest.description": "Ви використовуєте останню версію OpenCode.",
"sound.option.none": "Немає",
"sound.option.alert01": "Alert 01",
"sound.option.alert02": "Alert 02",
"sound.option.alert03": "Alert 03",
"sound.option.alert04": "Alert 04",
"sound.option.alert05": "Alert 05",
"sound.option.alert06": "Alert 06",
"sound.option.alert07": "Alert 07",
"sound.option.alert08": "Alert 08",
"sound.option.alert09": "Alert 09",
"sound.option.alert10": "Alert 10",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "Nope 01",
"sound.option.nope02": "Nope 02",
"sound.option.nope03": "Nope 03",
"sound.option.nope04": "Nope 04",
"sound.option.nope05": "Nope 05",
"sound.option.nope06": "Nope 06",
"sound.option.nope07": "Nope 07",
"sound.option.nope08": "Nope 08",
"sound.option.nope09": "Nope 09",
"sound.option.nope10": "Nope 10",
"sound.option.nope11": "Nope 11",
"sound.option.nope12": "Nope 12",
"sound.option.yup01": "Yup 01",
"sound.option.yup02": "Yup 02",
"sound.option.yup03": "Yup 03",
"sound.option.yup04": "Yup 04",
"sound.option.yup05": "Yup 05",
"sound.option.yup06": "Yup 06",
"settings.general.notifications.agent.title": "Агент",
"settings.general.notifications.agent.description":
"Показувати системне сповіщення, коли агент завершує роботу або потребує уваги",
"settings.general.notifications.permissions.title": "Дозволи",
"settings.general.notifications.permissions.description": "Показувати системне сповіщення, коли потрібен дозвіл",
"settings.general.notifications.errors.title": "Помилки",
"settings.general.notifications.errors.description": "Показувати системне сповіщення, коли виникає помилка",
"settings.general.sounds.agent.title": "Агент",
"settings.general.sounds.agent.description": "Відтворювати звук, коли агент завершує роботу або потребує уваги",
"settings.general.sounds.permissions.title": "Дозволи",
"settings.general.sounds.permissions.description": "Відтворювати звук, коли потрібен дозвіл",
"settings.general.sounds.errors.title": "Помилки",
"settings.general.sounds.errors.description": "Відтворювати звук, коли виникає помилка",
"settings.shortcuts.title": "Скорочення клавіш",
"settings.shortcuts.reset.button": "Скинути до стандартних",
"settings.shortcuts.reset.toast.title": "Скорочення скинуто",
"settings.shortcuts.reset.toast.description": "Скорочення клавіш були скинуті до стандартних.",
"settings.shortcuts.conflict.title": "Скорочення вже використовується",
"settings.shortcuts.conflict.description": "{{keybind}} вже призначено для {{titles}}.",
"settings.shortcuts.unassigned": "Не призначено",
"settings.shortcuts.pressKeys": "Натисніть клавіші",
"settings.shortcuts.search.placeholder": "Пошук скорочень",
"settings.shortcuts.search.empty": "Скорочень не знайдено",
"settings.shortcuts.group.general": "Загальні",
"settings.shortcuts.group.session": "Сесія",
"settings.shortcuts.group.navigation": "Навігація",
"settings.shortcuts.group.modelAndAgent": "Модель та агент",
"settings.shortcuts.group.terminal": "Термінал",
"settings.shortcuts.group.prompt": "Запит",
"settings.providers.title": "Провайдери",
"settings.providers.description": "Налаштування провайдерів будуть доступні тут.",
"settings.providers.section.connected": "Підключені провайдери",
"settings.providers.connected.empty": "Немає підключених провайдерів",
"settings.providers.connected.environmentDescription": "Підключено зі змінних середовища",
"settings.providers.section.popular": "Популярні провайдери",
"settings.providers.custom.description": "Додайте провайдера, сумісного з OpenAI, за базовим URL.",
"settings.providers.tag.environment": "Середовище",
"settings.providers.tag.config": "Конфігурація",
"settings.providers.tag.custom": "Користувацький",
"settings.providers.tag.other": "Інше",
"settings.models.title": "Моделі",
"settings.models.description": "Налаштування моделей будуть доступні тут.",
"settings.agents.title": "Агенти",
"settings.agents.description": "Налаштування агентів будуть доступні тут.",
"settings.commands.title": "Команди",
"settings.commands.description": "Налаштування команд будуть доступні тут.",
"settings.mcp.title": "MCP",
"settings.mcp.description": "Налаштування MCP будуть доступні тут.",
"settings.permissions.title": "Дозволи",
"settings.permissions.description": "Керуйте тим, які інструменти сервер може використовувати за замовчуванням.",
"settings.permissions.section.tools": "Інструменти",
"settings.permissions.toast.updateFailed.title": "Не вдалося оновити дозволи",
"settings.permissions.action.allow": "Дозволити",
"settings.permissions.action.ask": "Запитувати",
"settings.permissions.action.deny": "Заборонити",
"settings.permissions.tool.read.title": "Читання",
"settings.permissions.tool.read.description": "Читання файлу (відповідає шляху файлу)",
"settings.permissions.tool.edit.title": "Редагування",
"settings.permissions.tool.edit.description": "Зміна файлів, включаючи редагування, запис і патчі",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Зіставлення файлів за допомогою glob-шаблонів",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "Пошук вмісту файлів за допомогою регулярних виразів",
"settings.permissions.tool.list.title": "Список",
"settings.permissions.tool.list.description": "Список файлів у каталозі",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Запуск команд оболонки",
"settings.permissions.tool.task.title": "Завдання",
"settings.permissions.tool.task.description": "Запуск підагентів",
"settings.permissions.tool.skill.title": "Навичка",
"settings.permissions.tool.skill.description": "Завантаження навички за назвою",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "Виконання запитів мовного сервера",
"settings.permissions.tool.todowrite.title": "Todo Write",
"settings.permissions.tool.todowrite.description": "Оновлення списку завдань",
"settings.permissions.tool.webfetch.title": "Web Fetch",
"settings.permissions.tool.webfetch.description": "Отримання вмісту з URL",
"settings.permissions.tool.websearch.title": "Web Search",
"settings.permissions.tool.websearch.description": "Пошук в інтернеті",
"settings.permissions.tool.external_directory.title": "Зовнішній каталог",
"settings.permissions.tool.external_directory.description": "Доступ до файлів за межами каталогу проєкту",
"settings.permissions.tool.doom_loop.title": "Цикл приреченості",
"settings.permissions.tool.doom_loop.description": "Виявлення повторюваних викликів інструментів з однаковими вхідними даними",
"session.delete.failed.title": "Не вдалося видалити сесію",
"session.delete.title": "Видалити сесію",
"session.delete.confirm": 'Видалити сесію "{{name}}"?',
"session.delete.button": "Видалити сесію",
"workspace.new": "Нова робоча область",
"workspace.type.local": "локальна",
"workspace.type.sandbox": "пісочниця",
"workspace.create.failed.title": "Не вдалося створити робочу область",
"workspace.delete.failed.title": "Не вдалося видалити робочу область",
"workspace.resetting.title": "Скидання робочої області",
"workspace.resetting.description": "Це може зайняти хвилину.",
"workspace.reset.failed.title": "Не вдалося скинути робочу область",
"workspace.reset.success.title": "Робочу область скинуто",
"workspace.reset.success.description": "Робоча область тепер відповідає гілці за замовчуванням.",
"workspace.error.stillPreparing": "Робоча область все ще готується",
"workspace.status.checking": "Перевірка незлитих змін...",
"workspace.status.error": "Не вдалося перевірити статус git.",
"workspace.status.clean": "Незлитих змін не виявлено.",
"workspace.status.dirty": "Виявлено незлиті зміни в цій робочій області.",
"workspace.delete.title": "Видалити робочу область",
"workspace.delete.confirm": 'Видалити робочу область "{{name}}"?',
"workspace.delete.button": "Видалити робочу область",
"workspace.reset.title": "Скинути робочу область",
"workspace.reset.confirm": 'Скинути робочу область "{{name}}"?',
"workspace.reset.button": "Скинути робочу область",
"workspace.reset.archived.none": "Жодна активна сесія не буде заархівована.",
"workspace.reset.archived.one": "1 сесію буде заархівовано.",
"workspace.reset.archived.many": "{{count}} сесій буде заархівовано.",
"workspace.reset.note": "Це скине робочу область, щоб вона відповідала гілці за замовчуванням.",
}

View File

@ -11,6 +11,7 @@ import { dict as da } from "~/i18n/da"
import { dict as ja } from "~/i18n/ja" import { dict as ja } from "~/i18n/ja"
import { dict as pl } from "~/i18n/pl" import { dict as pl } from "~/i18n/pl"
import { dict as ru } from "~/i18n/ru" import { dict as ru } from "~/i18n/ru"
import { dict as uk } from "~/i18n/uk"
import { dict as ar } from "~/i18n/ar" import { dict as ar } from "~/i18n/ar"
import { dict as no } from "~/i18n/no" import { dict as no } from "~/i18n/no"
import { dict as br } from "~/i18n/br" import { dict as br } from "~/i18n/br"
@ -35,6 +36,7 @@ export function i18n(locale: Locale): Dict {
if (locale === "ja") return { ...base, ...ja } if (locale === "ja") return { ...base, ...ja }
if (locale === "pl") return { ...base, ...pl } if (locale === "pl") return { ...base, ...pl }
if (locale === "ru") return { ...base, ...ru } if (locale === "ru") return { ...base, ...ru }
if (locale === "uk") return { ...base, ...uk }
if (locale === "ar") return { ...base, ...ar } if (locale === "ar") return { ...base, ...ar }
if (locale === "no") return { ...base, ...no } if (locale === "no") return { ...base, ...no }
if (locale === "br") return { ...base, ...br } if (locale === "br") return { ...base, ...br }

View File

@ -0,0 +1,785 @@
import { dict as en } from "./en"
export const dict = {
...en,
"nav.github": "GitHub",
"nav.docs": "Документація",
"nav.changelog": "Журнал змін",
"nav.discord": "Discord",
"nav.x": "X",
"nav.enterprise": "Enterprise",
"nav.zen": "Zen",
"nav.login": "Увійти",
"nav.free": "Завантажити",
"nav.home": "Головна",
"nav.openMenu": "Відкрити меню",
"nav.getStartedFree": "Почати безкоштовно",
"nav.logoAlt": "OpenCode",
"nav.context.copyLogo": "Копіювати логотип як SVG",
"nav.context.copyWordmark": "Копіювати знак як SVG",
"nav.context.brandAssets": "Бренд-матеріали",
"footer.github": "GitHub",
"footer.docs": "Документація",
"footer.changelog": "Журнал змін",
"footer.discord": "Discord",
"footer.x": "X",
"legal.brand": "Бренд",
"legal.privacy": "Конфіденційність",
"legal.terms": "Умови",
"email.title": "Дізнайтеся першими про нові продукти",
"email.subtitle": "Приєднуйтесь до списку очікування для раннього доступу.",
"email.placeholder": "Електронна адреса",
"email.subscribe": "Підписатися",
"email.success": "Майже готово! Перевірте пошту та підтвердьте адресу",
"notFound.title": "Не знайдено | opencode",
"notFound.heading": "404 — Сторінку не знайдено",
"notFound.home": "Головна",
"notFound.docs": "Документація",
"notFound.github": "GitHub",
"notFound.discord": "Discord",
"notFound.logoLightAlt": "світлий логотип opencode",
"notFound.logoDarkAlt": "темний логотип opencode",
"user.logout": "Вийти",
"auth.callback.error.codeMissing": "Не знайдено код авторизації.",
"workspace.select": "Виберіть робочий простір",
"workspace.createNew": "+ Створити новий робочий простір",
"workspace.modal.title": "Створити новий робочий простір",
"workspace.modal.placeholder": "Введіть назву робочого простору",
"common.cancel": "Скасувати",
"common.creating": "Створення...",
"common.create": "Створити",
"common.contactUs": "Зв'яжіться з нами",
"common.videoUnsupported": "Ваш браузер не підтримує відео.",
"common.figure": "Рис. {{n}}.",
"common.faq": "FAQ",
"common.learnMore": "Дізнатися більше",
"error.invalidPlan": "Недійсний план",
"error.workspaceRequired": "ID робочого простору обов'язкове",
"error.alreadySubscribed": "Цей робочий простір уже має підписку",
"error.limitRequired": "Ліміт обов'язковий.",
"error.monthlyLimitInvalid": "Встановіть дійсний місячний ліміт.",
"error.workspaceNameRequired": "Назва робочого простору обов'язкова.",
"error.nameTooLong": "Назва має містити не більше 255 символів.",
"error.emailRequired": "Електронна адреса обов'язкова",
"error.roleRequired": "Роль обов'язкова",
"error.idRequired": "ID обов'язкове",
"error.nameRequired": "Назва обов'язкова",
"error.providerRequired": "Провайдер обов'язковий",
"error.apiKeyRequired": "Ключ API обов'язковий",
"error.modelRequired": "Модель обов'язкова",
"error.reloadAmountMin": "Сума поповнення має бути щонайменше ${{amount}}",
"error.reloadTriggerMin": "Поріг балансу має бути щонайменше ${{amount}}",
"app.meta.description": "OpenCode — відкритий агент для програмування.",
"home.title": "OpenCode | Відкритий AI-агент для кодування",
"temp.title": "opencode | AI-агент для кодування, створений для термінала",
"temp.hero.title": "AI-агент для кодування, створений для термінала",
"temp.zen": "opencode zen",
"temp.getStarted": "Почати",
"temp.feature.native.title": "Рідний TUI",
"temp.feature.native.body": "Чуйний, рідний інтерфейс термінала з темами",
"temp.feature.zen.beforeLink": "A",
"temp.feature.zen.link": "добірка моделей",
"temp.feature.zen.afterLink": "від opencode",
"temp.feature.models.beforeLink": "Підтримує 75+ LLM-провайдерів через",
"temp.feature.models.afterLink": ", включаючи локальні моделі",
"temp.screenshot.caption": "OpenCode TUI з темою tokyonight",
"temp.screenshot.alt": "OpenCode TUI з темою tokyonight",
"temp.logoLightAlt": "світлий логотип opencode",
"temp.logoDarkAlt": "темний логотип opencode",
"home.banner.badge": "Нове",
"home.banner.text": "Десктопний застосунок доступний у бета-версії",
"home.banner.platforms": "на macOS, Windows та Linux",
"home.banner.downloadNow": "Завантажити зараз",
"home.banner.downloadBetaNow": "Завантажити бета-версію десктопного застосунку",
"home.hero.title": "Відкритий AI-агент для кодування",
"home.hero.subtitle.a": "Безкоштовні моделі включено або підключіть будь-яку модель від будь-якого провайдера,",
"home.hero.subtitle.b": "включно з Claude, GPT, Gemini та іншими.",
"home.install.ariaLabel": "Параметри встановлення",
"home.what.title": "Що таке OpenCode?",
"home.what.body": "OpenCode — це відкритий агент, який допомагає писати код у терміналі, IDE або на десктопі.",
"home.what.lsp.title": "LSP увімкнено",
"home.what.lsp.body": "Автоматично завантажує потрібні LSP для LLM",
"home.what.multiSession.title": "Багатосесійність",
"home.what.multiSession.body": "Запускайте кількох агентів паралельно в одному проекті",
"home.what.shareLinks.title": "Посилання для обміну",
"home.what.shareLinks.body": "Діліться посиланням на будь-яку сесію для обговорення або налагодження",
"home.what.copilot.title": "GitHub Copilot",
"home.what.copilot.body": "Увійдіть через GitHub, щоб використовувати свій обліковий запис Copilot",
"home.what.chatgptPlus.title": "ChatGPT Plus/Pro",
"home.what.chatgptPlus.body": "Увійдіть через OpenAI, щоб використовувати ChatGPT Plus або Pro",
"home.what.anyModel.title": "Будь-яка модель",
"home.what.anyModel.body": "75+ LLM-провайдерів через Models.dev, включаючи локальні моделі",
"home.what.anyEditor.title": "Будь-який редактор",
"home.what.anyEditor.body": "Доступний як термінальний інтерфейс, десктопний застосунок та розширення IDE",
"home.what.readDocs": "Читати документацію",
"home.growth.title": "Відкритий AI-агент для кодування",
"home.growth.body":
"З понад <strong>{{stars}}</strong> зірками на GitHub, <strong>{{contributors}}</strong> учасниками та понад <strong>{{commits}}</strong> комітами, OpenCode використовують понад <strong>{{monthlyUsers}}</strong> розробників щомісяця.",
"home.growth.githubStars": "Зірки GitHub",
"home.growth.contributors": "Учасники",
"home.growth.monthlyDevs": "Розробників на місяць",
"home.privacy.title": "Створено для конфіденційності",
"home.privacy.body":
"OpenCode не зберігає ваш код або контекстні дані, тому може працювати в середовищах з чутливими даними.",
"home.privacy.learnMore": "Дізнатися більше про",
"home.privacy.link": "конфіденційність",
"home.faq.q1": "Що таке OpenCode?",
"home.faq.a1":
"OpenCode — це відкритий агент, який допомагає писати та запускати код з будь-якою AI-моделлю. Доступний як термінальний інтерфейс, десктопний застосунок або розширення IDE.",
"home.faq.q2": "Як почати користуватися OpenCode?",
"home.faq.a2.before": "Найпростіший спосіб почати — прочитати",
"home.faq.a2.link": "вступ",
"home.faq.q3": "Чи потрібні додаткові AI-підписки для використання OpenCode?",
"home.faq.a3.p1":
"Не обов'язково, OpenCode має набір безкоштовних моделей, які можна використовувати без реєстрації.",
"home.faq.a3.p2.beforeZen": "Крім цього, ви можете використовувати будь-які популярні моделі, створивши обліковий запис",
"home.faq.a3.p2.afterZen": ".",
"home.faq.a3.p3":
"Хоча ми рекомендуємо Zen, OpenCode також працює з усіма популярними провайдерами, такими як OpenAI, Anthropic, xAI тощо.",
"home.faq.a3.p4.beforeLocal": "Ви навіть можете підключити свої",
"home.faq.a3.p4.localLink": "локальні моделі",
"home.faq.q4": "Чи можу я використовувати свої наявні AI-підписки з OpenCode?",
"home.faq.a4.p1":
"Так, OpenCode підтримує підписки всіх основних провайдерів. Ви можете використовувати Claude Pro/Max, ChatGPT Plus/Pro або GitHub Copilot.",
"home.faq.q5": "Чи можна використовувати OpenCode лише в терміналі?",
"home.faq.a5.beforeDesktop": "Вже ні! OpenCode тепер доступний як застосунок для",
"home.faq.a5.desktop": "десктопа",
"home.faq.a5.and": "та",
"home.faq.a5.web": "вебу",
"home.faq.q6": "Скільки коштує OpenCode?",
"home.faq.a6":
"OpenCode є 100% безкоштовним. Він також має набір безкоштовних моделей. Додаткові витрати можливі, якщо ви підключите іншого провайдера.",
"home.faq.q7": "А як щодо даних та конфіденційності?",
"home.faq.a7.p1": "Ваші дані зберігаються лише тоді, коли ви використовуєте безкоштовні моделі або створюєте посилання для обміну.",
"home.faq.a7.p2.beforeModels": "Дізнайтеся більше про",
"home.faq.a7.p2.modelsLink": "наші моделі",
"home.faq.a7.p2.and": "та",
"home.faq.a7.p2.shareLink": "сторінки обміну",
"home.faq.q8": "Чи є OpenCode відкритим?",
"home.faq.a8.p1": "Так, OpenCode повністю відкритий. Вихідний код доступний публічно на",
"home.faq.a8.p2": "під ліцензією",
"home.faq.a8.mitLicense": "MIT License",
"home.faq.a8.p3":
", тобто кожен може використовувати, змінювати або сприяти його розвитку. Будь-хто зі спільноти може створювати issues, надсилати pull request'и та розширювати функціональність.",
"home.zenCta.title": "Отримайте доступ до надійних оптимізованих моделей для агентів кодування",
"home.zenCta.body":
"Zen дає доступ до добірки AI-моделей, які OpenCode протестував спеціально для агентів кодування. Не турбуйтеся про нестабільну якість — використовуйте перевірені моделі.",
"home.zenCta.link": "Дізнатися про Zen",
"zen.title": "OpenCode Zen | Добірка надійних оптимізованих моделей для агентів кодування",
"zen.hero.title": "Надійні оптимізовані моделі для агентів кодування",
"zen.hero.body":
"Zen дає доступ до добірки AI-моделей, які OpenCode протестував спеціально для агентів кодування. Не турбуйтеся про нестабільну якість — використовуйте перевірені моделі.",
"zen.faq.q1": "Що таке OpenCode Zen?",
"zen.faq.a1":
"Zen — це добірка AI-моделей, протестованих для агентів кодування, створена командою OpenCode.",
"zen.faq.q2": "Чому Zen точніший?",
"zen.faq.a2":
"Zen надає лише моделі, спеціально протестовані для агентів кодування. Ви ж не використовуєте масло ніж для стейка — не використовуйте погані моделі для кодування.",
"zen.faq.q3": "Чи Zen дешевший?",
"zen.faq.a3":
"Zen не є прибутковим. Zen передає вам вартість від провайдерів моделей. Чим вище використання Zen, тим кращі ціни OpenCode може узгодити та передати вам.",
"zen.faq.q4": "Скільки коштує Zen?",
"zen.faq.a4.p1.beforePricing": "Zen",
"zen.faq.a4.p1.pricingLink": "стягує плату за запит",
"zen.faq.a4.p1.afterPricing": "без націнок — ви платите рівно стільки, скільки стягує провайдер моделі.",
"zen.faq.a4.p2.beforeAccount": "Загальна вартість залежить від використання. Ви можете встановити місячні ліміти в",
"zen.faq.a4.p2.accountLink": "обліковому записі",
"zen.faq.a4.p3":
"Щоб покрити витрати, OpenCode додає лише невелику комісію за обробку платежу в розмірі $1.23 за кожне поповнення балансу $20.",
"zen.faq.q5": "А як щодо даних та конфіденційності?",
"zen.faq.a5.beforeExceptions":
"Усі моделі Zen розміщені в США. Провайдери дотримуються політики нульового зберігання та не використовують ваші дані для навчання моделей, за",
"zen.faq.a5.exceptionsLink": "такими винятками",
"zen.faq.q6": "Чи можна встановити ліміти витрат?",
"zen.faq.a6": "Так, ви можете встановити місячні ліміти витрат в обліковому записі.",
"zen.faq.q7": "Чи можна скасувати?",
"zen.faq.a7": "Так, ви можете вимкнути оплату в будь-який час і використовувати залишок.",
"zen.faq.q8": "Чи можна використовувати Zen з іншими агентами кодування?",
"zen.faq.a8":
"Хоча Zen чудово працює з OpenCode, ви можете використовувати Zen з будь-яким агентом. Дотримуйтесь інструкцій з налаштування у вашому агенті.",
"zen.cta.start": "Почати з Zen",
"zen.pricing.title": "Додати $20 балансу Pay as you go",
"zen.pricing.fee": "(+$1.23 комісія за обробку карти)",
"zen.pricing.body": "Використовуйте з будь-яким агентом. Встановлюйте місячні ліміти. Скасуйте в будь-який час.",
"zen.problem.title": "Яку проблему вирішує Zen?",
"zen.problem.body":
"Доступно багато моделей, але лише деякі добре працюють з агентами кодування. Більшість провайдерів налаштовують їх по-різному з різними результатами.",
"zen.problem.subtitle": "Ми вирішуємо це для всіх, а не лише для користувачів OpenCode.",
"zen.problem.item1": "Тестування вибраних моделей та консультації з їхніми командами",
"zen.problem.item2": "Співпраця з провайдерами для забезпечення правильної доставки",
"zen.problem.item3": "Бенчмаркінг усіх комбінацій моделей та провайдерів, які ми рекомендуємо",
"zen.how.title": "Як працює Zen",
"zen.how.body": "Хоча ми пропонуємо використовувати Zen з OpenCode, ви можете використовувати Zen з будь-яким агентом.",
"zen.how.step1.title": "Зареєструйтеся та додайте $20 балансу",
"zen.how.step1.beforeLink": "дотримуйтесь",
"zen.how.step1.link": "інструкцій з налаштування",
"zen.how.step2.title": "Використовуйте Zen із прозорими цінами",
"zen.how.step2.link": "платіть за запит",
"zen.how.step2.afterLink": "без націнок",
"zen.how.step3.title": "Автоматичне поповнення",
"zen.how.step3.body": "коли баланс досягає $5, ми автоматично додаємо $20",
"zen.privacy.title": "Ваша конфіденційність важлива для нас",
"zen.privacy.beforeExceptions":
"Усі моделі Zen розміщені в США. Провайдери дотримуються політики нульового зберігання та не використовують ваші дані для навчання моделей, за",
"zen.privacy.exceptionsLink": "такими винятками",
"go.title": "OpenCode Go | Недорогі моделі кодування для всіх",
"go.meta.description":
"Go починається від $5 за перший місяць, потім $10/місяць, з generous 5-годинними лімітами запитів для GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro та DeepSeek V4 Flash.",
"go.hero.title": "Недорогі моделі кодування для всіх",
"go.hero.body":
"Go надає агентне програмування програмістам у всьому світі, пропонуючи щедрі ліміти та надійний доступ до найкращих моделей з відкритим кодом.",
"go.cta.start": "Підписатися на Go",
"go.cta.template": "{{text}} {{price}}",
"go.cta.text": "Підписатися на Go",
"go.cta.price": "$10/місяць",
"go.cta.promo": "$5 перший місяць",
"go.pricing.body": "Використовуйте з будь-яким агентом. $5 перший місяць, потім $10/місяць. Поповнюйте за потреби. Скасуйте в будь-який час.",
"go.graph.free": "Безкоштовно",
"go.graph.freePill": "Big Pickle та безкоштовні моделі",
"go.graph.go": "Go",
"go.graph.label": "Запитів за 5 годин",
"go.graph.usageLimits": "Ліміти використання",
"go.graph.tick": "{{n}}x",
"go.graph.aria": "Запитів за 5 год: {{free}} vs {{go}}",
"go.testimonials.brand.zen": "Zen",
"go.testimonials.brand.go": "Go",
"go.testimonials.handle": "@OpenCode",
"go.testimonials.dax.name": "Dax Raad",
"go.testimonials.dax.title": "ex-CEO, Terminal Products",
"go.testimonials.dax.quoteAfter": "змінило моє життя, це справді очевидний вибір.",
"go.testimonials.jay.name": "Jay V",
"go.testimonials.jay.title": "ex-Founder, SEED, PM, Melt, Pop, Dapt, Cadmus, and ViewPoint",
"go.testimonials.jay.quoteBefore": "4 з 5 людей у нашій команді люблять використовувати",
"go.testimonials.jay.quoteAfter": ".",
"go.testimonials.adam.name": "Adam Elmore",
"go.testimonials.adam.title": "ex-Hero, AWS",
"go.testimonials.adam.quoteBefore": "Я не можу достатньо рекомендувати",
"go.testimonials.adam.quoteAfter": ". Серйозно, це дійсно добре.",
"go.testimonials.david.name": "David Hill",
"go.testimonials.david.title": "ex-Head of Design, Laravel",
"go.testimonials.david.quoteBefore": "Завдяки",
"go.testimonials.david.quoteAfter": "я знаю, що всі моделі протестовані та ідеальні для агентів кодування.",
"go.testimonials.frank.name": "Frank Wang",
"go.testimonials.frank.title": "ex-Intern, Nvidia (4 times)",
"go.testimonials.frank.quote": "Хотів би я досі бути в Nvidia.",
"go.problem.title": "Яку проблему вирішує Go?",
"go.problem.body":
"Ми зосереджені на тому, щоб зробити досвід OpenCode доступним для якомога більшої кількості людей. OpenCode Go — це недорога підписка: $5 за перший місяць, потім $10/місяць. Вона надає щедрі ліміти та надійний доступ до найкращих моделей з відкритим кодом.",
"go.problem.subtitle": " ",
"go.problem.item1": "Недорога підписка",
"go.problem.item2": "Щедрі ліміти та надійний доступ",
"go.problem.item3": "Створено для якомога більшої кількості програмістів",
"go.problem.item4":
"Включає GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro та DeepSeek V4 Flash",
"go.how.title": "Як працює Go",
"go.how.body": "Go починається від $5 за перший місяць, потім $10/місяць. Використовуйте з OpenCode або будь-яким агентом.",
"go.how.step1.title": "Створіть обліковий запис",
"go.how.step1.beforeLink": "дотримуйтесь",
"go.how.step1.link": "інструкцій з налаштування",
"go.how.step2.title": "Підпишіться на Go",
"go.how.step2.link": "$5 перший місяць",
"go.how.step2.afterLink": "потім $10/місяць із щедрими лімітами",
"go.how.step3.title": "Почніть кодувати",
"go.how.step3.body": "з надійним доступом до моделей з відкритим кодом",
"go.privacy.title": "Ваша конфіденційність важлива для нас",
"go.privacy.body":
"План розроблений переважно для міжнародних користувачів, з моделями, розміщеними в США, ЄС та Сінгапурі для стабільного глобального доступу.",
"go.privacy.contactAfter": "якщо у вас є запитання.",
"go.privacy.beforeExceptions":
"Моделі Go розміщені в США. Провайдери дотримуються політики нульового зберігання та не використовують ваші дані для навчання моделей, за",
"go.privacy.exceptionsLink": "такими винятками",
"go.faq.q1": "Що таке OpenCode Go?",
"go.faq.a1":
"Go — це недорога підписка, яка надає надійний доступ до найкращих моделей з відкритим кодом для агентного кодування.",
"go.faq.q2": "Які моделі включає Go?",
"go.faq.a2": "Go включає моделі, перелічені нижче, із щедрими лімітами та надійним доступом.",
"go.faq.q3": "Чи Go те саме, що Zen?",
"go.faq.a3":
"Ні. Zen — це плата за використання, тоді як Go починається від $5 за перший місяць, потім $10/місяць, із щедрими лімітами та надійним доступом до моделей з відкритим кодом.",
"go.faq.q4": "Скільки коштує Go?",
"go.faq.a4.p1.beforePricing": "Go коштує",
"go.faq.a4.p1.pricingLink": "$5 за перший місяць",
"go.faq.a4.p1.afterPricing": "потім $10/місяць із щедрими лімітами.",
"go.faq.a4.p2.beforeAccount": "Ви можете керувати підпискою в",
"go.faq.a4.p2.accountLink": "обліковому записі",
"go.faq.a4.p3": "Скасуйте в будь-який час.",
"go.faq.q5": "А як щодо даних та конфіденційності?",
"go.faq.a5.body":
"План розроблений переважно для міжнародних користувачів, з моделями в США, ЄС та Сінгапурі. Провайдери дотримуються політики нульового зберігання.",
"go.faq.a5.beforeExceptions":
"Моделі Go розміщені в США. Провайдери дотримуються політики нульового зберігання та не використовують ваші дані для навчання моделей, за",
"go.faq.a5.exceptionsLink": "такими винятками",
"go.faq.q6": "Чи можна поповнити баланс?",
"go.faq.a6": "Якщо вам потрібно більше використання, ви можете поповнити баланс в обліковому записі.",
"go.faq.q7": "Чи можна скасувати?",
"go.faq.a7": "Так, ви можете скасувати в будь-який час.",
"go.faq.q8": "Чи можна використовувати Go з іншими агентами кодування?",
"go.faq.a8": "Так, ви можете використовувати Go з будь-яким агентом.",
"go.faq.q9": "Яка різниця між безкоштовними моделями та Go?",
"go.faq.a9":
"Безкоштовні моделі включають Big Pickle та акційні моделі з лімітом 200 запитів/день. Go включає GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro та DeepSeek V4 Flash із вищими лімітами.",
"zen.api.error.rateLimitExceeded": "Перевищено ліміт запитів. Спробуйте пізніше.",
"zen.api.error.modelNotSupported": "Модель {{model}} не підтримується",
"zen.api.error.modelFormatNotSupported": "Модель {{model}} не підтримується для формату {{format}}",
"zen.api.error.noProviderAvailable": "Немає доступного провайдера",
"zen.api.error.providerNotSupported": "Провайдер {{provider}} не підтримується",
"zen.api.error.missingApiKey": "Відсутній ключ API.",
"zen.api.error.invalidApiKey": "Недійсний ключ API.",
"zen.api.error.subscriptionQuotaExceeded": "Перевищено квоту підписки. Повторіть через {{retryIn}}.",
"zen.api.error.goSubscriptionRollingLimitExceeded":
"Досягнуто 5-годинного ліміту використання. Скидається через {{retryIn}}. Щоб продовжити, увімкніть використання з доступного балансу: {{consoleGoUrl}}",
"zen.api.error.goSubscriptionWeeklyLimitExceeded":
"Досягнуто тижневого ліміту використання. Скидається через {{retryIn}}. Щоб продовжити, увімкніть використання з доступного балансу: {{consoleGoUrl}}",
"zen.api.error.goSubscriptionMonthlyLimitExceeded":
"Досягнуто місячного ліміту використання. Скидається через {{retryIn}}. Щоб продовжити, увімкніть використання з доступного балансу: {{consoleGoUrl}}",
"zen.api.error.noPaymentMethod": "Немає способу оплати. Додайте метод оплати: {{billingUrl}}",
"zen.api.error.insufficientBalance": "Недостатньо коштів. Керуйте оплатою: {{billingUrl}}",
"zen.api.error.workspaceMonthlyLimitReached":
"Ваш робочий простір досяг місячного ліміту витрат ${{amount}}. Керуйте лімітами: {{billingUrl}}",
"zen.api.error.userMonthlyLimitReached":
"Ви досягли місячного ліміту витрат ${{amount}}. Керуйте лімітами: {{membersUrl}}",
"zen.api.error.modelDisabled": "Модель вимкнено",
"zen.api.error.trialEnded":
"Безкоштовна акція для {{model}} закінчилася. Ви можете продовжити використання, підписавшись на OpenCode Go — {{link}}",
"black.meta.title": "OpenCode Black | Доступ до найкращих моделей кодування",
"black.meta.description": "Отримайте доступ до Claude, GPT, Gemini та інших із планами підписки OpenCode Black.",
"black.hero.title": "Доступ до найкращих моделей кодування",
"black.hero.subtitle": "Включаючи Claude, GPT, Gemini та інші",
"black.title": "OpenCode Black | Ціни",
"black.paused": "Реєстрація в план Black тимчасово призупинена.",
"black.plan.icon20": "План Black 20",
"black.plan.icon100": "План Black 100",
"black.plan.icon200": "План Black 200",
"black.plan.multiplier100": "5x більше використання ніж Black 20",
"black.plan.multiplier200": "20x більше використання ніж Black 20",
"black.price.perMonth": "на місяць",
"black.price.perPersonBilledMonthly": "за особу з щомісячною оплатою",
"black.terms.1": "Ваша підписка не розпочнеться негайно",
"black.terms.2": "Вас додадуть до списку очікування та активують незабаром",
"black.terms.3": "Картку буде списано лише після активації підписки",
"black.terms.4": "Діють ліміти використання, інтенсивне автоматичне використання може швидше вичерпати ліміти",
"black.terms.5": "Підписки призначені для фізичних осіб, зверніться в Enterprise для команд",
"black.terms.6": "Ліміти можуть бути змінені, а плани можуть бути припинені в майбутньому",
"black.terms.7": "Скасуйте підписку в будь-який час",
"black.action.continue": "Продовжити",
"black.finePrint.beforeTerms": "Зазначені ціни не включають податки",
"black.finePrint.terms": "Умови надання послуг",
"black.workspace.title": "OpenCode Black | Виберіть робочий простір",
"black.workspace.selectPlan": "Виберіть робочий простір для цього плану",
"black.workspace.name": "Робочий простір {{n}}",
"black.subscribe.title": "Підписатися на OpenCode Black",
"black.subscribe.paymentMethod": "Спосіб оплати",
"black.subscribe.loadingPaymentForm": "Завантаження форми оплати...",
"black.subscribe.selectWorkspaceToContinue": "Виберіть робочий простір для продовження",
"black.subscribe.failurePrefix": "Ой!",
"black.subscribe.error.generic": "Сталася помилка",
"black.subscribe.error.invalidPlan": "Недійсний план",
"black.subscribe.error.workspaceRequired": "ID робочого простору обов'язкове",
"black.subscribe.error.alreadySubscribed": "Цей робочий простір уже має підписку",
"black.subscribe.processing": "Обробка...",
"black.subscribe.submit": "Підписатися ${{plan}}",
"black.subscribe.form.chargeNotice": "Платіж буде списано лише після активації підписки",
"black.subscribe.success.title": "Ви в списку очікування OpenCode Black",
"black.subscribe.success.subscriptionPlan": "План підписки",
"black.subscribe.success.planName": "OpenCode Black {{plan}}",
"black.subscribe.success.amount": "Сума",
"black.subscribe.success.amountValue": "${{plan}} на місяць",
"black.subscribe.success.paymentMethod": "Спосіб оплати",
"black.subscribe.success.dateJoined": "Дата приєднання",
"black.subscribe.success.chargeNotice": "Вашу картку буде списано після активації підписки",
"workspace.nav.zen": "Zen",
"workspace.nav.go": "Go",
"workspace.nav.usage": "Використання",
"workspace.nav.apiKeys": "Ключі API",
"workspace.nav.members": "Учасники",
"workspace.nav.billing": "Оплата",
"workspace.nav.settings": "Налаштування",
"workspace.home.banner.beforeLink": "Надійні оптимізовані моделі для агентів кодування.",
"workspace.lite.banner.beforeLink": "Недорогі моделі кодування для всіх.",
"workspace.home.billing.loading": "Завантаження...",
"workspace.home.billing.enable": "Увімкнути оплату",
"workspace.home.billing.currentBalance": "Поточний баланс",
"workspace.newUser.feature.tested.title": "Протестовані та перевірені моделі",
"workspace.newUser.feature.tested.body":
"Ми протестували моделі спеціально для агентів кодування, щоб забезпечити найкращу продуктивність.",
"workspace.newUser.feature.quality.title": "Найвища якість",
"workspace.newUser.feature.quality.body":
"Доступ до моделей, налаштованих для оптимальної продуктивності — без зниження якості.",
"workspace.newUser.feature.lockin.title": "Без блокування (Lock-in)",
"workspace.newUser.feature.lockin.body":
"Використовуйте Zen з будь-яким агентом і продовжуйте користуватися іншими провайдерами.",
"workspace.newUser.copyApiKey": "Копіювати ключ API",
"workspace.newUser.copyKey": "Копіювати ключ",
"workspace.newUser.copied": "Скопійовано!",
"workspace.newUser.step.enableBilling": "Увімкнути оплату",
"workspace.newUser.step.login.before": "Запустіть",
"workspace.newUser.step.login.after": "і виберіть opencode",
"workspace.newUser.step.pasteKey": "Вставте ключ API",
"workspace.newUser.step.models.before": "Запустіть opencode і виконайте",
"workspace.newUser.step.models.after": "щоб вибрати модель",
"workspace.models.title": "Моделі",
"workspace.models.subtitle.beforeLink": "Керуйте доступом учасників до моделей.",
"workspace.models.table.model": "Модель",
"workspace.models.table.enabled": "Увімкнено",
"workspace.providers.title": "Принесіть власний ключ (BYOK)",
"workspace.providers.subtitle": "Налаштуйте власні ключі API від AI-провайдерів.",
"workspace.providers.placeholder": "Введіть ключ API {{provider}} ({{prefix}}...)",
"workspace.providers.configure": "Налаштувати",
"workspace.providers.edit": "Редагувати",
"workspace.providers.delete": "Видалити",
"workspace.providers.saving": "Збереження...",
"workspace.providers.save": "Зберегти",
"workspace.providers.table.provider": "Провайдер",
"workspace.providers.table.apiKey": "Ключ API",
"workspace.usage.title": "Історія використання",
"workspace.usage.subtitle": "Останнє використання API та витрати.",
"workspace.usage.empty": "Зробіть перший API-запит, щоб почати.",
"workspace.usage.table.date": "Дата",
"workspace.usage.table.model": "Модель",
"workspace.usage.table.input": "Вхід",
"workspace.usage.table.output": "Вихід",
"workspace.usage.table.cost": "Вартість",
"workspace.usage.table.session": "Сесія",
"workspace.usage.breakdown.input": "Вхід",
"workspace.usage.breakdown.cacheRead": "Читання кешу",
"workspace.usage.breakdown.cacheWrite": "Запис кешу",
"workspace.usage.breakdown.output": "Вихід",
"workspace.usage.breakdown.reasoning": "Міркування",
"workspace.usage.subscription": "Black (${{amount}})",
"workspace.usage.lite": "Go (${{amount}})",
"workspace.usage.byok": "BYOK (${{amount}})",
"workspace.cost.title": "Вартість",
"workspace.cost.subtitle": "Витрати в розрізі моделей.",
"workspace.cost.allModels": "Усі моделі",
"workspace.cost.allKeys": "Усі ключі",
"workspace.cost.deletedSuffix": "(видалено)",
"workspace.cost.empty": "Немає даних про використання за вибраний період.",
"workspace.cost.subscriptionShort": "підп",
"workspace.keys.title": "Ключі API",
"workspace.keys.subtitle": "Керуйте ключами API для доступу до сервісів opencode.",
"workspace.keys.create": "Створити ключ API",
"workspace.keys.placeholder": "Введіть назву ключа",
"workspace.keys.empty": "Створіть ключ API шлюзу opencode",
"workspace.keys.table.name": "Назва",
"workspace.keys.table.key": "Ключ",
"workspace.keys.table.createdBy": "Створено",
"workspace.keys.table.lastUsed": "Останнє використання",
"workspace.keys.copyApiKey": "Копіювати ключ API",
"workspace.keys.delete": "Видалити",
"workspace.members.title": "Учасники",
"workspace.members.subtitle": "Керуйте учасниками робочого простору та їхніми дозволами.",
"workspace.members.invite": "Запросити учасника",
"workspace.members.inviting": "Запрошення...",
"workspace.members.beta.beforeLink": "Робочі простори безкоштовні для команд під час бета-версії.",
"workspace.members.form.invitee": "Запрошений",
"workspace.members.form.emailPlaceholder": "Введіть email",
"workspace.members.form.role": "Роль",
"workspace.members.form.monthlyLimit": "Місячний ліміт витрат",
"workspace.members.noLimit": "Без ліміту",
"workspace.members.noLimitLowercase": "без ліміту",
"workspace.members.invited": "запрошено",
"workspace.members.edit": "Редагувати",
"workspace.members.delete": "Видалити",
"workspace.members.saving": "Збереження...",
"workspace.members.save": "Зберегти",
"workspace.members.table.email": "Email",
"workspace.members.table.role": "Роль",
"workspace.members.table.monthLimit": "Ліміт на місяць",
"workspace.members.role.admin": "Адміністратор",
"workspace.members.role.adminDescription": "Може керувати моделями, учасниками та оплатою",
"workspace.members.role.member": "Учасник",
"workspace.members.role.memberDescription": "Може створювати ключі API лише для себе",
"workspace.settings.title": "Налаштування",
"workspace.settings.subtitle": "Оновіть назву робочого простору та налаштування.",
"workspace.settings.workspaceName": "Назва робочого простору",
"workspace.settings.defaultName": "Стандартна",
"workspace.settings.updating": "Оновлення...",
"workspace.settings.save": "Зберегти",
"workspace.settings.edit": "Редагувати",
"workspace.billing.title": "Оплата",
"workspace.billing.subtitle.beforeLink": "Керуйте способами оплати.",
"workspace.billing.contactUs": "Зв'яжіться з нами",
"workspace.billing.subtitle.afterLink": "якщо у вас є запитання.",
"workspace.billing.currentBalance": "Поточний баланс",
"workspace.billing.add": "Додати $",
"workspace.billing.enterAmount": "Введіть суму",
"workspace.billing.loading": "Завантаження...",
"workspace.billing.addAction": "Додати",
"workspace.billing.addBalance": "Поповнити баланс",
"workspace.billing.alipay": "Alipay",
"workspace.billing.wechat": "WeChat Pay",
"workspace.billing.linkedToStripe": "Підключено до Stripe",
"workspace.billing.manage": "Керувати",
"workspace.billing.enable": "Увімкнути оплату",
"workspace.monthlyLimit.title": "Місячний ліміт",
"workspace.monthlyLimit.subtitle": "Встановіть місячний ліміт використання для облікового запису.",
"workspace.monthlyLimit.placeholder": "50",
"workspace.monthlyLimit.setting": "Встановлення...",
"workspace.monthlyLimit.set": "Встановити",
"workspace.monthlyLimit.edit": "Редагувати ліміт",
"workspace.monthlyLimit.noLimit": "Ліміт використання не встановлено.",
"workspace.monthlyLimit.currentUsage.beforeMonth": "Поточне використання за",
"workspace.monthlyLimit.currentUsage.beforeAmount": "становить $",
"workspace.redeem.title": "Активувати купон",
"workspace.redeem.subtitle": "Активуйте код купона для отримання коштів або бонусів.",
"workspace.redeem.placeholder": "Введіть код купона",
"workspace.redeem.redeem": "Активувати",
"workspace.redeem.redeeming": "Активація...",
"workspace.redeem.success": "Купон успішно активовано.",
"workspace.reload.title": "Автоматичне поповнення",
"workspace.reload.disabled.before": "Автоматичне поповнення",
"workspace.reload.disabled.state": "вимкнено",
"workspace.reload.disabled.after": "Увімкніть для автоматичного поповнення при низькому балансі.",
"workspace.reload.enabled.before": "Автоматичне поповнення",
"workspace.reload.enabled.state": "увімкнено",
"workspace.reload.enabled.middle": "Ми поповнимо",
"workspace.reload.processingFee": "комісія за обробку",
"workspace.reload.enabled.after": "коли баланс досягне",
"workspace.reload.edit": "Редагувати",
"workspace.reload.enable": "Увімкнути",
"workspace.reload.enableAutoReload": "Увімкнути автоматичне поповнення",
"workspace.reload.reloadAmount": "Поповнити на $",
"workspace.reload.whenBalanceReaches": "Коли баланс досягне $",
"workspace.reload.saving": "Збереження...",
"workspace.reload.save": "Зберегти",
"workspace.reload.failedAt": "Поповнення не вдалося о",
"workspace.reload.reason": "Причина:",
"workspace.reload.updatePaymentMethod": "Оновіть спосіб оплати та спробуйте ще раз.",
"workspace.reload.retrying": "Повтор...",
"workspace.reload.retry": "Повторити",
"workspace.reload.error.paymentFailed": "Платіж не вдався.",
"workspace.payments.title": "Історія платежів",
"workspace.payments.subtitle": "Останні платіжні транзакції.",
"workspace.payments.table.date": "Дата",
"workspace.payments.table.paymentId": "ID платежу",
"workspace.payments.table.amount": "Сума",
"workspace.payments.table.receipt": "Квитанція",
"workspace.payments.type.credit": "кредит",
"workspace.payments.type.subscription": "підписка",
"workspace.payments.view": "Переглянути",
"workspace.black.loading": "Завантаження...",
"workspace.black.time.day": "день",
"workspace.black.time.days": "дні",
"workspace.black.time.hour": "година",
"workspace.black.time.hours": "годин(и)",
"workspace.black.time.minute": "хвилина",
"workspace.black.time.minutes": "хвилин(и)",
"workspace.black.time.fewSeconds": "кілька секунд",
"workspace.black.subscription.title": "Підписка",
"workspace.black.subscription.message": "Ви підписані на OpenCode Black за ${{plan}} на місяць.",
"workspace.black.subscription.manage": "Керувати підпискою",
"workspace.black.subscription.rollingUsage": "Використання (5 год)",
"workspace.black.subscription.weeklyUsage": "Тижневе використання",
"workspace.black.subscription.resetsIn": "Скидається через",
"workspace.black.subscription.useBalance": "Використовуйте доступний баланс після досягнення лімітів",
"workspace.black.waitlist.title": "Список очікування",
"workspace.black.waitlist.joined": "Ви в списку очікування на план OpenCode Black за ${{plan}} на місяць.",
"workspace.black.waitlist.ready": "Ми готові зареєструвати вас на план OpenCode Black за ${{plan}} на місяць.",
"workspace.black.waitlist.leave": "Залишити список очікування",
"workspace.black.waitlist.leaving": "Вихід...",
"workspace.black.waitlist.left": "Вишли",
"workspace.black.waitlist.enroll": "Зареєструватися",
"workspace.black.waitlist.enrolling": "Реєстрація...",
"workspace.black.waitlist.enrolled": "Зареєстровано",
"workspace.black.waitlist.enrollNote":
"Після натискання «Зареєструватися» підписка почнеться негайно, а картку буде списано.",
"workspace.lite.loading": "Завантаження...",
"workspace.lite.time.day": "день",
"workspace.lite.time.days": "дні",
"workspace.lite.time.hour": "година",
"workspace.lite.time.hours": "годин(и)",
"workspace.lite.time.minute": "хвилина",
"workspace.lite.time.minutes": "хвилин(и)",
"workspace.lite.time.fewSeconds": "кілька секунд",
"workspace.lite.subscription.message": "Ви підписані на OpenCode Go.",
"workspace.lite.subscription.manage": "Керувати підпискою",
"workspace.lite.subscription.rollingUsage": "Ковзне використання",
"workspace.lite.subscription.weeklyUsage": "Тижневе використання",
"workspace.lite.subscription.monthlyUsage": "Місячне використання",
"workspace.lite.subscription.resetsIn": "Скидається через",
"workspace.lite.subscription.useBalance": "Використовуйте доступний баланс після досягнення лімітів",
"workspace.lite.subscription.selectProvider":
'Виберіть "OpenCode Go" як провайдера в конфігурації opencode.',
"workspace.lite.black.message":
"Ви вже підписані на OpenCode Black або в списку очікування. Спочатку скасуйте підписку, якщо хочете перейти на Go.",
"workspace.lite.other.message":
"Інший учасник цього робочого простору вже підписаний на OpenCode Go.",
"workspace.lite.promo.description":
"OpenCode Go починається від {{price}}, потім $10/місяць, із щедрими лімітами.",
"workspace.lite.promo.price": "$5 за перший місяць",
"workspace.lite.promo.modelsTitle": "Що включено",
"workspace.lite.promo.footer":
"План призначений для міжнародних користувачів. Ціни можуть змінюватися.",
"workspace.lite.promo.subscribe": "Підписатися на Go",
"workspace.lite.promo.subscribing": "Перенаправлення...",
"workspace.lite.promo.otherMethods": "Інші способи оплати",
"workspace.lite.promo.selectMethod": "Виберіть спосіб оплати",
"download.title": "OpenCode | Завантажити",
"download.meta.description": "Завантажте OpenCode для macOS, Windows та Linux",
"download.hero.title": "Завантажити OpenCode",
"download.hero.subtitle": "Доступно в бета-версії для macOS, Windows та Linux",
"download.hero.button": "Завантажити для {{os}}",
"download.section.terminal": "Термінал OpenCode",
"download.section.desktop": "Десктоп OpenCode (Бета)",
"download.section.extensions": "Розширення OpenCode",
"download.section.integrations": "Інтеграції OpenCode",
"download.action.download": "Завантажити",
"download.action.install": "Встановити",
"download.platform.macosAppleSilicon": "macOS (Apple Silicon)",
"download.platform.macosIntel": "macOS (Intel)",
"download.platform.windowsX64": "Windows (x64)",
"download.platform.linuxDeb": "Linux (.deb)",
"download.platform.linuxRpm": "Linux (.rpm)",
"download.faq.a3.beforeLocal":
"Не обов'язково, але ймовірно. Вам знадобиться AI-підписка, якщо ви хочете підключити платного провайдера, хоча ви можете працювати з",
"download.faq.a3.localLink": "локальними моделями",
"download.faq.a3.afterLocal.beforeZen": "безкоштовно. Хоча ми рекомендуємо",
"download.faq.a3.afterZen":
", OpenCode працює з усіма популярними провайдерами, такими як OpenAI, Anthropic, xAI тощо.",
"download.faq.a5.p1": "OpenCode є 100% безкоштовним.",
"download.faq.a5.p2.beforeZen":
"Будь-які додаткові витрати будуть з вашої підписки у провайдера моделі. Ми рекомендуємо",
"download.faq.a5.p2.afterZen": ".",
"download.faq.a6.p1": "Ваші дані зберігаються лише при створенні посилань для обміну в OpenCode.",
"download.faq.a6.p2.beforeShare": "Дізнайтеся більше про",
"download.faq.a6.shareLink": "сторінки обміну",
"enterprise.title": "OpenCode | Enterprise-рішення для вашої організації",
"enterprise.meta.description": "Зв'яжіться з OpenCode для Enterprise-рішень",
"enterprise.hero.title": "Ваш код належить вам",
"enterprise.hero.body1":
"OpenCode працює безпечно всередині вашої організації без зберігання даних, ліцензійних обмежень. Почніть пробний період із командою, потім розгорніть через SSO та внутрішній AI-шлюз.",
"enterprise.hero.body2": "Дайте знати, чим ми можемо допомогти.",
"enterprise.form.name.label": "Повне ім'я",
"enterprise.form.name.placeholder": "Джеф Безос",
"enterprise.form.role.label": "Посада",
"enterprise.form.role.placeholder": "Голова правління",
"enterprise.form.company.label": "Компанія",
"enterprise.form.company.placeholder": "Acme Inc",
"enterprise.form.email.label": "Робоча електронна адреса",
"enterprise.form.email.placeholder": "jeff@amazon.com",
"enterprise.form.phone.label": "Номер телефону",
"enterprise.form.phone.placeholder": "+1 234 567 8900",
"enterprise.form.message.label": "Яку проблему ви намагаєтеся вирішити?",
"enterprise.form.message.placeholder": "Нам потрібна допомога з...",
"enterprise.form.send": "Надіслати",
"enterprise.form.sending": "Надсилання...",
"enterprise.form.success": "Повідомлення надіслано, ми зв'яжемося найближчим часом.",
"enterprise.form.success.submitted": "Форму успішно надіслано.",
"enterprise.form.error.allFieldsRequired": "Усі поля обов'язкові.",
"enterprise.form.error.invalidEmailFormat": "Недійсний формат email.",
"enterprise.form.error.internalServer": "Внутрішня помилка сервера.",
"enterprise.faq.title": "FAQ",
"enterprise.faq.q1": "Що таке OpenCode Enterprise?",
"enterprise.faq.a1":
"OpenCode Enterprise для організацій, які хочуть гарантувати, що код і дані ніколи не залишають їхню інфраструктуру.",
"enterprise.faq.q2": "Як почати з OpenCode Enterprise?",
"enterprise.faq.a2":
"Почніть із внутрішнього тестування з командою. OpenCode за замовчуванням не зберігає код. Потім зв'яжіться з нами для обговорення цін.",
"enterprise.faq.q3": "Як працює ціноутворення enterprise?",
"enterprise.faq.a3":
"Ми пропонуємо ціну за робоче місце. Якщо у вас власний LLM-шлюз, ми не стягуємо плату за токени.",
"enterprise.faq.q4": "Чи безпечні мої дані з OpenCode Enterprise?",
"enterprise.faq.a4":
"Так. OpenCode не зберігає ваш код або контекст. Вся обробка відбувається локально або через прямі API-виклики.",
"brand.title": "OpenCode | Бренд",
"brand.meta.description": "Рекомендації щодо бренду OpenCode",
"brand.heading": "Рекомендації щодо бренду",
"brand.subtitle": "Ресурси та матеріали для роботи з брендом OpenCode.",
"brand.downloadAll": "Завантажити всі матеріали",
"changelog.title": "OpenCode | Журнал змін",
"changelog.meta.description": "Нотатки про випуски та журнал змін OpenCode",
"changelog.hero.title": "Журнал змін",
"changelog.hero.subtitle": "Нові оновлення та покращення OpenCode",
"changelog.empty": "Записів у журналі змін не знайдено.",
"changelog.viewJson": "Переглянути JSON",
"bench.list.title": "Бенчмарк",
"bench.list.heading": "Бенчмарки",
"bench.list.table.agent": "Агент",
"bench.list.table.model": "Модель",
"bench.list.table.score": "Результат",
"bench.submission.error.allFieldsRequired": "Усі поля обов'язкові.",
"bench.detail.title": "Бенчмарк — {{task}}",
"bench.detail.notFound": "Завдання не знайдено",
"bench.detail.na": "Н/Д",
"bench.detail.labels.agent": "Агент",
"bench.detail.labels.model": "Модель",
"bench.detail.labels.task": "Завдання",
"bench.detail.labels.repo": "Репозиторій",
"bench.detail.labels.from": "Від",
"bench.detail.labels.to": "До",
"bench.detail.labels.prompt": "Prompt",
"bench.detail.labels.commit": "Коміт",
"bench.detail.labels.averageDuration": "Середня тривалість",
"bench.detail.labels.averageScore": "Середній результат",
"bench.detail.labels.averageCost": "Середня вартість",
"bench.detail.labels.summary": "Підсумок",
"bench.detail.labels.runs": "Запуски",
"bench.detail.labels.score": "Результат",
"bench.detail.labels.base": "База",
"bench.detail.labels.penalty": "Штраф",
"bench.detail.labels.weight": "вага",
"bench.detail.table.run": "Запуск",
"bench.detail.table.score": "Результат (База — Штраф)",
"bench.detail.table.cost": "Вартість",
"bench.detail.table.duration": "Тривалість",
"bench.detail.run.title": "Запуск {{n}}",
"bench.detail.rawJson": "Сирий JSON",
}

View File

@ -11,6 +11,7 @@ export const LOCALES = [
"ja", "ja",
"pl", "pl",
"ru", "ru",
"uk",
"ar", "ar",
"no", "no",
"br", "br",
@ -41,6 +42,7 @@ const LABEL = {
ja: "日本語", ja: "日本語",
pl: "Polski", pl: "Polski",
ru: "Русский", ru: "Русский",
uk: "Українська",
ar: "العربية", ar: "العربية",
no: "Norsk", no: "Norsk",
br: "Português (Brasil)", br: "Português (Brasil)",
@ -61,6 +63,7 @@ const TAG = {
ja: "ja", ja: "ja",
pl: "pl", pl: "pl",
ru: "ru", ru: "ru",
uk: "uk",
ar: "ar", ar: "ar",
no: "no", no: "no",
br: "pt-BR", br: "pt-BR",
@ -81,6 +84,7 @@ const DOCS = {
ja: "ja", ja: "ja",
pl: "pl", pl: "pl",
ru: "ru", ru: "ru",
uk: "uk",
ar: "ar", ar: "ar",
no: "nb", no: "nb",
br: "pt-br", br: "pt-br",
@ -104,6 +108,7 @@ const DOCS_SEGMENT = new Set([
"ru", "ru",
"th", "th",
"tr", "tr",
"uk",
"zh-cn", "zh-cn",
"zh-tw", "zh-tw",
]) ])
@ -124,6 +129,7 @@ const DOCS_LOCALE = {
ru: "ru", ru: "ru",
th: "th", th: "th",
tr: "tr", tr: "tr",
uk: "uk",
"zh-cn": "zh", "zh-cn": "zh",
"zh-tw": "zht", "zh-tw": "zht",
} as const satisfies Record<string, Locale> } as const satisfies Record<string, Locale>
@ -239,6 +245,7 @@ function match(input: string): Locale | null {
if (value.startsWith("ja")) return "ja" if (value.startsWith("ja")) return "ja"
if (value.startsWith("pl")) return "pl" if (value.startsWith("pl")) return "pl"
if (value.startsWith("ru")) return "ru" if (value.startsWith("ru")) return "ru"
if (value.startsWith("uk")) return "uk"
if (value.startsWith("ar")) return "ar" if (value.startsWith("ar")) return "ar"
if (value.startsWith("tr")) return "tr" if (value.startsWith("tr")) return "tr"
if (value.startsWith("th")) return "th" if (value.startsWith("th")) return "th"

View File

@ -11,6 +11,7 @@ import { dict as desktopDa } from "./da"
import { dict as desktopJa } from "./ja" import { dict as desktopJa } from "./ja"
import { dict as desktopPl } from "./pl" import { dict as desktopPl } from "./pl"
import { dict as desktopRu } from "./ru" import { dict as desktopRu } from "./ru"
import { dict as desktopUk } from "./uk"
import { dict as desktopAr } from "./ar" import { dict as desktopAr } from "./ar"
import { dict as desktopNo } from "./no" import { dict as desktopNo } from "./no"
import { dict as desktopBr } from "./br" import { dict as desktopBr } from "./br"
@ -27,6 +28,7 @@ import { dict as appDa } from "../../../../app/src/i18n/da"
import { dict as appJa } from "../../../../app/src/i18n/ja" import { dict as appJa } from "../../../../app/src/i18n/ja"
import { dict as appPl } from "../../../../app/src/i18n/pl" import { dict as appPl } from "../../../../app/src/i18n/pl"
import { dict as appRu } from "../../../../app/src/i18n/ru" import { dict as appRu } from "../../../../app/src/i18n/ru"
import { dict as appUk } from "../../../../app/src/i18n/uk"
import { dict as appAr } from "../../../../app/src/i18n/ar" import { dict as appAr } from "../../../../app/src/i18n/ar"
import { dict as appNo } from "../../../../app/src/i18n/no" import { dict as appNo } from "../../../../app/src/i18n/no"
import { dict as appBr } from "../../../../app/src/i18n/br" import { dict as appBr } from "../../../../app/src/i18n/br"
@ -44,6 +46,7 @@ export type Locale =
| "ja" | "ja"
| "pl" | "pl"
| "ru" | "ru"
| "uk"
| "ar" | "ar"
| "no" | "no"
| "br" | "br"
@ -64,6 +67,7 @@ const LOCALES: readonly Locale[] = [
"ja", "ja",
"pl", "pl",
"ru", "ru",
"uk",
"bs", "bs",
"ar", "ar",
"no", "no",
@ -89,6 +93,7 @@ function detectLocale(): Locale {
if (language.toLowerCase().startsWith("ja")) return "ja" if (language.toLowerCase().startsWith("ja")) return "ja"
if (language.toLowerCase().startsWith("pl")) return "pl" if (language.toLowerCase().startsWith("pl")) return "pl"
if (language.toLowerCase().startsWith("ru")) return "ru" if (language.toLowerCase().startsWith("ru")) return "ru"
if (language.toLowerCase().startsWith("uk")) return "uk"
if (language.toLowerCase().startsWith("ar")) return "ar" if (language.toLowerCase().startsWith("ar")) return "ar"
if ( if (
language.toLowerCase().startsWith("no") || language.toLowerCase().startsWith("no") ||
@ -148,6 +153,7 @@ function build(locale: Locale): Dictionary {
if (locale === "ja") return { ...base, ...i18n.flatten(appJa), ...i18n.flatten(desktopJa) } if (locale === "ja") return { ...base, ...i18n.flatten(appJa), ...i18n.flatten(desktopJa) }
if (locale === "pl") return { ...base, ...i18n.flatten(appPl), ...i18n.flatten(desktopPl) } if (locale === "pl") return { ...base, ...i18n.flatten(appPl), ...i18n.flatten(desktopPl) }
if (locale === "ru") return { ...base, ...i18n.flatten(appRu), ...i18n.flatten(desktopRu) } if (locale === "ru") return { ...base, ...i18n.flatten(appRu), ...i18n.flatten(desktopRu) }
if (locale === "uk") return { ...base, ...i18n.flatten(appUk), ...i18n.flatten(desktopUk) }
if (locale === "ar") return { ...base, ...i18n.flatten(appAr), ...i18n.flatten(desktopAr) } if (locale === "ar") return { ...base, ...i18n.flatten(appAr), ...i18n.flatten(desktopAr) }
if (locale === "no") return { ...base, ...i18n.flatten(appNo), ...i18n.flatten(desktopNo) } if (locale === "no") return { ...base, ...i18n.flatten(appNo), ...i18n.flatten(desktopNo) }
if (locale === "br") return { ...base, ...i18n.flatten(appBr), ...i18n.flatten(desktopBr) } if (locale === "br") return { ...base, ...i18n.flatten(appBr), ...i18n.flatten(desktopBr) }

View File

@ -0,0 +1,28 @@
export const dict = {
"desktop.menu.checkForUpdates": "Перевірити оновлення...",
"desktop.menu.installCli": "Встановити CLI...",
"desktop.menu.reloadWebview": "Перезавантажити Webview",
"desktop.menu.restart": "Перезапустити",
"desktop.dialog.chooseFolder": "Виберіть теку",
"desktop.dialog.chooseFile": "Виберіть файл",
"desktop.dialog.saveFile": "Зберегти файл",
"desktop.updater.checkFailed.title": "Не вдалося перевірити оновлення",
"desktop.updater.checkFailed.message": "Не вдалося перевірити наявність оновлень",
"desktop.updater.none.title": "Немає доступних оновлень",
"desktop.updater.none.message": "Ви вже використовуєте найновішу версію OpenCode",
"desktop.updater.downloadFailed.title": "Помилка оновлення",
"desktop.updater.downloadFailed.message": "Не вдалося завантажити оновлення",
"desktop.updater.downloaded.title": "Оновлення завантажено",
"desktop.updater.downloaded.prompt":
"Версію {{version}} OpenCode завантажено. Бажаєте встановити її та перезапустити?",
"desktop.updater.installFailed.title": "Помилка оновлення",
"desktop.updater.installFailed.message": "Не вдалося встановити оновлення",
"desktop.cli.installed.title": "CLI встановлено",
"desktop.cli.installed.message":
"CLI встановлено до {{path}}\n\nПерезапустіть термінал, щоб використовувати команду 'opencode'.",
"desktop.cli.failed.title": "Не вдалося встановити",
"desktop.cli.failed.message": "Не вдалося встановити CLI: {{error}}",
}

167
packages/ui/src/i18n/uk.ts Normal file
View File

@ -0,0 +1,167 @@
export const dict: Record<string, string> = {
"ui.sessionReview.title": "Зміни сесії",
"ui.sessionReview.title.git": "Зміни Git",
"ui.sessionReview.title.branch": "Зміни гілки",
"ui.sessionReview.title.lastTurn": "Зміни останнього кроку",
"ui.sessionReview.diffStyle.unified": "Об'єднаний",
"ui.sessionReview.diffStyle.split": "Розділений",
"ui.sessionReview.expandAll": "Розгорнути все",
"ui.sessionReview.collapseAll": "Згорнути все",
"ui.sessionReview.change.added": "Додано",
"ui.sessionReview.change.removed": "Видалено",
"ui.sessionReview.change.modified": "Змінено",
"ui.sessionReview.image.loading": "Завантаження...",
"ui.sessionReview.image.placeholder": "Зображення",
"ui.sessionReview.largeDiff.title": "Завеликий diff для відображення",
"ui.sessionReview.largeDiff.meta": "Ліміт: {{limit}} змінених рядків. Поточно: {{current}} змінених рядків.",
"ui.sessionReview.largeDiff.renderAnyway": "Все одно відобразити",
"ui.sessionReview.openFile": "Відкрити файл",
"ui.sessionReview.selection.line": "рядок {{line}}",
"ui.sessionReview.selection.lines": "рядки {{start}}-{{end}}",
"ui.fileMedia.kind.image": "зображення",
"ui.fileMedia.kind.audio": "аудіо",
"ui.fileMedia.state.removed": "{{kind}} видалено",
"ui.fileMedia.state.loading": "Завантаження {{kind}}...",
"ui.fileMedia.state.error": "Не вдалося завантажити {{kind}}",
"ui.fileMedia.state.unavailable": "{{kind}} недоступне",
"ui.fileMedia.binary.title": "Бінарний файл",
"ui.fileMedia.binary.description.path": "Неможливо відобразити {{path}}, оскільки це бінарний файл.",
"ui.fileMedia.binary.description.default": "Неможливо відобразити цей файл, оскільки він бінарний.",
"ui.lineComment.label.prefix": "Коментар до ",
"ui.lineComment.label.suffix": "",
"ui.lineComment.editorLabel.prefix": "Коментування: ",
"ui.lineComment.editorLabel.suffix": "",
"ui.lineComment.placeholder": "Додати коментар",
"ui.lineComment.submit": "Коментувати",
"ui.sessionTurn.steps.show": "Показати кроки",
"ui.sessionTurn.steps.hide": "Приховати кроки",
"ui.sessionTurn.summary.response": "Відповідь",
"ui.sessionTurn.diff.showMore": "Показати більше змін ({{count}})",
"ui.sessionTurn.diffs.changed": "Змінено",
"ui.sessionTurn.diffs.showAll": "Показати всі",
"ui.sessionTurn.diffs.showLess": "Показати менше",
"ui.sessionTurn.diffs.more": "+{{count}} інших файлів",
"ui.sessionTurn.retry.retrying": "повтор",
"ui.sessionTurn.retry.inSeconds": "за {{seconds}}с",
"ui.sessionTurn.retry.attempt": "спроба №{{attempt}}",
"ui.sessionTurn.retry.attemptLine": "{{line}} — спроба №{{attempt}}",
"ui.sessionTurn.retry.geminiHot": "gemini зараз перевантажений",
"ui.sessionTurn.error.freeUsageExceeded": "Перевищено ліміт безкоштовного використання",
"ui.sessionTurn.error.addCredits": "Додати кредити",
"ui.sessionTurn.status.delegating": "Делегування роботи",
"ui.sessionTurn.status.planning": "Планування наступних кроків",
"ui.sessionTurn.status.gatheringContext": "Дослідження",
"ui.sessionTurn.status.gatheredContext": "Досліджено",
"ui.sessionTurn.status.searchingCodebase": "Пошук у кодовій базі",
"ui.sessionTurn.status.searchingWeb": "Пошук в інтернеті",
"ui.sessionTurn.status.makingEdits": "Внесення змін",
"ui.sessionTurn.status.runningCommands": "Виконання команд",
"ui.sessionTurn.status.thinking": "Міркування",
"ui.sessionTurn.status.thinkingWithTopic": "Міркування — {{topic}}",
"ui.sessionTurn.status.gatheringThoughts": "Збирання думок",
"ui.sessionTurn.status.consideringNextSteps": "Розгляд наступних кроків",
"ui.messagePart.diagnostic.error": "Помилка",
"ui.messagePart.title.edit": "Редагувати",
"ui.messagePart.title.write": "Написати",
"ui.messagePart.option.typeOwnAnswer": "Введіть власну відповідь",
"ui.messagePart.review.title": "Перевірте свої відповіді",
"ui.messagePart.questions.dismissed": "Питання відхилено",
"ui.messagePart.compaction": "Сесію стиснуто",
"ui.messagePart.context.read.one": "{{count}} читання",
"ui.messagePart.context.read.other": "{{count}} читань",
"ui.messagePart.context.search.one": "{{count}} пошук",
"ui.messagePart.context.search.other": "{{count}} пошуків",
"ui.messagePart.context.list.one": "{{count}} список",
"ui.messagePart.context.list.other": "{{count}} списків",
"ui.list.loading": "Завантаження",
"ui.list.empty": "Немає результатів",
"ui.list.clearFilter": "Очистити фільтр",
"ui.list.emptyWithFilter.prefix": "Немає результатів для",
"ui.list.emptyWithFilter.suffix": "",
"ui.fileSearch.placeholder": "Знайти",
"ui.fileSearch.previousMatch": "Попередній збіг",
"ui.fileSearch.nextMatch": "Наступний збіг",
"ui.fileSearch.close": "Закрити пошук",
"ui.messageNav.newMessage": "Нове повідомлення",
"ui.textField.copyToClipboard": "Копіювати в буфер обміну",
"ui.textField.copyLink": "Копіювати посилання",
"ui.textField.copied": "Скопійовано",
"ui.imagePreview.alt": "Попередній перегляд зображення",
"ui.scrollView.ariaLabel": "контент для прокручування",
"ui.tool.read": "Читання",
"ui.tool.loaded": "Завантажено",
"ui.tool.list": "Список",
"ui.tool.glob": "Glob",
"ui.tool.grep": "Grep",
"ui.tool.task": "Завдання",
"ui.tool.webfetch": "Веб-отримання",
"ui.tool.websearch": "Веб-пошук",
"ui.tool.shell": "Оболонка",
"ui.tool.patch": "Патч",
"ui.tool.todos": "Завдання",
"ui.tool.todos.read": "Читати завдання",
"ui.tool.questions": "Питання",
"ui.tool.agent": "Агент {{type}}",
"ui.tool.agent.default": "Агент",
"ui.tool.skill": "Навичка",
"ui.basicTool.called": "Викликано `{{tool}}`",
"ui.toolErrorCard.failed": "Помилка",
"ui.toolErrorCard.copyError": "Копіювати помилку",
"ui.common.file.one": "файл",
"ui.common.file.other": "файлів",
"ui.common.question.one": "питання",
"ui.common.question.other": "питань",
"ui.common.add": "Додати",
"ui.common.back": "Назад",
"ui.common.cancel": "Скасувати",
"ui.common.confirm": "Підтвердити",
"ui.common.dismiss": "Відхилити",
"ui.common.close": "Закрити",
"ui.common.next": "Далі",
"ui.common.submit": "Надіслати",
"ui.permission.deny": "Заборонити",
"ui.permission.allowAlways": "Дозволяти завжди",
"ui.permission.allowOnce": "Дозволити один раз",
"ui.message.expand": "Розгорнути повідомлення",
"ui.message.collapse": "Згорнути повідомлення",
"ui.message.copy": "Копіювати",
"ui.message.copyMessage": "Копіювати повідомлення",
"ui.message.forkMessage": "Відгалузити в нову сесію",
"ui.message.revertMessage": "Скинути до цього моменту",
"ui.message.copyResponse": "Копіювати відповідь",
"ui.message.copied": "Скопійовано",
"ui.message.duration.seconds": "{{count}}с",
"ui.message.duration.minutesSeconds": "{{minutes}}хв {{seconds}}с",
"ui.message.interrupted": "Перервано",
"ui.message.queued": "У черзі",
"ui.message.attachment.alt": "вкладення",
"ui.patch.action.deleted": "Видалено",
"ui.patch.action.created": "Створено",
"ui.patch.action.moved": "Переміщено",
"ui.patch.action.patched": "Пропатчено",
"ui.question.subtitle.answered": "{{count}} відповідей",
"ui.question.answer.none": "(немає відповіді)",
"ui.question.review.notAnswered": "(не відповіли)",
"ui.question.multiHint": "Виберіть усі відповідні варіанти",
"ui.question.singleHint": "Виберіть одну відповідь",
"ui.question.custom.placeholder": "Введіть свою відповідь...",
}

View File

@ -14,6 +14,7 @@ export const docsLocale = [
"ru", "ru",
"th", "th",
"tr", "tr",
"uk",
"zh-cn", "zh-cn",
"zh-tw", "zh-tw",
] as const ] as const
@ -46,6 +47,7 @@ export const localeAlias = {
ru: "ru", ru: "ru",
th: "th", th: "th",
tr: "tr", tr: "tr",
uk: "uk",
zh: "zh-cn", zh: "zh-cn",
"zh-cn": "zh-cn", "zh-cn": "zh-cn",
zht: "zh-tw", zht: "zh-tw",
@ -63,6 +65,7 @@ const starts = [
["ja", "ja"], ["ja", "ja"],
["pl", "pl"], ["pl", "pl"],
["ru", "ru"], ["ru", "ru"],
["uk", "uk"],
["ar", "ar"], ["ar", "ar"],
["th", "th"], ["th", "th"],
["tr", "tr"], ["tr", "tr"],

BIN
screenshot-uk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB