@aphrody/koharu-ui 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +37 -2
  2. package/package.json +70 -4
  3. package/src/assets/NotoSansCJK-VF.otf +0 -0
  4. package/src/assets/OFL.txt +92 -0
  5. package/src/components/ClientOnly.tsx +21 -0
  6. package/src/components/ShenronExportPanel.tsx +213 -0
  7. package/src/components/app/AboutDialog.tsx +64 -0
  8. package/src/components/app/KoharuApp.tsx +58 -0
  9. package/src/components/app/StartupView.tsx +67 -0
  10. package/src/components/app/TitleBar.tsx +322 -0
  11. package/src/components/app/Updater.tsx +143 -0
  12. package/src/components/app/WindowChrome.tsx +137 -0
  13. package/src/components/controls/ColorSampling.tsx +70 -0
  14. package/src/components/controls/ColorWell.tsx +139 -0
  15. package/src/components/controls/CommitTextarea.tsx +63 -0
  16. package/src/components/controls/FontPicker.tsx +543 -0
  17. package/src/components/controls/ModelPicker.tsx +178 -0
  18. package/src/components/controls/OutputPicker.tsx +170 -0
  19. package/src/components/editor/ActivityCenter.tsx +234 -0
  20. package/src/components/editor/AgentPanel.tsx +352 -0
  21. package/src/components/editor/CanvasCommandBar.tsx +38 -0
  22. package/src/components/editor/CanvasOverlay.tsx +194 -0
  23. package/src/components/editor/CanvasWorkspace.tsx +947 -0
  24. package/src/components/editor/Editor.tsx +56 -0
  25. package/src/components/editor/InferenceControl.tsx +457 -0
  26. package/src/components/editor/Inspector.tsx +1073 -0
  27. package/src/components/editor/PageRail.tsx +581 -0
  28. package/src/components/editor/ResourceMonitor.tsx +151 -0
  29. package/src/components/editor/RightSidebar.tsx +50 -0
  30. package/src/components/editor/SelectionControls.tsx +184 -0
  31. package/src/components/editor/StatusBar.tsx +41 -0
  32. package/src/components/editor/ToolBar.tsx +182 -0
  33. package/src/components/editor/useCanvas.ts +194 -0
  34. package/src/components/preferences/GenerationPreferences.tsx +118 -0
  35. package/src/components/preferences/KoharuSettings.tsx +229 -0
  36. package/src/components/preferences/PipelinePreferences.tsx +173 -0
  37. package/src/components/preferences/PreferenceFields.tsx +149 -0
  38. package/src/components/preferences/ProviderPreferences.tsx +173 -0
  39. package/src/components/preferences/SettingsPage.tsx +336 -0
  40. package/src/components/preferences/TranslationPreferences.tsx +187 -0
  41. package/src/components/preferences/TypesettingPreferences.tsx +142 -0
  42. package/src/components/preferences/models.ts +103 -0
  43. package/src/components/start/StartView.tsx +277 -0
  44. package/src/index.ts +59 -0
  45. package/src/internal/components/accordion.tsx +72 -0
  46. package/src/internal/components/alert-dialog.tsx +189 -0
  47. package/src/internal/components/alert.tsx +76 -0
  48. package/src/internal/components/aspect-ratio.tsx +22 -0
  49. package/src/internal/components/attachment.tsx +207 -0
  50. package/src/internal/components/avatar.tsx +109 -0
  51. package/src/internal/components/badge.tsx +52 -0
  52. package/src/internal/components/breadcrumb.tsx +125 -0
  53. package/src/internal/components/bubble.tsx +128 -0
  54. package/src/internal/components/button-group.tsx +87 -0
  55. package/src/internal/components/button.tsx +58 -0
  56. package/src/internal/components/card.tsx +103 -0
  57. package/src/internal/components/checkbox.tsx +29 -0
  58. package/src/internal/components/collapsible.tsx +21 -0
  59. package/src/internal/components/combobox.tsx +298 -0
  60. package/src/internal/components/context-menu.tsx +272 -0
  61. package/src/internal/components/dialog.tsx +162 -0
  62. package/src/internal/components/direction.tsx +6 -0
  63. package/src/internal/components/drawer.tsx +230 -0
  64. package/src/internal/components/dropdown-menu.tsx +278 -0
  65. package/src/internal/components/empty.tsx +104 -0
  66. package/src/internal/components/field.tsx +238 -0
  67. package/src/internal/components/hover-card.tsx +52 -0
  68. package/src/internal/components/input-group.tsx +158 -0
  69. package/src/internal/components/input.tsx +20 -0
  70. package/src/internal/components/item.tsx +201 -0
  71. package/src/internal/components/kbd.tsx +26 -0
  72. package/src/internal/components/label.tsx +20 -0
  73. package/src/internal/components/marker.tsx +71 -0
  74. package/src/internal/components/menubar.tsx +280 -0
  75. package/src/internal/components/message.tsx +92 -0
  76. package/src/internal/components/native-select.tsx +61 -0
  77. package/src/internal/components/navigation-menu.tsx +168 -0
  78. package/src/internal/components/number-field.tsx +68 -0
  79. package/src/internal/components/pagination.tsx +130 -0
  80. package/src/internal/components/popover.tsx +91 -0
  81. package/src/internal/components/progress.tsx +83 -0
  82. package/src/internal/components/radio-group.tsx +38 -0
  83. package/src/internal/components/resizable.tsx +50 -0
  84. package/src/internal/components/scroll-area.tsx +88 -0
  85. package/src/internal/components/select.tsx +191 -0
  86. package/src/internal/components/separator.tsx +25 -0
  87. package/src/internal/components/sheet.tsx +140 -0
  88. package/src/internal/components/sidebar.tsx +723 -0
  89. package/src/internal/components/skeleton.tsx +13 -0
  90. package/src/internal/components/slider.tsx +56 -0
  91. package/src/internal/components/spinner.tsx +10 -0
  92. package/src/internal/components/switch.tsx +32 -0
  93. package/src/internal/components/table.tsx +116 -0
  94. package/src/internal/components/tabs.tsx +82 -0
  95. package/src/internal/components/textarea.tsx +18 -0
  96. package/src/internal/components/toast.tsx +235 -0
  97. package/src/internal/components/toggle-group.tsx +89 -0
  98. package/src/internal/components/toggle.tsx +45 -0
  99. package/src/internal/components/tooltip.tsx +67 -0
  100. package/src/internal/hooks/use-mobile.ts +19 -0
  101. package/src/internal/lib/utils.ts +6 -0
  102. package/src/internal/styles/globals.css +73 -0
  103. package/src/lib/backend.ts +85 -0
  104. package/src/lib/document.ts +46 -0
  105. package/src/lib/geometry.ts +272 -0
  106. package/src/lib/i18n.ts +54 -0
  107. package/src/lib/queries.ts +110 -0
  108. package/src/lib/store.ts +191 -0
  109. package/src/lib/translation.ts +35 -0
  110. package/src/locales/en-US/translation.json +536 -0
  111. package/src/locales/es-ES/translation.json +536 -0
  112. package/src/locales/ja-JP/translation.json +536 -0
  113. package/src/locales/ko-KR/translation.json +536 -0
  114. package/src/locales/pt-BR/translation.json +536 -0
  115. package/src/locales/ru-RU/translation.json +536 -0
  116. package/src/locales/tr-TR/translation.json +536 -0
  117. package/src/locales/zh-CN/translation.json +536 -0
  118. package/src/locales/zh-TW/translation.json +536 -0
  119. package/src/navigation.ts +28 -0
  120. package/src/providers.tsx +132 -0
  121. package/src/shenron-pipeline-env.d.ts +14 -0
  122. package/src/styles.css +246 -0
  123. package/tsconfig.json +21 -0
@@ -0,0 +1,536 @@
1
+ {
2
+ "about": {
3
+ "author": "Автор",
4
+ "description": "Инструменты перевода манги",
5
+ "unavailable": "Недоступно",
6
+ "version": "Версия"
7
+ },
8
+ "activity": {
9
+ "dismiss": "Закрыть",
10
+ "downloadFailed": "Не удалось скачать.",
11
+ "downloadingFiles": "Скачивание файлов: {{count}}",
12
+ "downloadingFiles_one": "Скачивание файлов: {{count}}",
13
+ "downloadingFiles_other": "Скачивание файлов: {{count}}",
14
+ "modelDownload": "Скачивание модели",
15
+ "pageLabel": "Страница {{number}}: {{label}}",
16
+ "processing": "Обработка",
17
+ "processingFailed": "Ошибка обработки.",
18
+ "stop": "Остановить",
19
+ "title": "Активность"
20
+ },
21
+ "agent": {
22
+ "account": "Учётная запись ChatGPT",
23
+ "applying": "Применение изменений проекта…",
24
+ "automatic": "Автоматически",
25
+ "cancel": "Отмена",
26
+ "cancelled": "Отменено.",
27
+ "deviceCode": "Код устройства",
28
+ "deviceCodeHint": "Браузер открыт. Введите этот код, чтобы авторизовать Koharu.",
29
+ "emptyDescription": "Попросите агента проверить, перевести, изменить или обработать проект. Он будет просматривать изображения страниц только при необходимости.",
30
+ "emptyTitle": "Что должен сделать Koharu?",
31
+ "failed": "Запрос агента завершился ошибкой.",
32
+ "loading": "Загрузка Codex…",
33
+ "message": "Сообщение агенту Koharu",
34
+ "model": "Модель Codex",
35
+ "placeholder": "Попросите Koharu поработать над проектом…",
36
+ "properties": "Свойства",
37
+ "reasoning": "Рассуждение",
38
+ "reasoningLevels": {
39
+ "high": "Высокий",
40
+ "low": "Низкий",
41
+ "max": "Максимальный",
42
+ "medium": "Средний",
43
+ "ultra": "Ультра",
44
+ "xhigh": "Очень высокий"
45
+ },
46
+ "send": "Отправить",
47
+ "signIn": "Войти через Codex",
48
+ "signInDescription": "Войдите с подпиской ChatGPT. Koharu использует авторизацию по коду устройства и никогда не запрашивает ключ API.",
49
+ "signInTitle": "Подключить Codex",
50
+ "signOut": "Выйти",
51
+ "signingIn": "Ожидание входа…",
52
+ "thinking": "Размышление…",
53
+ "title": "Агент",
54
+ "working": "Работа…"
55
+ },
56
+ "canvas": {
57
+ "empty": "Выберите страницу, чтобы начать.",
58
+ "fit": "Вписать в окно",
59
+ "surface": "Холст Koharu",
60
+ "unavailable": "Холст WebGPU недоступен"
61
+ },
62
+ "colorPicker": {
63
+ "brushColor": "Цвет кисти",
64
+ "hexCode": "Шестнадцатеричный код цвета",
65
+ "sampleCanvas": "Выбрать цвет с холста",
66
+ "transparent": "Прозрачный"
67
+ },
68
+ "common": {
69
+ "back": "Назад",
70
+ "cancel": "Отмена",
71
+ "clearSearch": "Очистить поиск",
72
+ "loading": "Загрузка…",
73
+ "reset": "Сбросить"
74
+ },
75
+ "errors": {
76
+ "fatalTitle": "Koharu не может продолжить работу",
77
+ "tryAgain": "Повторить"
78
+ },
79
+ "fontPicker": {
80
+ "activeFilterCount": "Активных фильтров: {{count}}",
81
+ "activeFilterCount_one": "Активный фильтр: {{count}}",
82
+ "activeFilterCount_other": "Активных фильтров: {{count}}",
83
+ "allPurposes": "Все назначения",
84
+ "allScripts": "Все системы письма",
85
+ "allSources": "Все источники",
86
+ "allStyles": "Все стили",
87
+ "choose": "Выбрать шрифт",
88
+ "clearFilters": "Очистить фильтры",
89
+ "filter": "Фильтровать шрифты",
90
+ "filterActiveLabel": "Фильтровать шрифты, активно: {{count}}",
91
+ "fontCount": "Шрифтов: {{count}}",
92
+ "fontCount_one": "Шрифт: {{count}}",
93
+ "fontCount_other": "Шрифтов: {{count}}",
94
+ "fontLabel": "{{family}}, {{source}}",
95
+ "fonts": "Шрифты",
96
+ "noResults": "Нет шрифтов, соответствующих поиску",
97
+ "purpose": "Назначение",
98
+ "script": "Система письма",
99
+ "scripts": {
100
+ "arab": "Арабское письмо",
101
+ "beng": "Бенгальское письмо",
102
+ "cyrl": "Кириллица",
103
+ "deva": "Деванагари",
104
+ "gujr": "Письмо гуджарати",
105
+ "guru": "Гурмукхи",
106
+ "hang": "Хангыль",
107
+ "hani": "Хань",
108
+ "hebr": "Еврейское письмо",
109
+ "hira": "Хирагана",
110
+ "kana": "Катакана",
111
+ "knda": "Каннада",
112
+ "latn": "Латиница",
113
+ "mlym": "Малаялам",
114
+ "taml": "Тамильское письмо",
115
+ "telu": "Письмо телугу",
116
+ "thai": "Тайское письмо"
117
+ },
118
+ "search": "Искать шрифты",
119
+ "source": "Источник",
120
+ "sources": {
121
+ "bundled": "Встроенные",
122
+ "system": "Системные"
123
+ },
124
+ "style": "Стиль"
125
+ },
126
+ "inference": {
127
+ "currentPage": "Текущая страница",
128
+ "currentPageDescription": "Обработать только страницу на холсте.",
129
+ "entireProject": "Весь проект",
130
+ "entireProjectDescription": "Обработать все страницы проекта.",
131
+ "model": "Модель",
132
+ "noModel": "Нет модели",
133
+ "notSet": "Не задано",
134
+ "output": "Результат",
135
+ "pipelineStages": "Этапы конвейера",
136
+ "providerDefault": "По умолчанию у провайдера",
137
+ "run": "Запустить",
138
+ "runProcessing": "Запустить обработку",
139
+ "scope": "Область",
140
+ "scopeShort": {
141
+ "page": "Страница",
142
+ "project": "Проект",
143
+ "selected-pages": "Выбранное"
144
+ },
145
+ "selectPagesFirst": "Сначала выберите страницы",
146
+ "selectedCount": "Выбрано страниц: {{count}}",
147
+ "selectedCount_one": "Выбрано страниц: {{count}}",
148
+ "selectedCount_other": "Выбрано страниц: {{count}}",
149
+ "selectedPages": "Выбранные страницы",
150
+ "selector": "Настройки обработки",
151
+ "shortcuts": "Параметры обработки",
152
+ "stageCount": "Этапов: {{count}}",
153
+ "stageCount_one": "Этапов: {{count}}",
154
+ "stageCount_other": "Этапов: {{count}}",
155
+ "stages": "Этапы",
156
+ "stop": "Остановить",
157
+ "stopProcessing": "Остановить обработку"
158
+ },
159
+ "inspector": {
160
+ "alignBottom": "Выровнять по нижнему краю",
161
+ "alignCenter": "По центру",
162
+ "alignLeft": "По левому краю",
163
+ "alignMiddle": "Выровнять по середине",
164
+ "alignRight": "По правому краю",
165
+ "alignTop": "Выровнять по верхнему краю",
166
+ "alignment": "Выравнивание",
167
+ "auto": "Авто",
168
+ "autoFit": "Автовписывание",
169
+ "border": "Обводка",
170
+ "borderColor": "Цвет обводки",
171
+ "borderWidth": "Ширина обводки",
172
+ "chooseFontSize": "Выбрать размер шрифта",
173
+ "color": "Цвет",
174
+ "customFrame": "Пользовательская рамка",
175
+ "decreaseBorderWidth": "Уменьшить ширину обводки",
176
+ "direction": "Направление",
177
+ "font": "Шрифт",
178
+ "fontSize": "Размер шрифта",
179
+ "fontStyle": "Начертание шрифта",
180
+ "fontStyles": {
181
+ "italic": "Курсив",
182
+ "normal": "Обычный",
183
+ "oblique": "Наклонный"
184
+ },
185
+ "fontWeight": "Насыщенность шрифта",
186
+ "horizontal": "Горизонтально",
187
+ "increaseBorderWidth": "Увеличить ширину обводки",
188
+ "opacity": "Непрозрачность",
189
+ "placement": "Размещение",
190
+ "resetAutoFit": "Вернуть автоподгонку",
191
+ "selectPage": "Выберите страницу для просмотра её слоёв.",
192
+ "size": "Размер",
193
+ "source": "Исходный текст",
194
+ "style": "Стиль",
195
+ "textColor": "Цвет текста",
196
+ "textDirection": "Направление текста",
197
+ "translation": "Перевод",
198
+ "type": "Типографика",
199
+ "unplaced": "Не размещено",
200
+ "vertical": "Вертикально",
201
+ "weight": "Насыщенность",
202
+ "width": "Ширина"
203
+ },
204
+ "languages": {
205
+ "en-US": "English",
206
+ "es-ES": "Español",
207
+ "ja-JP": "日本語",
208
+ "ko-KR": "한국어",
209
+ "pt-BR": "Português brasileiro",
210
+ "ru-RU": "Русский",
211
+ "tr-TR": "Türkçe",
212
+ "zh-CN": "简体中文",
213
+ "zh-TW": "繁體中文"
214
+ },
215
+ "layers": {
216
+ "delete": "Удалить {{name}}",
217
+ "edit": "Изменить {{name}}",
218
+ "empty": "На этой странице нет слоёв.",
219
+ "hide": "Скрыть {{name}}",
220
+ "imageName": "Изображение {{index}}",
221
+ "kinds": {
222
+ "cleanup": "Очистка",
223
+ "dialogue": "Диалог",
224
+ "freeText": "Свободный текст",
225
+ "group": "Группа",
226
+ "image": "Изображение",
227
+ "paint": "Рисование",
228
+ "text": "Текст",
229
+ "textGroup": "Группа текста"
230
+ },
231
+ "locked": "Заблокировано",
232
+ "lockedLabel": "{{name}} заблокирован",
233
+ "moveDown": "Переместить {{name}} вниз",
234
+ "moveUp": "Переместить {{name}} вверх",
235
+ "opacityLabel": "Непрозрачность {{name}}",
236
+ "originalArtwork": "Исходное изображение",
237
+ "show": "Показать {{name}}",
238
+ "sourceLabel": "Исходный текст {{name}}",
239
+ "textName": "Текст {{index}}",
240
+ "title": "Слои",
241
+ "translationLabel": "Перевод {{name}}"
242
+ },
243
+ "menu": {
244
+ "about": "О программе",
245
+ "closeProject": "Закрыть проект",
246
+ "delete": "Удалить выбранное",
247
+ "discord": "Discord",
248
+ "edit": "Правка",
249
+ "export": "Экспорт проекта",
250
+ "file": "Файл",
251
+ "fit": "Вписать в окно",
252
+ "github": "GitHub",
253
+ "help": "Справка",
254
+ "import": "Импортировать страницы",
255
+ "process": "Обработка",
256
+ "processLayers": "Обработать выбранные слои",
257
+ "processPages": "Обработать выбранные страницы",
258
+ "processProject": "Обработать проект",
259
+ "redo": "Повторить",
260
+ "runPhase": "Запустить: {{phase}}",
261
+ "selectAllLayers": "Выбрать все слои",
262
+ "settings": "Настройки",
263
+ "undo": "Отменить",
264
+ "view": "Вид"
265
+ },
266
+ "model": {
267
+ "baseUrl": "Базовый URL",
268
+ "default": "По умолчанию",
269
+ "instructions": "Инструкции",
270
+ "targetLanguage": "Язык перевода"
271
+ },
272
+ "modelPicker": {
273
+ "empty": "Нет доступных моделей.",
274
+ "loading": "Загрузка моделей…",
275
+ "noResults": "Нет моделей, соответствующих поиску.",
276
+ "search": "Искать модели",
277
+ "title": "Выбрать модель",
278
+ "useModel": "Использовать {{model}} от {{provider}}"
279
+ },
280
+ "navigator": {
281
+ "actionsFor": "Действия для {{page}}",
282
+ "delete": "Удалить",
283
+ "emptyDescription": "Импортируйте изображения или папку, чтобы добавить страницы.",
284
+ "emptyTitle": "Страниц пока нет",
285
+ "filter": "Фильтровать страницы",
286
+ "importAction": "Импорт",
287
+ "importFiles": "Файлы…",
288
+ "importFolder": "Папка…",
289
+ "importing": "Импорт страниц…",
290
+ "importingAction": "Импорт…",
291
+ "layerCount": "Слоёв: {{count}}",
292
+ "layerCount_one": "Слоёв: {{count}}",
293
+ "layerCount_other": "Слоёв: {{count}}",
294
+ "noImage": "Нет изображения",
295
+ "noResults": "Нет страниц, соответствующих фильтру.",
296
+ "pageName": "Название страницы",
297
+ "pages": "Страницы",
298
+ "rename": "Переименовать",
299
+ "renameDescription": "Выберите новое имя для страницы.",
300
+ "renameTitle": "Переименовать страницу",
301
+ "selected": "Выбрано: {{count}}"
302
+ },
303
+ "outputPicker": {
304
+ "instructions": "Инструкции по переводу",
305
+ "instructionsPlaceholder": "Необязательные указания по стилю, именам и форматированию.",
306
+ "targetLanguage": "Язык перевода",
307
+ "title": "Вывод перевода"
308
+ },
309
+ "phase": {
310
+ "detection": "Обнаружение",
311
+ "inpainting": "Восстановление",
312
+ "ocr": "OCR",
313
+ "translation": "Перевод"
314
+ },
315
+ "phaseDescription": {
316
+ "detection": "Находит текст на странице.",
317
+ "inpainting": "Восстанавливает рисунок после удаления текста.",
318
+ "ocr": "Считывает текст внутри каждой области.",
319
+ "translation": "Переводит исходный текст на целевой язык."
320
+ },
321
+ "providerDescriptions": {
322
+ "caiyun": "API перевода Caiyun.",
323
+ "claude": "Модели Anthropic Claude.",
324
+ "deepl": "API перевода DeepL.",
325
+ "deepseek": "Языковые модели DeepSeek.",
326
+ "gemini": "Модели Google Gemini.",
327
+ "google-cloud-translation": "API Google Cloud Translation.",
328
+ "grok": "Языковые модели Grok от xAI.",
329
+ "lm-studio": "Модели, предоставляемые LM Studio.",
330
+ "local": "Модели, работающие на этом устройстве.",
331
+ "minimax": "Языковые модели MiniMax.",
332
+ "openai": "Языковые модели OpenAI.",
333
+ "openai-compatible": "Любой сервер с API, совместимым с OpenAI.",
334
+ "openrouter": "Модели, маршрутизируемые через OpenRouter."
335
+ },
336
+ "resources": {
337
+ "cpu": "CPU",
338
+ "processUtilization": "Использование процессом",
339
+ "ram": "RAM",
340
+ "summary": "ОЗУ {{ram}}%, ЦП {{cpu}}%",
341
+ "title": "Ресурсы системы",
342
+ "tooltip": "ОЗУ {{ramUsed}} из {{ramTotal}} · ЦП {{cpu}}%",
343
+ "usedOfTotal": "Использовано {{used}} из {{total}}",
344
+ "vramUnavailable": "Недоступно",
345
+ "vramValue": "Видеопамять: {{value}}"
346
+ },
347
+ "settings": {
348
+ "appearance": {
349
+ "description": "Настройте вид рабочего пространства, не меняя отрисовку изображения.",
350
+ "interface": "Интерфейс",
351
+ "language": "Язык",
352
+ "theme": "Тема",
353
+ "themeDescription": "Системная тема следует настройке операционной системы.",
354
+ "themes": {
355
+ "dark": "Тёмная",
356
+ "light": "Светлая",
357
+ "system": "Системная"
358
+ },
359
+ "title": "Оформление"
360
+ },
361
+ "backToEditor": "Вернуться в редактор",
362
+ "generation": {
363
+ "description": "Настройте генерацию переведённого текста языковыми моделями.",
364
+ "enableReasoning": "Включить рассуждение",
365
+ "frequencyPenalty": "Штраф за частоту",
366
+ "maxTokens": "Максимум токенов",
367
+ "minP": "Минимум P",
368
+ "presencePenalty": "Штраф за присутствие",
369
+ "repeatPenalty": "Штраф за повторение",
370
+ "sampling": "Сэмплирование",
371
+ "samplingDescription": "Управляет выбором и вариативностью текста, создаваемого моделью.",
372
+ "temperature": "Температура",
373
+ "reasoning": "Рассуждение",
374
+ "reasoningDescription": "Использует рассуждение модели во время перевода.",
375
+ "title": "Генерация",
376
+ "topK": "Топ K",
377
+ "topP": "Top P",
378
+ "vision": "Изображения",
379
+ "visionDescription": "Передаёт изображения страниц языковой модели во время перевода."
380
+ },
381
+ "loading": "Загрузка настроек…",
382
+ "pipeline": {
383
+ "description": "Выберите модели и параметры обработки каждой страницы.",
384
+ "modelLabel": "Модель «{{stage}}»",
385
+ "options": {
386
+ "bubbleThreshold": "Порог пузыря",
387
+ "negativePrompt": "Негативный промпт",
388
+ "panelThreshold": "Порог панели",
389
+ "prompt": "Промпт",
390
+ "textThreshold": "Порог текста"
391
+ },
392
+ "processing": "Обработка",
393
+ "stages": {
394
+ "detection": {
395
+ "description": "Находит текст, пузыри и панели.",
396
+ "title": "Обнаружение"
397
+ },
398
+ "inpainting": {
399
+ "description": "Восстанавливает изображение под удалённым текстом.",
400
+ "title": "Восстановление"
401
+ },
402
+ "ocr": {
403
+ "description": "Считывает исходный текст в обнаруженных областях.",
404
+ "title": "OCR"
405
+ }
406
+ },
407
+ "title": "Конвейер"
408
+ },
409
+ "providers": {
410
+ "clearCredential": "Удалить учётные данные {{provider}}",
411
+ "configured": "Настроено",
412
+ "connections": "Подключения",
413
+ "connectionsDescription": "Учётные данные безопасно хранятся на этом устройстве.",
414
+ "credential": "Учётные данные",
415
+ "credentialLabel": "Учётные данные {{provider}}",
416
+ "description": "Подключите провайдеров перевода и языковых моделей.",
417
+ "notConfigured": "Не настроено",
418
+ "title": "Провайдеры"
419
+ },
420
+ "shortcuts": {
421
+ "description": "Одноклавишные сочетания доступны, когда поле ввода текста не в фокусе.",
422
+ "inputLabel": "Сочетание для «{{action}}»",
423
+ "title": "Сочетания клавиш",
424
+ "tools": "Инструменты"
425
+ },
426
+ "tabs": {
427
+ "appearance": "Оформление",
428
+ "pipeline": "Конвейер",
429
+ "providers": "Провайдеры",
430
+ "shortcuts": "Сочетания клавиш",
431
+ "translation": "Перевод",
432
+ "typesetting": "Вёрстка"
433
+ },
434
+ "title": "Настройки",
435
+ "translation": {
436
+ "description": "Выберите модель настроенного провайдера и примените общие параметры перевода и генерации.",
437
+ "instructionsDescription": "Указания по именам, тону, терминологии или форматированию.",
438
+ "instructionsLabel": "Инструкции по переводу",
439
+ "instructionsPlaceholder": "Необязательные указания для всего проекта",
440
+ "model": "Модель",
441
+ "modelDescription": "Метки провайдеров показывают, где работает модель; подключения настраиваются отдельно.",
442
+ "modelQuantization": "Квантование модели",
443
+ "output": "Результат",
444
+ "quantization": "Квантование",
445
+ "quantizationDescription": "Меньшие форматы используют меньше памяти, обычно за счёт качества.",
446
+ "selectQuantization": "Выбрать квантование",
447
+ "targetLanguageDescription": "Выберите язык, на который нужно перевести текст.",
448
+ "title": "Перевод",
449
+ "translationModel": "Модель перевода",
450
+ "translationModelDescription": "Выберите модель для перевода текста."
451
+ },
452
+ "typesetting": {
453
+ "addFamily": "Добавить семейство шрифтов",
454
+ "defaultFamilies": "Семейства шрифтов по умолчанию",
455
+ "description": "Задайте упорядоченный стек шрифтов для текстового слоя без назначенного семейства.",
456
+ "empty": "Нет семейств по умолчанию. Koharu будет использовать системный запасной шрифт.",
457
+ "familyLabel": "Семейство шрифтов по умолчанию {{index}}",
458
+ "fontFallback": "Запасные шрифты",
459
+ "fontFallbackDescription": "Koharu использует первое доступное семейство, поддерживающее текст.",
460
+ "loadError": "Не удалось загрузить шрифты. Существующие семейства всё ещё можно удалить.",
461
+ "loadingFonts": "Загрузка шрифтов…",
462
+ "removeFamily": "Удалить {{family}}",
463
+ "title": "Вёрстка"
464
+ }
465
+ },
466
+ "start": {
467
+ "create": "Создать",
468
+ "deleteAction": "Удалить проект",
469
+ "deleteDescription": "Проект «{{name}}» и все его страницы будут удалены безвозвратно. Это действие нельзя отменить.",
470
+ "deleteLabel": "Удалить {{name}}",
471
+ "deleteTitle": "Удалить проект?",
472
+ "deleting": "Удаление…",
473
+ "description": "Откройте рабочее пространство или начните новый перевод.",
474
+ "emptyDescription": "Создайте первый проект, чтобы начать импорт страниц.",
475
+ "emptyTitle": "Проектов пока нет",
476
+ "loadingProjects": "Загрузка проектов…",
477
+ "newDescription": "Создайте чистое рабочее пространство для страниц, переводов и экспорта.",
478
+ "newProject": "Новый проект",
479
+ "projectKind": "Проект Koharu",
480
+ "projectList": "Проекты",
481
+ "projectName": "Имя проекта",
482
+ "projectNamePlaceholder": "Мой новый проект",
483
+ "storageHint": "Проекты хранятся локально в папке «Документы».",
484
+ "title": "Проекты",
485
+ "yourProjects": "Ваши проекты"
486
+ },
487
+ "startup": {
488
+ "description": "Загрузка локальных сред выполнения ИИ и подготовка рабочего пространства. Первый запуск может занять некоторое время.",
489
+ "opening": "Запуск Koharu…",
490
+ "status": "Инициализация локальных сред выполнения",
491
+ "title": "Подготовка Koharu"
492
+ },
493
+ "status": {
494
+ "zoom": "Масштаб"
495
+ },
496
+ "tools": {
497
+ "brushSize": "Размер кисти",
498
+ "brushSizeInput": "Размер кисти",
499
+ "brushSizePixels": "Размер кисти: {{size}} пикс.",
500
+ "brushSizeShort": "{{size}} пкс",
501
+ "color_picker": "Пипетка",
502
+ "decreaseBrushSize": "Уменьшить размер кисти",
503
+ "draw": "Рисование",
504
+ "eraser": "Ластик",
505
+ "increaseBrushSize": "Увеличить размер кисти",
506
+ "pan": "Перемещение",
507
+ "remove": "Удаление",
508
+ "select": "Выбор",
509
+ "text": "Текст"
510
+ },
511
+ "updater": {
512
+ "available": {
513
+ "description": "Koharu <strong>{{version}}</strong> готов к установке",
514
+ "title": "Доступно обновление"
515
+ },
516
+ "close": "Закрыть",
517
+ "downloading": {
518
+ "subtitle": "Koharu {{version}}",
519
+ "title": "Загрузка обновления…"
520
+ },
521
+ "error": {
522
+ "description": "Что-то пошло не так во время обновления",
523
+ "title": "Ошибка обновления"
524
+ },
525
+ "later": "Позже",
526
+ "noNotes": "Примечания к выпуску отсутствуют.",
527
+ "retry": "Повторить",
528
+ "update": "Обновить"
529
+ },
530
+ "window": {
531
+ "close": "Закрыть",
532
+ "maximize": "Развернуть",
533
+ "minimize": "Свернуть",
534
+ "restore": "Восстановить"
535
+ }
536
+ }