Skip to content

Commit 553b5aa

Browse files
authored
feat: Add Turkish language support (#5438)
## Summary - Added complete Turkish language translation for ComfyUI Frontend - Integrated Turkish locale into the i18n system - Added Turkish as a selectable language option in settings ## Implementation Details - Added Turkish translation files provided by @naxci1: - `src/locales/tr/main.json` - Main UI translations - `src/locales/tr/commands.json` - Command translations - `src/locales/tr/nodeDefs.json` - Node definitions translations - `src/locales/tr/settings.json` - Settings translations - Updated `src/i18n.ts` to import and register Turkish locale - Added Turkish option to language selector in `src/constants/coreSettings.ts` ## Test Plan - [ ] Verify Turkish translations load correctly - [ ] Test language switching to/from Turkish - [ ] Check all UI elements display properly in Turkish - [ ] Verify node descriptions and tooltips in Turkish - [ ] Test command palette in Turkish Fixes #5437 🤖 Generated with [Claude Code](https://claude.ai/code) ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5438-feat-Add-Turkish-language-support-2686d73d36508184bbf2dc1e0cd15350) by [Unito](https://www.unito.io)
1 parent 2ff0d95 commit 553b5aa

File tree

9 files changed

+11200
-4
lines changed

9 files changed

+11200
-4
lines changed

.i18nrc.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module.exports = defineConfig({
99
entry: 'src/locales/en',
1010
entryLocale: 'en',
1111
output: 'src/locales',
12-
outputLocales: ['zh', 'zh-TW', 'ru', 'ja', 'ko', 'fr', 'es', 'ar'],
12+
outputLocales: ['zh', 'zh-TW', 'ru', 'ja', 'ko', 'fr', 'es', 'ar', 'tr'],
1313
reference: `Special names to keep untranslated: flux, photomaker, clip, vae, cfg, stable audio, stable cascade, stable zero, controlnet, lora, HiDream.
1414
'latent' is the short form of 'latent space'.
1515
'mask' is in the context of image processing.

src/i18n.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ import ruCommands from './locales/ru/commands.json' with { type: 'json' }
2828
import ru from './locales/ru/main.json' with { type: 'json' }
2929
import ruNodes from './locales/ru/nodeDefs.json' with { type: 'json' }
3030
import ruSettings from './locales/ru/settings.json' with { type: 'json' }
31+
import trCommands from './locales/tr/commands.json' with { type: 'json' }
32+
import tr from './locales/tr/main.json' with { type: 'json' }
33+
import trNodes from './locales/tr/nodeDefs.json' with { type: 'json' }
34+
import trSettings from './locales/tr/settings.json' with { type: 'json' }
3135
import zhTWCommands from './locales/zh-TW/commands.json' with { type: 'json' }
3236
import zhTW from './locales/zh-TW/main.json' with { type: 'json' }
3337
import zhTWNodes from './locales/zh-TW/nodeDefs.json' with { type: 'json' }
@@ -55,7 +59,8 @@ const messages = {
5559
ko: buildLocale(ko, koNodes, koCommands, koSettings),
5660
fr: buildLocale(fr, frNodes, frCommands, frSettings),
5761
es: buildLocale(es, esNodes, esCommands, esSettings),
58-
ar: buildLocale(ar, arNodes, arCommands, arSettings)
62+
ar: buildLocale(ar, arNodes, arCommands, arSettings),
63+
tr: buildLocale(tr, trNodes, trCommands, trSettings)
5964
}
6065

6166
export const i18n = createI18n({

src/locales/CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Add your language code to the `outputLocales` array:
2424
```javascript
2525
module.exports = defineConfig({
2626
// ... existing config
27-
outputLocales: ['zh', 'zh-TW', 'ru', 'ja', 'ko', 'fr', 'es'], // Add your language here
27+
outputLocales: ['zh', 'zh-TW', 'ru', 'ja', 'ko', 'fr', 'es', 'tr'], // Add your language here
2828
reference: `Special names to keep untranslated: flux, photomaker, clip, vae, cfg, stable audio, stable cascade, stable zero, controlnet, lora, HiDream.
2929
'latent' is the short form of 'latent space'.
3030
'mask' is in the context of image processing.

src/locales/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Our project supports multiple languages using `vue-i18n`. This allows users arou
1111
- ko (한국어)
1212
- fr (Français)
1313
- es (Español)
14+
- tr (Türkçe)
1415

1516
## How to Add a New Language
1617

src/locales/tr/commands.json

Lines changed: 312 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,312 @@
1+
{
2+
"Comfy-Desktop_CheckForUpdates": {
3+
"label": "Güncellemeleri Kontrol Et"
4+
},
5+
"Comfy-Desktop_Folders_OpenCustomNodesFolder": {
6+
"label": "Özel Düğümler Klasörünü Aç"
7+
},
8+
"Comfy-Desktop_Folders_OpenInputsFolder": {
9+
"label": "Girişler Klasörünü Aç"
10+
},
11+
"Comfy-Desktop_Folders_OpenLogsFolder": {
12+
"label": "Kayıtlar Klasörünü Aç"
13+
},
14+
"Comfy-Desktop_Folders_OpenModelConfig": {
15+
"label": "extra_model_paths.yaml dosyasını aç"
16+
},
17+
"Comfy-Desktop_Folders_OpenModelsFolder": {
18+
"label": "Modeller Klasörünü Aç"
19+
},
20+
"Comfy-Desktop_Folders_OpenOutputsFolder": {
21+
"label": "Çıktılar Klasörünü Aç"
22+
},
23+
"Comfy-Desktop_OpenDevTools": {
24+
"label": "Geliştirici Araçlarını Aç"
25+
},
26+
"Comfy-Desktop_OpenUserGuide": {
27+
"label": "Masaüstü Kullanıcı Kılavuzu"
28+
},
29+
"Comfy-Desktop_Quit": {
30+
"label": "Çık"
31+
},
32+
"Comfy-Desktop_Reinstall": {
33+
"label": "Yeniden Yükle"
34+
},
35+
"Comfy-Desktop_Restart": {
36+
"label": "Yeniden Başlat"
37+
},
38+
"Comfy_3DViewer_Open3DViewer": {
39+
"label": "Seçili Düğüm için 3D Görüntüleyiciyi (Beta) Aç"
40+
},
41+
"Comfy_BrowseTemplates": {
42+
"label": "Şablonlara Gözat"
43+
},
44+
"Comfy_Canvas_DeleteSelectedItems": {
45+
"label": "Seçili Öğeleri Sil"
46+
},
47+
"Comfy_Canvas_FitView": {
48+
"label": "Görünümü seçili düğümlere sığdır"
49+
},
50+
"Comfy_Canvas_Lock": {
51+
"label": "Tuvali Kilitle"
52+
},
53+
"Comfy_Canvas_MoveSelectedNodes_Down": {
54+
"label": "Seçili Düğümleri Aşağı Taşı"
55+
},
56+
"Comfy_Canvas_MoveSelectedNodes_Left": {
57+
"label": "Seçili Düğümleri Sola Taşı"
58+
},
59+
"Comfy_Canvas_MoveSelectedNodes_Right": {
60+
"label": "Seçili Düğümleri Sağa Taşı"
61+
},
62+
"Comfy_Canvas_MoveSelectedNodes_Up": {
63+
"label": "Seçili Düğümleri Yukarı Taşı"
64+
},
65+
"Comfy_Canvas_ResetView": {
66+
"label": "Görünümü Sıfırla"
67+
},
68+
"Comfy_Canvas_Resize": {
69+
"label": "Seçili Düğümleri Yeniden Boyutlandır"
70+
},
71+
"Comfy_Canvas_ToggleLinkVisibility": {
72+
"label": "Tuval Bağlantı Görünürlüğünü Aç/Kapat"
73+
},
74+
"Comfy_Canvas_ToggleLock": {
75+
"label": "Tuval Kilidini Aç/Kapat"
76+
},
77+
"Comfy_Canvas_ToggleMinimap": {
78+
"label": "Mini Haritayı Aç/Kapat"
79+
},
80+
"Comfy_Canvas_ToggleSelected_Pin": {
81+
"label": "Seçili Öğeleri Sabitle/Sabitlemeyi Kaldır"
82+
},
83+
"Comfy_Canvas_ToggleSelectedNodes_Bypass": {
84+
"label": "Seçili Düğümleri Atla/Geri Al"
85+
},
86+
"Comfy_Canvas_ToggleSelectedNodes_Collapse": {
87+
"label": "Seçili Düğümleri Daralt/Genişlet"
88+
},
89+
"Comfy_Canvas_ToggleSelectedNodes_Mute": {
90+
"label": "Seçili Düğümleri Sessize Al/Sesi Aç"
91+
},
92+
"Comfy_Canvas_ToggleSelectedNodes_Pin": {
93+
"label": "Seçili Düğümleri Sabitle/Sabitlemeyi Kaldır"
94+
},
95+
"Comfy_Canvas_Unlock": {
96+
"label": "Tuvalin Kilidini Aç"
97+
},
98+
"Comfy_Canvas_ZoomIn": {
99+
"label": "Yakınlaştır"
100+
},
101+
"Comfy_Canvas_ZoomOut": {
102+
"label": "Uzaklaştır"
103+
},
104+
"Comfy_ClearPendingTasks": {
105+
"label": "Bekleyen Görevleri Temizle"
106+
},
107+
"Comfy_ClearWorkflow": {
108+
"label": "İş Akışını Temizle"
109+
},
110+
"Comfy_ContactSupport": {
111+
"label": "Destekle İletişime Geç"
112+
},
113+
"Comfy_Dev_ShowModelSelector": {
114+
"label": "Model Seçiciyi Göster (Geliştirici)"
115+
},
116+
"Comfy_DuplicateWorkflow": {
117+
"label": "Mevcut İş Akışını Çoğalt"
118+
},
119+
"Comfy_ExportWorkflow": {
120+
"label": "İş Akışını Dışa Aktar"
121+
},
122+
"Comfy_ExportWorkflowAPI": {
123+
"label": "İş Akışını Dışa Aktar (API Formatı)"
124+
},
125+
"Comfy_Feedback": {
126+
"label": "Geri Bildirim Ver"
127+
},
128+
"Comfy_Graph_ConvertToSubgraph": {
129+
"label": "Seçimi Alt Grafiğe Dönüştür"
130+
},
131+
"Comfy_Graph_ExitSubgraph": {
132+
"label": "Alt Grafikten Çık"
133+
},
134+
"Comfy_Graph_FitGroupToContents": {
135+
"label": "Grubu İçeriğe Sığdır"
136+
},
137+
"Comfy_Graph_GroupSelectedNodes": {
138+
"label": "Seçili Düğümleri Gruplandır"
139+
},
140+
"Comfy_Graph_UnpackSubgraph": {
141+
"label": "Seçili Alt Grafiği Aç"
142+
},
143+
"Comfy_GroupNode_ConvertSelectedNodesToGroupNode": {
144+
"label": "Seçili düğümleri grup düğümüne dönüştür"
145+
},
146+
"Comfy_GroupNode_ManageGroupNodes": {
147+
"label": "Grup düğümlerini yönet"
148+
},
149+
"Comfy_GroupNode_UngroupSelectedGroupNodes": {
150+
"label": "Seçili grup düğümlerinin grubunu çöz"
151+
},
152+
"Comfy_Help_AboutComfyUI": {
153+
"label": "ComfyUI Hakkında'yı Aç"
154+
},
155+
"Comfy_Help_OpenComfyOrgDiscord": {
156+
"label": "Comfy-Org Discord'unu Aç"
157+
},
158+
"Comfy_Help_OpenComfyUIDocs": {
159+
"label": "ComfyUI Belgelerini Aç"
160+
},
161+
"Comfy_Help_OpenComfyUIForum": {
162+
"label": "ComfyUI Forumunu Aç"
163+
},
164+
"Comfy_Help_OpenComfyUIIssues": {
165+
"label": "ComfyUI Sorunlarını Aç"
166+
},
167+
"Comfy_Interrupt": {
168+
"label": "Kes"
169+
},
170+
"Comfy_LoadDefaultWorkflow": {
171+
"label": "Varsayılan İş Akışını Yükle"
172+
},
173+
"Comfy_Manager_CustomNodesManager_ShowCustomNodesMenu": {
174+
"label": "Özel Düğüm Yöneticisi"
175+
},
176+
"Comfy_Manager_CustomNodesManager_ShowLegacyCustomNodesMenu": {
177+
"label": "Özel Düğümler (Eski)"
178+
},
179+
"Comfy_Manager_ShowLegacyManagerMenu": {
180+
"label": "Yönetici Menüsü (Eski)"
181+
},
182+
"Comfy_Manager_ShowMissingPacks": {
183+
"label": "Eksik Özel Düğümleri Yükle"
184+
},
185+
"Comfy_Manager_ShowUpdateAvailablePacks": {
186+
"label": "Özel Düğüm Güncellemelerini Kontrol Et"
187+
},
188+
"Comfy_Manager_ToggleManagerProgressDialog": {
189+
"label": "Özel Düğüm Yöneticisi İlerleme Çubuğunu Aç/Kapat"
190+
},
191+
"Comfy_MaskEditor_BrushSize_Decrease": {
192+
"label": "Maske Düzenleyicide Fırça Boyutunu Azalt"
193+
},
194+
"Comfy_MaskEditor_BrushSize_Increase": {
195+
"label": "Maske Düzenleyicide Fırça Boyutunu Artır"
196+
},
197+
"Comfy_MaskEditor_OpenMaskEditor": {
198+
"label": "Seçili Düğüm için Maske Düzenleyiciyi Aç"
199+
},
200+
"Comfy_Memory_UnloadModels": {
201+
"label": "Modelleri Boşalt"
202+
},
203+
"Comfy_Memory_UnloadModelsAndExecutionCache": {
204+
"label": "Modelleri ve Yürütme Önbelleğini Boşalt"
205+
},
206+
"Comfy_NewBlankWorkflow": {
207+
"label": "Yeni Boş İş Akışı"
208+
},
209+
"Comfy_OpenClipspace": {
210+
"label": "Clipspace"
211+
},
212+
"Comfy_OpenManagerDialog": {
213+
"label": "Yönetici"
214+
},
215+
"Comfy_OpenWorkflow": {
216+
"label": "İş Akışını Aç"
217+
},
218+
"Comfy_PublishSubgraph": {
219+
"label": "Alt Grafiği Yayınla"
220+
},
221+
"Comfy_QueuePrompt": {
222+
"label": "İstemi Kuyruğa Al"
223+
},
224+
"Comfy_QueuePromptFront": {
225+
"label": "İstemi Kuyruğa Al (Ön)"
226+
},
227+
"Comfy_QueueSelectedOutputNodes": {
228+
"label": "Seçili Çıktı Düğümlerini Kuyruğa Al"
229+
},
230+
"Comfy_Redo": {
231+
"label": "Yinele"
232+
},
233+
"Comfy_RefreshNodeDefinitions": {
234+
"label": "Düğüm Tanımlarını Yenile"
235+
},
236+
"Comfy_SaveWorkflow": {
237+
"label": "İş Akışını Kaydet"
238+
},
239+
"Comfy_SaveWorkflowAs": {
240+
"label": "İş Akışını Farklı Kaydet"
241+
},
242+
"Comfy_ShowSettingsDialog": {
243+
"label": "Ayarlar İletişim Kutusunu Göster"
244+
},
245+
"Comfy_ToggleCanvasInfo": {
246+
"label": "Tuval Performansı"
247+
},
248+
"Comfy_ToggleHelpCenter": {
249+
"label": "Yardım Merkezi"
250+
},
251+
"Comfy_ToggleTheme": {
252+
"label": "Temayı Değiştir (Karanlık/Açık)"
253+
},
254+
"Comfy_Undo": {
255+
"label": "Geri Al"
256+
},
257+
"Comfy_User_OpenSignInDialog": {
258+
"label": "Giriş Yapma İletişim Kutusunu Aç"
259+
},
260+
"Comfy_User_SignOut": {
261+
"label": "Çıkış Yap"
262+
},
263+
"Workspace_CloseWorkflow": {
264+
"label": "Mevcut İş Akışını Kapat"
265+
},
266+
"Workspace_NextOpenedWorkflow": {
267+
"label": "Sonraki Açılan İş Akışı"
268+
},
269+
"Workspace_PreviousOpenedWorkflow": {
270+
"label": "Önceki Açılan İş Akışı"
271+
},
272+
"Workspace_SearchBox_Toggle": {
273+
"label": "Arama Kutusunu Aç/Kapat"
274+
},
275+
"Workspace_ToggleBottomPanel": {
276+
"label": "Alt Paneli Aç/Kapat"
277+
},
278+
"Workspace_ToggleBottomPanel_Shortcuts": {
279+
"label": "Tuş Atamaları İletişim Kutusunu Göster"
280+
},
281+
"Workspace_ToggleBottomPanelTab_command-terminal": {
282+
"label": "Terminal Alt Panelini Aç/Kapat"
283+
},
284+
"Workspace_ToggleBottomPanelTab_logs-terminal": {
285+
"label": "Kayıtlar Alt Panelini Aç/Kapat"
286+
},
287+
"Workspace_ToggleBottomPanelTab_shortcuts-essentials": {
288+
"label": "Temel Alt Paneli Aç/Kapat"
289+
},
290+
"Workspace_ToggleBottomPanelTab_shortcuts-view-controls": {
291+
"label": "Görünüm Kontrolleri Alt Panelini Aç/Kapat"
292+
},
293+
"Workspace_ToggleFocusMode": {
294+
"label": "Odak Modunu Aç/Kapat"
295+
},
296+
"Workspace_ToggleSidebarTab_model-library": {
297+
"label": "Model Kütüphanesi Kenar Çubuğunu Aç/Kapat",
298+
"tooltip": "Model Kütüphanesi"
299+
},
300+
"Workspace_ToggleSidebarTab_node-library": {
301+
"label": "Düğüm Kütüphanesi Kenar Çubuğunu Aç/Kapat",
302+
"tooltip": "Düğüm Kütüphanesi"
303+
},
304+
"Workspace_ToggleSidebarTab_queue": {
305+
"label": "Kuyruk Kenar Çubuğunu Aç/Kapat",
306+
"tooltip": "Kuyruk"
307+
},
308+
"Workspace_ToggleSidebarTab_workflows": {
309+
"label": "İş Akışları Kenar Çubuğunu Aç/Kapat",
310+
"tooltip": "İş Akışları"
311+
}
312+
}

0 commit comments

Comments
 (0)