t9n-cli 0.1.0 → 0.1.2

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 (47) hide show
  1. package/dictionaries/ar.json +244 -0
  2. package/dictionaries/de.json +244 -0
  3. package/dictionaries/el.json +244 -0
  4. package/dictionaries/en.json +244 -0
  5. package/dictionaries/es.json +244 -0
  6. package/dictionaries/fr.json +244 -0
  7. package/dictionaries/hi.json +244 -0
  8. package/dictionaries/id.json +244 -0
  9. package/dictionaries/it.json +244 -0
  10. package/dictionaries/ja.json +244 -0
  11. package/dictionaries/ko.json +244 -0
  12. package/dictionaries/ms.json +244 -0
  13. package/dictionaries/nl.json +244 -0
  14. package/dictionaries/pl.json +244 -0
  15. package/dictionaries/pt.json +244 -0
  16. package/dictionaries/ru.json +244 -0
  17. package/dictionaries/sv.json +244 -0
  18. package/dictionaries/th.json +244 -0
  19. package/dictionaries/tr.json +244 -0
  20. package/dictionaries/vi.json +244 -0
  21. package/dictionaries/yue.json +244 -0
  22. package/dictionaries/zh-CN.json +244 -0
  23. package/dictionaries/zh-TW.json +244 -0
  24. package/dist/api.d.ts +1 -0
  25. package/dist/api.js +52 -0
  26. package/dist/commands/auth.d.ts +1 -0
  27. package/dist/commands/auth.js +41 -0
  28. package/dist/commands/diff.d.ts +1 -0
  29. package/dist/commands/diff.js +96 -0
  30. package/dist/commands/init.d.ts +1 -0
  31. package/dist/commands/init.js +32 -0
  32. package/dist/commands/scan.d.ts +1 -0
  33. package/dist/commands/scan.js +151 -0
  34. package/dist/commands/status.d.ts +1 -0
  35. package/dist/commands/status.js +49 -0
  36. package/dist/commands/translate.d.ts +1 -0
  37. package/dist/commands/translate.js +92 -0
  38. package/dist/config.d.ts +20 -0
  39. package/dist/config.js +81 -0
  40. package/dist/i18n.d.ts +15 -0
  41. package/dist/i18n.js +72 -0
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.js +58 -0
  44. package/dist/lib/jsonUtils.d.ts +12 -0
  45. package/dist/lib/jsonUtils.js +151 -0
  46. package/dist/tsconfig.tsbuildinfo +1 -0
  47. package/package.json +2 -2
@@ -0,0 +1,244 @@
1
+ {
2
+ "home": {
3
+ "badge": "t9n - MVP",
4
+ "title": "i18n-översättning som respekterar din kod.",
5
+ "subtitle": "Noll syntaxfel. Variabelskydd. Kontextmedveten.",
6
+ "button": "Börja översätta"
7
+ },
8
+ "editor": {
9
+ "run": "KÖR ÖVERSÄTTNING",
10
+ "translating": "ÖVERSÄTTER",
11
+ "source": {
12
+ "label": "Källspråk",
13
+ "upload": "Ladda upp JSON",
14
+ "upload_multiple": "Klicka för att ladda upp JSON-filer",
15
+ "context": "Kontext",
16
+ "context_placeholder": "Lägg till kontext för bättre översättning...",
17
+ "pro_feature": "PRO-FUNKTION",
18
+ "pro_context_msg": "Uppgradera för att ge kontext för högre noggrannhet.",
19
+ "info": "KÄLLA",
20
+ "lines": "Rader",
21
+ "clear_context": "Rensa",
22
+ "large_file_title": "Stor fil laddad ({size})",
23
+ "large_file_desc": "Förhandsgranskning inaktiverad för prestanda. Hela innehållet skickas för översättning."
24
+ },
25
+ "diff_dialog": {
26
+ "title": "Inkrementell uppdatering (Diff)",
27
+ "files_preview": "Förhandsgranskning av filer",
28
+ "base_tag": "BAS",
29
+ "start_diff": "Starta Diff"
30
+ },
31
+ "target": {
32
+ "label": "Målspråk",
33
+ "copy": "Kopiera",
34
+ "download": "Ladda ner",
35
+ "no_selection": "Inga språk valda",
36
+ "placeholder": "Välj språk och kör översättning för att se resultat här",
37
+ "stale_warning": "Källan ändrad - Översättning inaktuell",
38
+ "max_select": "MAX {n}",
39
+ "more_suffix": "(+{n})"
40
+ },
41
+ "mobile": {
42
+ "view_result": "Visa resultat",
43
+ "back_to_code": "Tillbaka till kod"
44
+ },
45
+ "features": {
46
+ "diff_title": "Inkrementell Diff",
47
+ "diff_msg": "Diff / Inkrementell uppdatering kommer snart!",
48
+ "soon": "SNART"
49
+ },
50
+ "messages": {
51
+ "pro_feature_title": "Pro-funktion (Kommer snart)",
52
+ "upload_pro_msg": "Uppladdning är en Pro-funktion.\n\nVi bygger premiumfunktionerna just nu. Håll utkik!\n\nBehöver du hjälp? Kontakta: {email}",
53
+ "download_pro_msg": "Nedladdning är en Pro-funktion.\n\nVi bygger premiumfunktionerna just nu. Håll utkik!\n\nBehöver du hjälp? Kontakta: {email}",
54
+ "diff_upload_hint": "Ladda upp alla dina översättningsfiler. Den mest kompletta används som bas.",
55
+ "file_too_large_title": "Filen är för stor",
56
+ "file_too_large_msg": "Filen är för stor ({size}). Maxgränsen är {limit}.\n\nFunktion för att dela upp filer kommer snart!",
57
+ "copied": "Kopierat till urklipp!",
58
+ "copy_failed": "Misslyckades att kopiera till urklipp",
59
+ "invalid_json": "Ogiltig käll-JSON",
60
+ "translation_complete": "Översättning klar!",
61
+ "translation_failed": "Översättning misslyckades",
62
+ "daily_limit_reached": "DAGLIG GRÄNS NÅDD",
63
+ "daily_limit_desc": "Du har använt dina gratisöversättningar för idag.",
64
+ "pro_plan_coming_soon": "PRO-PLAN OCH OBEGRÄNSAD TILLGÅNG KOMMER SNART!",
65
+ "building_premium": "Vi bygger premiumfunktionerna just nu. Håll utkik!",
66
+ "contact_us": "Behöver du mer? Kontakta oss: {email}",
67
+ "error_details": "Feldetaljer:",
68
+ "limit_exceeded": "Gräns överskriden",
69
+ "limit_exceeded_desc": "{tier}-planen tillåter upp till {max} nycklar per begäran. Din fil har {keys} nycklar.",
70
+ "insufficient_credits": "Otillräckligt med krediter",
71
+ "insufficient_credits_desc": "Denna översättning kräver {cost} krediter, men du har {available} kvar.",
72
+ "free_plan_limit_exceeded": "GRÄNS FÖR GRATISPLAN ÖVERSKRIDEN",
73
+ "upgrade_to_pro": "UPPGRADERA TILL PRO (Kommer snart)",
74
+ "pro_benefits_1": "Obegränsat antal nycklar per fil",
75
+ "pro_benefits_2": "Obegränsad kontextlängd",
76
+ "pro_benefits_3": "Batchöversättning",
77
+ "reduce_size": "Vänligen minska filstorleken eller kontexten tills vidare.",
78
+ "select_target_lang": "Välj minst ett målspråk.",
79
+ "up_to_date": "Alla valda språk är uppdaterade.",
80
+ "translating_placeholder": "// Översätter...",
81
+ "error_no_data": "// Fel: Ingen data returnerades.",
82
+ "error_failed_generic": "// Fel: Översättning misslyckades. Försök igen.",
83
+ "max_langs_reached": "Max {n} målspråk tillåtna i gratisplanen.",
84
+ "credits_needed": "Krediter som krävs",
85
+ "credits_remaining": "Kvarvarande",
86
+ "invalid_base_json": "Ogiltig bas-JSON",
87
+ "invalid_base_content": "Ogiltigt innehåll i basfil"
88
+ }
89
+ },
90
+ "common": {
91
+ "contact": "Kontakt",
92
+ "email": "z17682341097@gmail.com",
93
+ "pro": "PRO",
94
+ "coming_soon": "Kommer snart",
95
+ "pricing": "Prissättning",
96
+ "docs": "Docs & CLI",
97
+ "cli": "CLI",
98
+ "i18n_note": "Alla översättningar på denna sida genererades med t9n.",
99
+ "upgrade": "Uppgradera",
100
+ "auto_detect": "Auto-detektera",
101
+ "soon": "SNART",
102
+ "pro_only": "(Endast {pro})",
103
+ "contact_support": "Kontakta support",
104
+ "pricing_limits": "Priser & gränser",
105
+ "back_to_home": "TILLBAKA TILL HEM",
106
+ "back_to_editor": "Tillbaka till editor",
107
+ "mail_to": "Maila till",
108
+ "cancel": "AVBRYT",
109
+ "close": "STÄNG",
110
+ "confirm": "BEKRÄFTA",
111
+ "notification": "Notifiering"
112
+ },
113
+ "auth": {
114
+ "login": "Logga in",
115
+ "logout": "Logga ut",
116
+ "welcome_back": "Välkommen tillbaka",
117
+ "login_desc": "Logga in för att få tillgång till Pro-funktioner och högre gränser",
118
+ "cli_login_required": "Logga in först med: t9n auth <your-api-key>",
119
+ "continue_google": "Fortsätt med Google",
120
+ "continue_github": "Fortsätt med GitHub",
121
+ "terms": "Genom att fortsätta godkänner du våra användarvillkor och integritetspolicy."
122
+ },
123
+ "settings": {
124
+ "title": "Inställningar",
125
+ "apikeys": {
126
+ "title": "API-nycklar",
127
+ "desc": "Hantera dina API-nycklar för användning med CLI-verktyg eller i CI/CD-pipelines.",
128
+ "create": "Skapa ny nyckel",
129
+ "name_label": "Nyckelnamn",
130
+ "name_placeholder": "t.ex. Min bärbara CLI",
131
+ "key_secret_warning": "Kopiera din API-nyckel nu. För din säkerhet kommer den inte att visas igen.",
132
+ "copy_key": "Kopiera nyckel",
133
+ "list_empty": "Inga API-nycklar skapade ännu.",
134
+ "revoke": "Återkalla",
135
+ "revoke_confirm": "Är du säker på att du vill återkalla denna API-nyckel? Verktyg som använder den kommer att sluta fungera.",
136
+ "last_used": "Senast använd",
137
+ "never_used": "Aldrig",
138
+ "created": "Skapad"
139
+ }
140
+ },
141
+ "pricing": {
142
+ "title": "Enkel och transparent prissättning",
143
+ "subtitle": "Välj den plan som passar dina översättningsbehov.",
144
+ "monthly": "månad",
145
+ "daily": "dag",
146
+ "per_request": "per begäran",
147
+ "get_started": "Kom igång",
148
+ "upgrade": "Uppgradera nu",
149
+ "contact_sales": "Kontakta sälj",
150
+ "features": {
151
+ "credits": "{n} krediter",
152
+ "keys": "Upp till {n} nycklar",
153
+ "langs": "Upp till {n} språk",
154
+ "upload_download": "Uppladdning / Nedladdning",
155
+ "diff": "Inkrementell uppdatering (Diff)",
156
+ "context": "Kontextmedvetenhet"
157
+ },
158
+ "most_popular": "Mest populär",
159
+ "custom": "Anpassad"
160
+ },
161
+ "metadata": {
162
+ "title": "t9n - JSON-översättare för utvecklare | i18n AI-översättare",
163
+ "description": "AI-översättaren för i18n JSON-filer byggd för utvecklare. Noll syntaxfel, variabelskydd (React Intl, i18next) och smart kontextmedvetenhet. Översätt mjukvara, inte bara ord.",
164
+ "og_title": "t9n - JSON-översättare för utvecklare",
165
+ "og_description": "Översätt i18n JSON-filer utan att förstöra dina kodvariabler. Stöd för React Intl, i18next med flera."
166
+ },
167
+ "docs": {
168
+ "title": "Dokumentation",
169
+ "subtitle": "Utforska t9n:s funktioner, från grundläggande användning till avancerade inkrementella uppdateringar och AI-kontextoptimering.",
170
+ "sections": {
171
+ "basic": {
172
+ "title": "Basfunktion: Realtidsöversättning",
173
+ "content": "t9n är designad för i18n JSON-format. Vi har optimerat prompt-strategin för att säkerställa att alla kodvariabler (som {name} eller {{count}}) skyddas strikt under översättningsprocessen.",
174
+ "item1": "Stöd för batchval av målspråk, generera flera översättningar samtidigt.",
175
+ "item2": "Realtidsförhandsvisning: källinnehåll och målinnehåll jämförs sida vid sida."
176
+ },
177
+ "context": {
178
+ "title": "Kontextmedvetenhet",
179
+ "content": "Översättning handlar om mer än bara ord-för-ord. Genom att ge applikationsbakgrund kan AI välja vokabulär mer exakt.",
180
+ "example": "Till exempel är ordet \"Menu\" en \"meny\" i en restaurangapp men en \"funktionslista\" i en designmjukvara. Genom att ge kontext kan tvetydigheter elimineras."
181
+ },
182
+ "diff": {
183
+ "title": "Intelligent inkrementell uppdatering (Diff-läge)",
184
+ "content": "När din källspråksfil (t.ex. en.json) har nytt innehåll behöver du inte översätta hela filen igen. t9n:s läge för inkrementella uppdateringar stöder nu full automation.",
185
+ "new_feature": "Nytt: Helautomatisk igenkänning av flera filer",
186
+ "step1_title": "1. Flervalsuppladdning",
187
+ "step1_desc": "Välj engelska (bas) och befintliga översättningsfiler (t.ex. kinesiska, japanska) samtidigt i uppladdningsdialogen. Inga fler manuella jämförelser.",
188
+ "step2_title": "2. Smart bas-detektering",
189
+ "step2_desc": "Systemet räknar automatiskt nycklar i varje fil och behandlar den mest kompletta som 'översättningsbas', och fyller automatiskt i saknade delar i de andra.",
190
+ "step3_title": "3. Precisionsöversättning",
191
+ "step3_desc": "Saknade nycklar markeras som 🚧 [MISSING]. AI översätter endast dessa markeringar, vilket sparar dig över 90% i krediter.",
192
+ "quote": "\"Behåll 100% av befintliga översättningar, hantera endast nya krav.\""
193
+ },
194
+ "cli": {
195
+ "tag": "Tillgänglig nu",
196
+ "title": "t9n CLI",
197
+ "content": "Professionell i18n-hantering från din terminal. Automatisera ditt översättningsflöde med vårt kraftfulla kommandoradsgränssnitt.",
198
+ "install": "npm install -g @t9n/cli",
199
+ "command_auth": "t9n auth <key>",
200
+ "command_init": "t9n init",
201
+ "command_scan": "t9n scan ./src",
202
+ "command_translate": "t9n translate ./en.json -t zh-CN,ja",
203
+ "command_diff": "t9n diff ./dictionaries",
204
+ "desc_auth": "Koppla din lokala miljö till ditt t9n-konto.",
205
+ "desc_init": "Skapa t9n.config.json för att spara dina projektinställningar.",
206
+ "desc_scan": "Hitta saknade nycklar i din källkod som ännu inte finns i din JSON.",
207
+ "desc_translate": "Översätt lokala filer direkt och spara resultaten automatiskt.",
208
+ "desc_diff": "Smarta inkrementella uppdateringar för alla språk i en mapp.",
209
+ "progress": "Redo för produktion"
210
+ }
211
+ },
212
+ "example_correct": "Portfolio\" → \"Investeringsportfölj\"",
213
+ "example_incorrect": "Portfolio\" → \"Konstsamling\""
214
+ },
215
+ "cli": {
216
+ "diff": {
217
+ "title": "🛰️ T9N CLI - Inkrementell uppdatering",
218
+ "analyzing": "🔍 Analyserar skillnader...",
219
+ "comparing": "Jämför med befintlig fil...",
220
+ "new_lang": "Nytt språk upptäckt.",
221
+ "success": "Översättning mottagen!",
222
+ "updated": "Uppdaterad:",
223
+ "all_up_to_date": "✨ Alla översättningar är aktuella!"
224
+ },
225
+ "scan": {
226
+ "title": "🔍 T9N CLI - Kodskanner",
227
+ "scanning": "Skannar filer...",
228
+ "scanned": "Skannade {n} filer.",
229
+ "missing_found": "Hittade {n} saknade nycklar (i koden men INTE i ordlistan):",
230
+ "all_present": "✨ Alla nycklar i koden finns i ordlistan.",
231
+ "orphaned": "Hittade {n} potentiellt oanvända nycklar (i ordlistan men INTE i koden):"
232
+ },
233
+ "auth": {
234
+ "verifying": "Verifierar API-nyckel...",
235
+ "success": "Autentisering lyckades! ({target} config)",
236
+ "key_missing": "Ange en API-nyckel. Användning: t9n auth <key>"
237
+ },
238
+ "init": {
239
+ "title": "🎬 T9N - Projektinitiering",
240
+ "created": "Skapade projektkonfiguration: {path}",
241
+ "already_exists": "Konfigurationsfilen finns redan på: {path}"
242
+ }
243
+ }
244
+ }
@@ -0,0 +1,244 @@
1
+ {
2
+ "home": {
3
+ "badge": "t9n - MVP",
4
+ "title": "การแปล i18n ที่คงรูปแบบโค้ดของคุณ",
5
+ "subtitle": "ไม่มีข้อผิดพลาดไวยากรณ์ ป้องกันตัวแปร เข้าใจบริบท",
6
+ "button": "เริ่มแปลภาษา"
7
+ },
8
+ "editor": {
9
+ "run": "เริ่มการแปล",
10
+ "translating": "กำลังแปล...",
11
+ "source": {
12
+ "label": "ภาษาต้นทาง",
13
+ "upload": "อัปโหลด JSON",
14
+ "upload_multiple": "คลิกเพื่ออัปโหลดไฟล์ JSON",
15
+ "context": "บริบท",
16
+ "context_placeholder": "เพิ่มบริบทเพื่อความแม่นยำ...",
17
+ "pro_feature": "ฟีเจอร์ PRO",
18
+ "pro_context_msg": "อัปเกรดเพื่อเพิ่มบริบทและความแม่นยำ",
19
+ "info": "ต้นทาง",
20
+ "lines": "บรรทัด",
21
+ "clear_context": "ล้าง",
22
+ "large_file_title": "โหลดไฟล์ขนาดใหญ่แล้ว ({size})",
23
+ "large_file_desc": "ปิดการแสดงตัวอย่างเพื่อประสิทธิภาพ จะส่งเนื้อหาทั้งหมดเพื่อแปล"
24
+ },
25
+ "diff_dialog": {
26
+ "title": "อัปเดตส่วนต่าง (Diff)",
27
+ "files_preview": "ตัวอย่างไฟล์",
28
+ "base_tag": "หลัก",
29
+ "start_diff": "เริ่มหาจุดต่าง"
30
+ },
31
+ "target": {
32
+ "label": "ภาษาปลายทาง",
33
+ "copy": "คัดลอก",
34
+ "download": "ดาวน์โหลด",
35
+ "no_selection": "ยังไม่ได้เลือกภาษา",
36
+ "placeholder": "เลือกภาษาและกดแปลเพื่อดูผลลัพธ์ที่นี่",
37
+ "stale_warning": "ต้นทางเปลี่ยน - คำแปลไม่อัปเดต",
38
+ "max_select": "สูงสุด {n}",
39
+ "more_suffix": "(+{n})"
40
+ },
41
+ "mobile": {
42
+ "view_result": "ดูผลลัพธ์",
43
+ "back_to_code": "กลับไปที่โค้ด"
44
+ },
45
+ "features": {
46
+ "diff_title": "Diff ส่วนเพิ่ม",
47
+ "diff_msg": "ฟีเจอร์ Diff / อัปเดตส่วนเพิ่ม กำลังจะมาเร็วๆ นี้!",
48
+ "soon": "เร็วๆ นี้"
49
+ },
50
+ "messages": {
51
+ "pro_feature_title": "ฟีเจอร์ Pro (เร็วๆ นี้)",
52
+ "upload_pro_msg": "การอัปโหลดเป็นฟีเจอร์ Pro\n\nเรากำลังพัฒนาฟีเจอร์พรีเมียม โปรดติดตาม!\n\nต้องการความช่วยเหลือ? ติดต่อ: {email}",
53
+ "download_pro_msg": "การดาวน์โหลดเป็นฟีเจอร์ Pro\n\nเรากำลังพัฒนาฟีเจอร์พรีเมียม โปรดติดตาม!\n\nต้องการความช่วยเหลือ? ติดต่อ: {email}",
54
+ "diff_upload_hint": "อัปโหลดไฟล์แปลทั้งหมด ไฟล์ที่สมบูรณ์ที่สุดจะใช้เป็นหลัก",
55
+ "file_too_large_title": "ไฟล์ใหญ่เกินไป",
56
+ "file_too_large_msg": "ไฟล์ใหญ่เกินไป ({size}) จำกัดสูงสุดคือ {limit}\n\nฟีเจอร์แบ่งไฟล์กำลังจะมาเร็วๆ นี้!",
57
+ "copied": "คัดลอกไปยังคลิปบอร์ดแล้ว!",
58
+ "copy_failed": "คัดลอกไม่สำเร็จ",
59
+ "invalid_json": "JSON ต้นทางไม่ถูกต้อง",
60
+ "translation_complete": "แปลภาษาเสร็จสมบูรณ์!",
61
+ "translation_failed": "แปลภาษาไม่สำเร็จ",
62
+ "daily_limit_reached": "ถึงขีดจำกัดรายวันแล้ว",
63
+ "daily_limit_desc": "คุณใช้โควตาแปลฟรีของวันนี้หมดแล้ว",
64
+ "pro_plan_coming_soon": "แผน PRO และการเข้าถึงไม่จำกัด กำลังจะมาเร็วๆ นี้!",
65
+ "building_premium": "เรากำลังพัฒนาฟีเจอร์พรีเมียม โปรดติดตาม!",
66
+ "contact_us": "ต้องการเพิ่ม? ติดต่อเรา: {email}",
67
+ "error_details": "รายละเอียดข้อผิดพลาด:",
68
+ "limit_exceeded": "เกินขีดจำกัด",
69
+ "limit_exceeded_desc": "แผน {tier} อนุญาตสูงสุด {max} คีย์ต่อครั้ง ไฟล์ของคุณมี {keys} คีย์",
70
+ "insufficient_credits": "เครดิตไม่เพียงพอ",
71
+ "insufficient_credits_desc": "การแปลนี้ต้องใช้ {cost} เครดิต แต่คุณเหลือ {available} เครดิต",
72
+ "free_plan_limit_exceeded": "เกินขีดจำกัดแผนฟรี",
73
+ "upgrade_to_pro": "อัปเกรดเป็น PRO (เร็วๆ นี้)",
74
+ "pro_benefits_1": "ไม่จำกัดคีย์ต่อไฟล์",
75
+ "pro_benefits_2": "ไม่จำกัดความยาวบริบท",
76
+ "pro_benefits_3": "แปลแบบกลุ่ม",
77
+ "reduce_size": "ในขณะนี้ โปรดลดขนาดไฟล์หรือบริบทลง",
78
+ "select_target_lang": "โปรดเลือกอย่างน้อยหนึ่งภาษา",
79
+ "up_to_date": "ทุกภาษาที่เลือกเป็นเวอร์ชันล่าสุดแล้ว",
80
+ "translating_placeholder": "// กำลังแปล...",
81
+ "error_no_data": "// ข้อผิดพลาด: ไม่มีข้อมูลส่งกลับ",
82
+ "error_failed_generic": "// ข้อผิดพลาด: แปลไม่สำเร็จ โปรดลองใหม่",
83
+ "max_langs_reached": "แผนฟรีอนุญาตสูงสุด {n} ภาษา",
84
+ "credits_needed": "เครดิตที่ต้องใช้",
85
+ "credits_remaining": "คงเหลือ",
86
+ "invalid_base_json": "JSON หลักไม่ถูกต้อง",
87
+ "invalid_base_content": "เนื้อหาไฟล์หลักไม่ถูกต้อง"
88
+ }
89
+ },
90
+ "common": {
91
+ "contact": "ติดต่อ",
92
+ "email": "z17682341097@gmail.com",
93
+ "pro": "PRO",
94
+ "coming_soon": "เร็วๆ นี้",
95
+ "pricing": "ราคา",
96
+ "docs": "คู่มือและ CLI",
97
+ "cli": "CLI",
98
+ "i18n_note": "คำแปลทั้งหมดในไซต์นี้สร้างโดย t9n",
99
+ "upgrade": "อัปเกรด",
100
+ "auto_detect": "ตรวจหาอัตโนมัติ",
101
+ "soon": "เร็วๆ นี้",
102
+ "pro_only": "(เฉพาะ {pro})",
103
+ "contact_support": "ติดต่อฝ่ายสนับสนุน",
104
+ "pricing_limits": "ราคาและขีดจำกัด",
105
+ "back_to_home": "กลับหน้าแรก",
106
+ "back_to_editor": "กลับไปที่ตัวแก้ไข",
107
+ "mail_to": "ส่งอีเมลถึง",
108
+ "cancel": "ยกเลิก",
109
+ "close": "ปิด",
110
+ "confirm": "ยืนยัน",
111
+ "notification": "การแจ้งเตือน"
112
+ },
113
+ "auth": {
114
+ "login": "เข้าสู่ระบบ",
115
+ "logout": "ออกจากระบบ",
116
+ "welcome_back": "ยินดีต้อนรับกลับมา",
117
+ "login_desc": "เข้าสู่ระบบเพื่อใช้งานฟีเจอร์ Pro และขีดจำกัดที่สูงขึ้น",
118
+ "cli_login_required": "โปรดเข้าสู่ระบบก่อนด้วย: t9n auth <your-api-key>",
119
+ "continue_google": "ดำเนินการต่อด้วย Google",
120
+ "continue_github": "ดำเนินการต่อด้วย GitHub",
121
+ "terms": "การดำเนินการต่อถือว่าคุณยอมรับข้อกำหนดการให้บริการและนโยบายความเป็นส่วนตัว"
122
+ },
123
+ "settings": {
124
+ "title": "การตั้งค่า",
125
+ "apikeys": {
126
+ "title": "รหัส API",
127
+ "desc": "จัดการรหัส API สำหรับใช้กับเครื่องมือ CLI หรือ CI/CD pipeline",
128
+ "create": "สร้างรหัสใหม่",
129
+ "name_label": "ชื่อรหัส",
130
+ "name_placeholder": "เช่น CLI บนโน้ตบุ๊ก",
131
+ "key_secret_warning": "โปรดคัดลอกรหัส API ทันที เพื่อความปลอดภัย รหัสจะไม่แสดงอีก",
132
+ "copy_key": "คัดลอกรหัส",
133
+ "list_empty": "ยังไม่ได้สร้างรหัส API",
134
+ "revoke": "เพิกถอน",
135
+ "revoke_confirm": "คุณแน่ใจหรือไม่ว่าต้องการเพิกถอนรหัส API นี้? เครื่องมือที่ใช้อยู่จะหยุดทำงาน",
136
+ "last_used": "ใช้งานล่าสุด",
137
+ "never_used": "ไม่เคยใช้",
138
+ "created": "สร้างเมื่อ"
139
+ }
140
+ },
141
+ "pricing": {
142
+ "title": "ราคาที่เรียบง่ายและโปร่งใส",
143
+ "subtitle": "เลือกแผนที่เหมาะกับความต้องการในการแปลของคุณ",
144
+ "monthly": "รายเดือน",
145
+ "daily": "รายวัน",
146
+ "per_request": "ต่อคำขอ",
147
+ "get_started": "เริ่มต้นใช้งาน",
148
+ "upgrade": "อัปเกรดตอนนี้",
149
+ "contact_sales": "ติดต่อฝ่ายขาย",
150
+ "features": {
151
+ "credits": "{n} เครดิต",
152
+ "keys": "สูงสุด {n} คีย์",
153
+ "langs": "สูงสุด {n} ภาษา",
154
+ "upload_download": "อัปโหลด / ดาวน์โหลด",
155
+ "diff": "อัปเดตส่วนเพิ่ม (Diff)",
156
+ "context": "การเข้าใจบริบท"
157
+ },
158
+ "most_popular": "ยอดนิยม",
159
+ "custom": "กำหนดเอง"
160
+ },
161
+ "metadata": {
162
+ "title": "t9n - ตัวแปล JSON สำหรับนักพัฒนา | ตัวแปล i18n ด้วย AI",
163
+ "description": "ตัวแปล AI สำหรับไฟล์ i18n JSON ที่เน้นนักพัฒนา ไม่มีข้อผิดพลาดไวยากรณ์ ป้องกันตัวแปร และเข้าใจบริบท",
164
+ "og_title": "t9n - ตัวแปล JSON สำหรับนักพัฒนา",
165
+ "og_description": "แปลไฟล์ i18n JSON โดยไม่ทำลายตัวแปรโค้ด รองรับ React Intl, i18next และอื่นๆ"
166
+ },
167
+ "docs": {
168
+ "title": "เอกสารประกอบ",
169
+ "subtitle": "เจาะลึกฟีเจอร์ของ t9n ตั้งแต่การใช้งานเบื้องต้นไปจนถึงการอัปเดตส่วนเพิ่ม",
170
+ "sections": {
171
+ "basic": {
172
+ "title": "ฟีเจอร์พื้นฐาน: การแปลแบบเรียลไทม์",
173
+ "content": "t9n ออกแบบมาเพื่อรูปแบบ i18n JSON เราปรับปรุงกลยุทธ์ Prompt เพื่อให้แน่ใจว่าตัวแปรโค้ดทั้งหมด (เช่น {name} หรือ {{count}}) จะได้รับการปกป้องอย่างเคร่งครัด",
174
+ "item1": "รองรับการเลือกภาษาปลายทางพร้อมกันหลายภาษา",
175
+ "item2": "ดูตัวอย่างแบบเรียลไทม์: เปรียบเทียบเนื้อหาต้นทางและปลายทางเคียงข้างกัน"
176
+ },
177
+ "context": {
178
+ "title": "การเข้าใจบริบท",
179
+ "content": "การแปลเป็นมากกว่าการแปลทีละคำ AI สามารถเลือกคำศัพท์ได้แม่นยำขึ้นเมื่อมีข้อมูลพื้นฐานของแอปพลิเคชัน",
180
+ "example": "ตัวอย่างเช่น คำว่า \"Menu\" อาจหมายถึงเมนูอาหาร หรือรายการฟังก์ชันในซอฟต์แวร์ การระบุบริบทจะช่วยลดความคลุมเครือ"
181
+ },
182
+ "diff": {
183
+ "title": "การอัปเดตส่วนเพิ่มอัจฉริยะ (โหมด Diff)",
184
+ "content": "เมื่อไฟล์ภาษาต้นทางของคุณมีเนื้อหาใหม่ ไม่จำเป็นต้องแปลใหม่ทั้งไฟล์ โหมดอัปเดตส่วนเพิ่มของ t9n รองรับระบบอัตโนมัติเต็มรูปแบบแล้ว",
185
+ "new_feature": "ใหม่: ระบบตรวจจับหลายไฟล์อัตโนมัติ",
186
+ "step1_title": "1. เลือกอัปโหลดหลายไฟล์",
187
+ "step1_desc": "เลือกไฟล์ภาษาอังกฤษ (หลัก) และไฟล์แปลที่มีอยู่พร้อมกัน ระบบจะเปรียบเทียบให้โดยอัตโนมัติ",
188
+ "step2_title": "2. ตรวจจับไฟล์หลักอัจฉริยะ",
189
+ "step2_desc": "ระบบจะนับคีย์ในแต่ละไฟล์โดยอัตโนมัติและใช้ไฟล์ที่สมบูรณ์ที่สุดเป็น 'ฐานการแปล' และเติมส่วนที่ขาดหาย",
190
+ "step3_title": "3. การแปลที่แม่นยำ",
191
+ "step3_desc": "คีย์ที่หายไปจะถูกทำเครื่องหมายเป็น 🚧 [MISSING] AI จะแปลเฉพาะจุดนี้ ช่วยประหยัดเครดิตได้กว่า 90%",
192
+ "quote": "\"รักษาคำแปลเดิมไว้ 100% จัดการเฉพาะส่วนที่เพิ่มมาใหม่\""
193
+ },
194
+ "cli": {
195
+ "tag": "พร้อมใช้งานแล้ว",
196
+ "title": "t9n CLI",
197
+ "content": "จัดการ i18n แบบมืออาชีพจากเทอร์มินัลของคุณ",
198
+ "install": "npm install -g @t9n/cli",
199
+ "command_auth": "t9n auth <key>",
200
+ "command_init": "t9n init",
201
+ "command_scan": "t9n scan ./src",
202
+ "command_translate": "t9n translate ./en.json -t zh-CN,ja",
203
+ "command_diff": "t9n diff ./dictionaries",
204
+ "desc_auth": "เชื่อมโยงสภาพแวดล้อมภายในเครื่องกับบัญชี t9n",
205
+ "desc_init": "สร้าง t9n.config.json เพื่อบันทึกการตั้งค่าโปรเจกต์",
206
+ "desc_scan": "ค้นหาคีย์ที่หายไปในซอร์สโค้ดที่ยังไม่อยู่ในไฟล์ JSON",
207
+ "desc_translate": "แปลไฟล์ในเครื่องโดยตรงและบันทึกผลลัพธ์อัตโนมัติ",
208
+ "desc_diff": "อัปเดตส่วนเพิ่มอัจฉริยะสำหรับทุกภาษาในโฟลเดอร์",
209
+ "progress": "พร้อมสำหรับการใช้งานจริง"
210
+ }
211
+ },
212
+ "example_correct": "Portfolio\" → \"พอร์ตการลงทุน\"",
213
+ "example_incorrect": "Portfolio\" → \"คลังผลงานศิลปะ\""
214
+ },
215
+ "cli": {
216
+ "diff": {
217
+ "title": "🛰️ T9N CLI - อัปเดตส่วนเพิ่ม",
218
+ "analyzing": "🔍 กำลังวิเคราะห์ส่วนต่าง...",
219
+ "comparing": "กำลังเปรียบเทียบกับไฟล์ที่มีอยู่...",
220
+ "new_lang": "ตรวจพบภาษาใหม่",
221
+ "success": "ได้รับคำแปลเรียบร้อยแล้ว!",
222
+ "updated": "อัปเดตแล้ว:",
223
+ "all_up_to_date": "✨ คำแปลทั้งหมดเป็นปัจจุบันแล้ว!"
224
+ },
225
+ "scan": {
226
+ "title": "🔍 T9N CLI - ตัวสแกนโค้ด",
227
+ "scanning": "กำลังสแกนไฟล์...",
228
+ "scanned": "สแกนแล้ว {n} ไฟล์",
229
+ "missing_found": "พบ {n} คีย์ที่หายไป (มีในโค้ดแต่ไม่มีในดิกชันนารี):",
230
+ "all_present": "✨ คีย์ทั้งหมดในโค้ดมีอยู่ในดิกชันนารีแล้ว",
231
+ "orphaned": "พบ {n} คีย์ที่อาจไม่ได้ใช้งาน (มีในดิกชันนารีแต่ไม่มีในโค้ด):"
232
+ },
233
+ "auth": {
234
+ "verifying": "กำลังตรวจสอบรหัส API...",
235
+ "success": "ตรวจสอบสิทธิ์สำเร็จ! (ตั้งค่า {target})",
236
+ "key_missing": "โปรดระบุรหัส API วิธีใช้: t9n auth <key>"
237
+ },
238
+ "init": {
239
+ "title": "🎬 T9N - การตั้งค่าเริ่มต้นโปรเจกต์",
240
+ "created": "สร้างไฟล์ตั้งค่าโปรเจกต์แล้ว: {path}",
241
+ "already_exists": "มีไฟล์ตั้งค่าอยู่แล้วที่: {path}"
242
+ }
243
+ }
244
+ }