@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": "使用 {{provider}} 的 {{model}}"
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": "Caiyun 翻譯 API。",
323
+ "claude": "Anthropic Claude 模型。",
324
+ "deepl": "DeepL 翻譯 API。",
325
+ "deepseek": "DeepSeek 語言模型。",
326
+ "gemini": "Google Gemini 模型。",
327
+ "google-cloud-translation": "Google Cloud Translation API。",
328
+ "grok": "xAI Grok 語言模型。",
329
+ "lm-studio": "由 LM Studio 提供的模型。",
330
+ "local": "在此裝置上執行的模型。",
331
+ "minimax": "MiniMax 語言模型。",
332
+ "openai": "OpenAI 語言模型。",
333
+ "openai-compatible": "任何提供 OpenAI 相容 API 的伺服器。",
334
+ "openrouter": "透過 OpenRouter 路由的模型。"
335
+ },
336
+ "resources": {
337
+ "cpu": "CPU",
338
+ "processUtilization": "程序使用率",
339
+ "ram": "RAM",
340
+ "summary": "記憶體 {{ram}}%,CPU {{cpu}}%",
341
+ "title": "系統資源",
342
+ "tooltip": "記憶體 {{ramUsed}} / {{ramTotal}} · CPU {{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": "翻譯時將頁面影像輸入給 LLM。"
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": "正在載入本機 AI 執行環境並準備工作區。首次啟動可能需要一些時間。",
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
+ }
@@ -0,0 +1,28 @@
1
+ import { Bot, Cpu, KeyRound, Keyboard, Languages, Palette, SlidersHorizontal, Type, Upload } from 'lucide-react'
2
+
3
+ export const settingsTabs = [
4
+ ['appearance', Palette],
5
+ ['pipeline', Cpu],
6
+ ['providers', KeyRound],
7
+ ['translation', Languages],
8
+ ['typesetting', Type],
9
+ ['shortcuts', Keyboard],
10
+ ] as const
11
+
12
+ export type SettingsTab = (typeof settingsTabs)[number][0]
13
+
14
+ export const rightSidebarPanels = [
15
+ { id: 'properties', icon: SlidersHorizontal, label: 'agent.properties' },
16
+ { id: 'agent', icon: Bot, label: 'agent.title' },
17
+ { id: 'shenron', icon: Upload, label: 'Shenron' },
18
+ ] as const
19
+
20
+ export type RightSidebarPanel = (typeof rightSidebarPanels)[number]['id']
21
+
22
+ export const titleBarMenuSections = {
23
+ file: 'menu.file',
24
+ edit: 'menu.edit',
25
+ process: 'menu.process',
26
+ view: 'menu.view',
27
+ help: 'menu.help',
28
+ } as const