iLuJack commited on
Commit
42fe171
·
1 Parent(s): 50ed665

docs(locales): add traditional chinese support

Browse files
lightrag_webui/src/components/AppSettings.tsx CHANGED
@@ -22,7 +22,7 @@ export default function AppSettings({ className }: AppSettingsProps) {
22
  const setTheme = useSettingsStore.use.setTheme()
23
 
24
  const handleLanguageChange = useCallback((value: string) => {
25
- setLanguage(value as 'en' | 'zh' | 'fr' | 'ar')
26
  }, [setLanguage])
27
 
28
  const handleThemeChange = useCallback((value: string) => {
@@ -49,6 +49,7 @@ export default function AppSettings({ className }: AppSettingsProps) {
49
  <SelectItem value="zh">中文</SelectItem>
50
  <SelectItem value="fr">Français</SelectItem>
51
  <SelectItem value="ar">العربية</SelectItem>
 
52
  </SelectContent>
53
  </Select>
54
  </div>
 
22
  const setTheme = useSettingsStore.use.setTheme()
23
 
24
  const handleLanguageChange = useCallback((value: string) => {
25
+ setLanguage(value as 'en' | 'zh' | 'fr' | 'ar' | 'zh_TW')
26
  }, [setLanguage])
27
 
28
  const handleThemeChange = useCallback((value: string) => {
 
49
  <SelectItem value="zh">中文</SelectItem>
50
  <SelectItem value="fr">Français</SelectItem>
51
  <SelectItem value="ar">العربية</SelectItem>
52
+ <SelectItem value="zh_TW">繁體中文</SelectItem>
53
  </SelectContent>
54
  </Select>
55
  </div>
lightrag_webui/src/i18n.ts CHANGED
@@ -6,6 +6,7 @@ import en from './locales/en.json'
6
  import zh from './locales/zh.json'
7
  import fr from './locales/fr.json'
8
  import ar from './locales/ar.json'
 
9
 
10
  const getStoredLanguage = () => {
11
  try {
@@ -27,7 +28,8 @@ i18n
27
  en: { translation: en },
28
  zh: { translation: zh },
29
  fr: { translation: fr },
30
- ar: { translation: ar }
 
31
  },
32
  lng: getStoredLanguage(), // Use stored language settings
33
  fallbackLng: 'en',
 
6
  import zh from './locales/zh.json'
7
  import fr from './locales/fr.json'
8
  import ar from './locales/ar.json'
9
+ import zh_TW from './locales/zh_TW.json'
10
 
11
  const getStoredLanguage = () => {
12
  try {
 
28
  en: { translation: en },
29
  zh: { translation: zh },
30
  fr: { translation: fr },
31
+ ar: { translation: ar },
32
+ zh_TW: { translation: zh_TW }
33
  },
34
  lng: getStoredLanguage(), // Use stored language settings
35
  fallbackLng: 'en',
lightrag_webui/src/locales/zh_TW.json ADDED
@@ -0,0 +1,348 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "settings": {
3
+ "language": "語言",
4
+ "theme": "主題",
5
+ "light": "淺色",
6
+ "dark": "深色",
7
+ "system": "系統"
8
+ },
9
+ "header": {
10
+ "documents": "文件",
11
+ "knowledgeGraph": "知識圖譜",
12
+ "retrieval": "檢索",
13
+ "api": "API",
14
+ "projectRepository": "專案庫",
15
+ "logout": "登出",
16
+ "themeToggle": {
17
+ "switchToLight": "切換至淺色主題",
18
+ "switchToDark": "切換至深色主題"
19
+ }
20
+ },
21
+ "login": {
22
+ "description": "請輸入您的帳號和密碼登入系統",
23
+ "username": "帳號",
24
+ "usernamePlaceholder": "請輸入帳號",
25
+ "password": "密碼",
26
+ "passwordPlaceholder": "請輸入密碼",
27
+ "loginButton": "登入",
28
+ "loggingIn": "登入中...",
29
+ "successMessage": "登入成功",
30
+ "errorEmptyFields": "請輸入您的帳號和密碼",
31
+ "errorInvalidCredentials": "登入失敗,請檢查帳號和密碼",
32
+ "authDisabled": "認證已停用,使用免登入模式",
33
+ "guestMode": "免登入"
34
+ },
35
+ "common": {
36
+ "cancel": "取消"
37
+ },
38
+ "documentPanel": {
39
+ "clearDocuments": {
40
+ "button": "清空",
41
+ "tooltip": "清空文件",
42
+ "title": "清空文件",
43
+ "description": "此操作將從系統中移除所有文件",
44
+ "warning": "警告:此操作將永久刪除所有文件,無法復原!",
45
+ "confirm": "確定要清空所有文件嗎?",
46
+ "confirmPrompt": "請輸入 yes 確認操作",
47
+ "confirmPlaceholder": "輸入 yes 以確認",
48
+ "clearCache": "清空 LLM 快取",
49
+ "confirmButton": "確定",
50
+ "success": "文件清空成功",
51
+ "cacheCleared": "快取清空成功",
52
+ "cacheClearFailed": "清空快取失敗:\n{{error}}",
53
+ "failed": "清空文件失敗:\n{{message}}",
54
+ "error": "清空文件失敗:\n{{error}}"
55
+ },
56
+ "uploadDocuments": {
57
+ "button": "上傳",
58
+ "tooltip": "上傳文件",
59
+ "title": "上傳文件",
60
+ "description": "拖曳檔案至此處或點擊瀏覽",
61
+ "single": {
62
+ "uploading": "正在上傳 {{name}}:{{percent}}%",
63
+ "success": "上傳成功:\n{{name}} 上傳完成",
64
+ "failed": "上傳失敗:\n{{name}}\n{{message}}",
65
+ "error": "上傳失敗:\n{{name}}\n{{error}}"
66
+ },
67
+ "batch": {
68
+ "uploading": "正在上傳檔案...",
69
+ "success": "檔案上傳完成",
70
+ "error": "部分檔案上傳失敗"
71
+ },
72
+ "generalError": "上傳失敗\n{{error}}",
73
+ "fileTypes": "支援的檔案類型:TXT, MD, DOCX, PDF, PPTX, RTF, ODT, EPUB, HTML, HTM, TEX, JSON, XML, YAML, YML, CSV, LOG, CONF, INI, PROPERTIES, SQL, BAT, SH, C, CPP, PY, JAVA, JS, TS, SWIFT, GO, RB, PHP, CSS, SCSS, LESS",
74
+ "fileUploader": {
75
+ "singleFileLimit": "一次只能上傳一個檔案",
76
+ "maxFilesLimit": "最多只能上傳 {{count}} 個檔案",
77
+ "fileRejected": "檔案 {{name}} 被拒絕",
78
+ "unsupportedType": "不支援的檔案類型",
79
+ "fileTooLarge": "檔案過大,最大允許 {{maxSize}}",
80
+ "dropHere": "將檔案拖放至此處",
81
+ "dragAndDrop": "拖放檔案至此處,或點擊選擇檔案",
82
+ "removeFile": "移除檔案",
83
+ "uploadDescription": "您可以上傳{{isMultiple ? '多個' : count}}個檔案(每個檔案最大{{maxSize}})",
84
+ "duplicateFile": "檔案名稱與伺服器上的快取重複"
85
+ }
86
+ },
87
+ "documentManager": {
88
+ "title": "文件管理",
89
+ "scanButton": "掃描",
90
+ "scanTooltip": "掃描輸入目錄中的文件",
91
+ "pipelineStatusButton": "pipeline 狀態",
92
+ "pipelineStatusTooltip": "查看pipeline 狀態",
93
+ "uploadedTitle": "已上傳文件",
94
+ "uploadedDescription": "已上傳文件清單及其狀態",
95
+ "emptyTitle": "無文件",
96
+ "emptyDescription": "尚未上傳任何文件",
97
+ "columns": {
98
+ "id": "ID",
99
+ "summary": "摘要",
100
+ "status": "狀態",
101
+ "length": "長度",
102
+ "chunks": "分塊",
103
+ "created": "建立時間",
104
+ "updated": "更新時間",
105
+ "metadata": "元資料"
106
+ },
107
+ "status": {
108
+ "all": "全部",
109
+ "completed": "已完成",
110
+ "processing": "處理中",
111
+ "pending": "等待中",
112
+ "failed": "失敗"
113
+ },
114
+ "errors": {
115
+ "loadFailed": "載入文件失敗\n{{error}}",
116
+ "scanFailed": "掃描文件失敗\n{{error}}",
117
+ "scanProgressFailed": "取得掃描進度失敗\n{{error}}"
118
+ },
119
+ "fileNameLabel": "檔案名稱",
120
+ "showButton": "顯示",
121
+ "hideButton": "隱藏",
122
+ "showFileNameTooltip": "顯示檔案名稱",
123
+ "hideFileNameTooltip": "隱藏檔案名稱"
124
+ },
125
+ "pipelineStatus": {
126
+ "title": "pipeline 狀態",
127
+ "busy": "pipeline 忙碌中",
128
+ "requestPending": "待處理請求",
129
+ "jobName": "工作名稱",
130
+ "startTime": "開始時間",
131
+ "progress": "進度",
132
+ "unit": "梯次",
133
+ "latestMessage": "最新訊息",
134
+ "historyMessages": "歷史訊息",
135
+ "errors": {
136
+ "fetchFailed": "取得pipeline 狀態失敗\n{{error}}"
137
+ }
138
+ }
139
+ },
140
+ "graphPanel": {
141
+ "dataIsTruncated": "圖資料已截斷至最大回傳節點數",
142
+ "statusDialog": {
143
+ "title": "LightRAG 伺服器設定",
144
+ "description": "查看目前系統狀態和連線資訊"
145
+ },
146
+ "legend": "圖例",
147
+ "nodeTypes": {
148
+ "person": "人物角色",
149
+ "category": "分類",
150
+ "geo": "地理名稱",
151
+ "location": "位置",
152
+ "organization": "組織機構",
153
+ "event": "事件",
154
+ "equipment": "設備",
155
+ "weapon": "武器",
156
+ "animal": "動物",
157
+ "unknown": "未知",
158
+ "object": "物品",
159
+ "group": "群組",
160
+ "technology": "技術"
161
+ },
162
+ "sideBar": {
163
+ "settings": {
164
+ "settings": "設定",
165
+ "healthCheck": "健康檢查",
166
+ "showPropertyPanel": "顯示屬性面板",
167
+ "showSearchBar": "顯示搜尋列",
168
+ "showNodeLabel": "顯示節點標籤",
169
+ "nodeDraggable": "節點可拖曳",
170
+ "showEdgeLabel": "顯示 Edge 標籤",
171
+ "hideUnselectedEdges": "隱藏未選取的 Edge",
172
+ "edgeEvents": "Edge 事件",
173
+ "maxQueryDepth": "最大查詢深度",
174
+ "maxNodes": "最大回傳節點數",
175
+ "maxLayoutIterations": "最大版面配置迭代次數",
176
+ "resetToDefault": "重設為預設值",
177
+ "edgeSizeRange": "Edge 粗細範圍",
178
+ "depth": "深度",
179
+ "max": "最大值",
180
+ "degree": "鄰邊",
181
+ "apiKey": "API key",
182
+ "enterYourAPIkey": "輸入您的 API key",
183
+ "save": "儲存",
184
+ "refreshLayout": "重新整理版面配置"
185
+ },
186
+ "zoomControl": {
187
+ "zoomIn": "放大",
188
+ "zoomOut": "縮小",
189
+ "resetZoom": "重設縮放",
190
+ "rotateCamera": "順時針旋轉圖形",
191
+ "rotateCameraCounterClockwise": "逆時針旋轉圖形"
192
+ },
193
+ "layoutsControl": {
194
+ "startAnimation": "繼續版面配置動畫",
195
+ "stopAnimation": "停止版面配置動畫",
196
+ "layoutGraph": "圖形版面配置",
197
+ "layouts": {
198
+ "Circular": "環形",
199
+ "Circlepack": "圓形打包",
200
+ "Random": "隨機",
201
+ "Noverlaps": "無重疊",
202
+ "Force Directed": "力導向",
203
+ "Force Atlas": "力圖"
204
+ }
205
+ },
206
+ "fullScreenControl": {
207
+ "fullScreen": "全螢幕",
208
+ "windowed": "視窗"
209
+ },
210
+ "legendControl": {
211
+ "toggleLegend": "切換圖例顯示"
212
+ }
213
+ },
214
+ "statusIndicator": {
215
+ "connected": "已連線",
216
+ "disconnected": "未連線"
217
+ },
218
+ "statusCard": {
219
+ "unavailable": "狀態資訊不可用",
220
+ "storageInfo": "儲存資訊",
221
+ "workingDirectory": "工作目錄",
222
+ "inputDirectory": "輸入目錄",
223
+ "llmConfig": "LLM 設定",
224
+ "llmBinding": "LLM 綁定",
225
+ "llmBindingHost": "LLM 綁定主機",
226
+ "llmModel": "LLM 模型",
227
+ "maxTokens": "最大權杖數",
228
+ "embeddingConfig": "嵌入設定",
229
+ "embeddingBinding": "嵌入綁定",
230
+ "embeddingBindingHost": "嵌入綁定主機",
231
+ "embeddingModel": "嵌入模型",
232
+ "storageConfig": "儲存設定",
233
+ "kvStorage": "KV 儲存",
234
+ "docStatusStorage": "文件狀態儲存",
235
+ "graphStorage": "圖形儲存",
236
+ "vectorStorage": "向量儲存"
237
+ },
238
+ "propertiesView": {
239
+ "node": {
240
+ "title": "節點",
241
+ "id": "ID",
242
+ "labels": "標籤",
243
+ "degree": "度數",
244
+ "properties": "屬性",
245
+ "relationships": "關係(子圖內)",
246
+ "expandNode": "展開節點",
247
+ "pruneNode": "修剪節點",
248
+ "deleteAllNodesError": "拒絕刪除圖中的所有節點",
249
+ "nodesRemoved": "已刪除 {{count}} 個節點,包括孤立節點",
250
+ "noNewNodes": "沒有發現可以展開的節點",
251
+ "propertyNames": {
252
+ "description": "描述",
253
+ "entity_id": "名稱",
254
+ "entity_type": "類型",
255
+ "source_id": "來源ID",
256
+ "Neighbour": "鄰接",
257
+ "file_path": "來源"
258
+ }
259
+ },
260
+ "edge": {
261
+ "title": "關係",
262
+ "id": "ID",
263
+ "type": "類型",
264
+ "source": "來源節點",
265
+ "target": "目標節點",
266
+ "properties": "屬性"
267
+ }
268
+ },
269
+ "search": {
270
+ "placeholder": "搜尋節點...",
271
+ "message": "還有 {count} 個"
272
+ },
273
+ "graphLabels": {
274
+ "selectTooltip": "選擇查詢標籤",
275
+ "noLabels": "未找到標籤",
276
+ "label": "標籤",
277
+ "placeholder": "搜尋標籤...",
278
+ "andOthers": "還有 {count} 個",
279
+ "refreshTooltip": "重新載入圖形資料"
280
+ },
281
+ "emptyGraph": "圖譜資料為空"
282
+ },
283
+ "retrievePanel": {
284
+ "chatMessage": {
285
+ "copyTooltip": "複製到剪貼簿",
286
+ "copyError": "複製文字到剪貼簿失敗"
287
+ },
288
+ "retrieval": {
289
+ "startPrompt": "輸入查詢開始檢索",
290
+ "clear": "清空",
291
+ "send": "送出",
292
+ "placeholder": "輸入查詢...",
293
+ "error": "錯誤:取得回應失敗"
294
+ },
295
+ "querySettings": {
296
+ "parametersTitle": "參數",
297
+ "parametersDescription": "設定查詢參數",
298
+ "queryMode": "查詢模式",
299
+ "queryModeTooltip": "選擇檢索策略:\n• Naive:基礎搜尋,無進階技術\n• Local:上下文相關資訊檢索\n• Global:利用全域知識庫\n• Hybrid:結合本地和全域檢索\n• Mix:整合知識圖譜和向量檢索",
300
+ "queryModeOptions": {
301
+ "naive": "Naive",
302
+ "local": "Local",
303
+ "global": "Global",
304
+ "hybrid": "Hybrid",
305
+ "mix": "Mix"
306
+ },
307
+ "responseFormat": "回應格式",
308
+ "responseFormatTooltip": "定義回應格式。例如:\n• 多段落\n• 單段落\n• 重點",
309
+ "responseFormatOptions": {
310
+ "multipleParagraphs": "多段落",
311
+ "singleParagraph": "單段落",
312
+ "bulletPoints": "重點"
313
+ },
314
+ "topK": "Top K結果",
315
+ "topKTooltip": "檢索的前幾項結果數。在'local'模式下表示實體,在'global'模式下表示關係",
316
+ "topKPlaceholder": "結果數量",
317
+ "maxTokensTextUnit": "文字單元最大權杖數",
318
+ "maxTokensTextUnitTooltip": "每個檢索文字區塊允許的最大權杖數",
319
+ "maxTokensGlobalContext": "全域上下文最大權杖數",
320
+ "maxTokensGlobalContextTooltip": "全域檢索中關係描述的最大權杖數",
321
+ "maxTokensLocalContext": "本地上下文最大權杖數",
322
+ "maxTokensLocalContextTooltip": "本地檢索中實體描述的最大權杖數",
323
+ "historyTurns": "歷史輪次",
324
+ "historyTurnsTooltip": "回應上下文中考慮的完整對話輪次(使用者-助手對)數量",
325
+ "historyTurnsPlaceholder": "歷史輪次數",
326
+ "hlKeywords": "進階關鍵字",
327
+ "hlKeywordsTooltip": "檢索中優先考慮的進階關鍵字清單。用逗號分隔",
328
+ "hlkeywordsPlaceHolder": "輸入關鍵字",
329
+ "llKeywords": "基礎關鍵字",
330
+ "llKeywordsTooltip": "用於細化檢索重點的基礎關鍵字清單。用逗號分隔",
331
+ "onlyNeedContext": "僅需上下文",
332
+ "onlyNeedContextTooltip": "如果為True,僅回傳檢索到的上下文而不產生回應",
333
+ "onlyNeedPrompt": "僅需提示",
334
+ "onlyNeedPromptTooltip": "如果為True,僅回傳產生的提示而不產生回應",
335
+ "streamResponse": "串流回應",
336
+ "streamResponseTooltip": "如果為True,啟用即時串流輸出回應"
337
+ }
338
+ },
339
+ "apiSite": {
340
+ "loading": "正在載入 API 文件..."
341
+ },
342
+ "apiKeyAlert": {
343
+ "title": "需要 API key",
344
+ "description": "請輸入您的 API key 以存取服務",
345
+ "placeholder": "請輸入 API key",
346
+ "save": "儲存"
347
+ }
348
+ }
lightrag_webui/src/stores/settings.ts CHANGED
@@ -5,7 +5,7 @@ import { defaultQueryLabel } from '@/lib/constants'
5
  import { Message, QueryRequest } from '@/api/lightrag'
6
 
7
  type Theme = 'dark' | 'light' | 'system'
8
- type Language = 'en' | 'zh' | 'fr' | 'ar'
9
  type Tab = 'documents' | 'knowledge-graph' | 'retrieval' | 'api'
10
 
11
  interface SettingsState {
 
5
  import { Message, QueryRequest } from '@/api/lightrag'
6
 
7
  type Theme = 'dark' | 'light' | 'system'
8
+ type Language = 'en' | 'zh' | 'fr' | 'ar' | 'zh_TW'
9
  type Tab = 'documents' | 'knowledge-graph' | 'retrieval' | 'api'
10
 
11
  interface SettingsState {