t9n-cli 0.1.0 → 0.1.1

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 +42 -0
  36. package/dist/commands/translate.d.ts +1 -0
  37. package/dist/commands/translate.js +76 -0
  38. package/dist/config.d.ts +19 -0
  39. package/dist/config.js +60 -0
  40. package/dist/i18n.d.ts +7 -0
  41. package/dist/i18n.js +52 -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 अनुवाद जो आपके कोड का सम्मान करता है।",
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": "प्रो फीचर",
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": "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": "प्रो फीचर (जल्द आ रहा है)",
52
+ "upload_pro_msg": "अपलोड एक प्रो फीचर है।\n\nहम वर्तमान में प्रीमियम फीचर्स बना रहे हैं। बने रहें!\n\nमदद चाहिए? संपर्क करें: {email}",
53
+ "download_pro_msg": "डाउनलोड एक प्रो फीचर है।\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": "प्रो प्लान और असीमित एक्सेस जल्द आ रहे हैं!",
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": "प्रो में अपग्रेड करें (जल्द आ रहा है)",
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": "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": "प्रो फीचर्स और उच्च सीमाओं के लिए साइन इन करें",
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": "CLI टूल्स या CI/CD पाइपलाइनों में उपयोग के लिए अपनी API कीज़ प्रबंधित करें।",
128
+ "create": "नई की (Key) बनाएं",
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": "i18n JSON फाइलों के लिए डेवलपर-प्रथम AI अनुवादक। शून्य सिंटैक्स त्रुटियां, वेरिएबल सुरक्षा (React Intl, i18next), और स्मार्ट संदर्भ जागरूकता।",
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 प्रारूप के लिए बनाया गया है। हमने यह सुनिश्चित करने के लिए प्रॉम्प्ट रणनीति को अनुकूलित किया है कि सभी कोड वेरिएबल्स (जैसे {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": "जब आपकी स्रोत भाषा फाइल (जैसे en.json) में नया कंटेंट जुड़ता है, तो पूरी फाइल को दोबारा अनुवाद करने की जरूरत नहीं होती।",
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
+ }
@@ -0,0 +1,244 @@
1
+ {
2
+ "home": {
3
+ "badge": "t9n - MVP",
4
+ "title": "Penerjemahan i18n yang menghormati kode Anda.",
5
+ "subtitle": "Nol Kesalahan Sintaks. Perlindungan Variabel. Sadar Konteks.",
6
+ "button": "Mulai Menerjemahkan"
7
+ },
8
+ "editor": {
9
+ "run": "JALANKAN TERJEMAHAN",
10
+ "translating": "MENERJEMAHKAN",
11
+ "source": {
12
+ "label": "Bahasa Sumber",
13
+ "upload": "Unggah JSON",
14
+ "upload_multiple": "Klik untuk unggah file JSON",
15
+ "context": "Konteks",
16
+ "context_placeholder": "Tambahkan konteks untuk meningkatkan akurasi...",
17
+ "pro_feature": "FITUR PRO",
18
+ "pro_context_msg": "Tingkatkan ke Pro untuk memberikan konteks demi akurasi lebih tinggi.",
19
+ "info": "SUMBER",
20
+ "lines": "Baris",
21
+ "clear_context": "Bersihkan",
22
+ "large_file_title": "File besar dimuat ({size})",
23
+ "large_file_desc": "Pratinjau dinonaktifkan demi performa. Konten lengkap akan dikirim untuk diterjemahkan."
24
+ },
25
+ "diff_dialog": {
26
+ "title": "Pembaruan Inkremental (Diff)",
27
+ "files_preview": "Pratinjau File",
28
+ "base_tag": "DASAR",
29
+ "start_diff": "Mulai Diff"
30
+ },
31
+ "target": {
32
+ "label": "Bahasa Target",
33
+ "copy": "Salin",
34
+ "download": "Unduh",
35
+ "no_selection": "Tidak ada bahasa yang dipilih",
36
+ "placeholder": "Pilih bahasa & jalankan terjemahan untuk melihat hasil di sini",
37
+ "stale_warning": "Sumber berubah - Terjemahan kedaluwarsa",
38
+ "max_select": "MAKS {n}",
39
+ "more_suffix": "(+{n})"
40
+ },
41
+ "mobile": {
42
+ "view_result": "Lihat Hasil",
43
+ "back_to_code": "Kembali ke Kode"
44
+ },
45
+ "features": {
46
+ "diff_title": "Diff Inkremental",
47
+ "diff_msg": "Fitur Diff / Pembaruan Inkremental akan segera hadir!",
48
+ "soon": "SEGERA"
49
+ },
50
+ "messages": {
51
+ "pro_feature_title": "Fitur Pro (Segera Hadir)",
52
+ "upload_pro_msg": "Unggah adalah fitur Pro.\n\nKami sedang membangun fitur premium. Nantikan!\n\nButuh bantuan? Hubungi: {email}",
53
+ "download_pro_msg": "Unduh adalah fitur Pro.\n\nKami sedang membangun fitur premium. Nantikan!\n\nButuh bantuan? Hubungi: {email}",
54
+ "diff_upload_hint": "Unggah semua file terjemahan Anda. File yang paling lengkap akan digunakan sebagai dasar.",
55
+ "file_too_large_title": "File Terlalu Besar",
56
+ "file_too_large_msg": "File terlalu besar ({size}). Batas maksimal adalah {limit}.\n\nFitur pemecahan file akan segera hadir!",
57
+ "copied": "Disalin ke papan klip!",
58
+ "copy_failed": "Gagal menyalin ke papan klip",
59
+ "invalid_json": "JSON Sumber Tidak Valid",
60
+ "translation_complete": "Terjemahan selesai!",
61
+ "translation_failed": "Terjemahan gagal",
62
+ "daily_limit_reached": "BATAS HARIAN TERCAPAI",
63
+ "daily_limit_desc": "Anda telah menggunakan kuota terjemahan gratis untuk hari ini.",
64
+ "pro_plan_coming_soon": "PAKET PRO & AKSES TANPA BATAS SEGERA HADIR!",
65
+ "building_premium": "Kami sedang membangun fitur premium. Nantikan!",
66
+ "contact_us": "Butuh lebih banyak? Hubungi kami: {email}",
67
+ "error_details": "Detail kesalahan:",
68
+ "limit_exceeded": "Batas Terlampaui",
69
+ "limit_exceeded_desc": "Paket {tier} mengizinkan hingga {max} kunci per permintaan. File Anda memiliki {keys} kunci.",
70
+ "insufficient_credits": "Kredit Tidak Cukup",
71
+ "insufficient_credits_desc": "Terjemahan ini membutuhkan {cost} kredit, tetapi Anda hanya memiliki sisa {available}.",
72
+ "free_plan_limit_exceeded": "BATAS PAKET GRATIS TERLAMPAUI",
73
+ "upgrade_to_pro": "TINGKATKAN KE PRO (Segera Hadir)",
74
+ "pro_benefits_1": "Kunci tak terbatas per file",
75
+ "pro_benefits_2": "Panjang konteks tak terbatas",
76
+ "pro_benefits_3": "Terjemahan Massal",
77
+ "reduce_size": "Untuk saat ini, silakan kurangi ukuran file atau konteks Anda.",
78
+ "select_target_lang": "Silakan pilih setidaknya satu bahasa target.",
79
+ "up_to_date": "Semua bahasa yang dipilih sudah mutakhir.",
80
+ "translating_placeholder": "// Menerjemahkan...",
81
+ "error_no_data": "// Kesalahan: Tidak ada data yang dikembalikan.",
82
+ "error_failed_generic": "// Kesalahan: Gagal menerjemahkan. Silakan coba lagi.",
83
+ "max_langs_reached": "Maksimal {n} bahasa target yang diizinkan dalam paket gratis.",
84
+ "credits_needed": "Kredit dibutuhkan",
85
+ "credits_remaining": "Sisa",
86
+ "invalid_base_json": "JSON Dasar Tidak Valid",
87
+ "invalid_base_content": "Konten File Dasar Tidak Valid"
88
+ }
89
+ },
90
+ "common": {
91
+ "contact": "Kontak",
92
+ "email": "z17682341097@gmail.com",
93
+ "pro": "PRO",
94
+ "coming_soon": "Segera Hadir",
95
+ "pricing": "Harga",
96
+ "docs": "Dokumentasi & CLI",
97
+ "cli": "CLI",
98
+ "i18n_note": "Semua terjemahan untuk situs ini dibuat menggunakan t9n.",
99
+ "upgrade": "Tingkatkan",
100
+ "auto_detect": "Deteksi otomatis",
101
+ "soon": "SEGERA",
102
+ "pro_only": "(Khusus {pro})",
103
+ "contact_support": "Hubungi Dukungan",
104
+ "pricing_limits": "Harga & Batasan",
105
+ "back_to_home": "KEMBALI KE BERANDA",
106
+ "back_to_editor": "Kembali ke Editor",
107
+ "mail_to": "Kirim email ke",
108
+ "cancel": "BATAL",
109
+ "close": "TUTUP",
110
+ "confirm": "KONFIRMASI",
111
+ "notification": "Notifikasi"
112
+ },
113
+ "auth": {
114
+ "login": "Masuk",
115
+ "logout": "Keluar",
116
+ "welcome_back": "Selamat Datang Kembali",
117
+ "login_desc": "Masuk untuk mengakses fitur Pro dan batas yang lebih tinggi",
118
+ "cli_login_required": "Silakan masuk terlebih dahulu menggunakan: t9n auth <your-api-key>",
119
+ "continue_google": "Lanjutkan dengan Google",
120
+ "continue_github": "Lanjutkan dengan GitHub",
121
+ "terms": "Dengan melanjutkan, Anda menyetujui Ketentuan Layanan dan Kebijakan Privasi kami."
122
+ },
123
+ "settings": {
124
+ "title": "Pengaturan",
125
+ "apikeys": {
126
+ "title": "Kunci API",
127
+ "desc": "Kelola kunci API Anda untuk digunakan dengan alat CLI atau dalam alur kerja CI/CD.",
128
+ "create": "Buat Kunci Baru",
129
+ "name_label": "Nama Kunci",
130
+ "name_placeholder": "mis. CLI Laptop Saya",
131
+ "key_secret_warning": "Harap salin kunci API Anda sekarang. Demi keamanan, kunci ini tidak akan ditampilkan lagi.",
132
+ "copy_key": "Salin Kunci",
133
+ "list_empty": "Belum ada kunci API yang dibuat.",
134
+ "revoke": "Cabut",
135
+ "revoke_confirm": "Apakah Anda yakin ingin mencabut kunci API ini? Alat yang menggunakannya akan berhenti berfungsi.",
136
+ "last_used": "Terakhir Digunakan",
137
+ "never_used": "Belum pernah",
138
+ "created": "Dibuat"
139
+ }
140
+ },
141
+ "pricing": {
142
+ "title": "Harga Sederhana & Transparan",
143
+ "subtitle": "Pilih paket yang sesuai dengan kebutuhan penerjemahan Anda.",
144
+ "monthly": "bulanan",
145
+ "daily": "harian",
146
+ "per_request": "per permintaan",
147
+ "get_started": "Mulai Sekarang",
148
+ "upgrade": "Tingkatkan Sekarang",
149
+ "contact_sales": "Hubungi Penjualan",
150
+ "features": {
151
+ "credits": "{n} Kredit",
152
+ "keys": "Hingga {n} kunci",
153
+ "langs": "Hingga {n} bahasa",
154
+ "upload_download": "Unggah / Unduh",
155
+ "diff": "Pembaruan Inkremental (Diff)",
156
+ "context": "Kesadaran Konteks"
157
+ },
158
+ "most_popular": "Paling Populer",
159
+ "custom": "Kustom"
160
+ },
161
+ "metadata": {
162
+ "title": "t9n - Penerjemah JSON untuk Pengembang | Penerjemah AI i18n",
163
+ "description": "Penerjemah AI khusus pengembang untuk file JSON i18n. Nol kesalahan sintaks, perlindungan variabel (React Intl, i18next), dan kesadaran konteks yang cerdas. Terjemahkan perangkat lunak, bukan sekadar kata.",
164
+ "og_title": "t9n - Penerjemah JSON untuk Pengembang",
165
+ "og_description": "Terjemahkan file JSON i18n tanpa merusak variabel kode Anda. Mendukung React Intl, i18next, dan lainnya."
166
+ },
167
+ "docs": {
168
+ "title": "Dokumentasi",
169
+ "subtitle": "Pelajari fitur t9n, dari penggunaan dasar hingga pembaruan inkremental tingkat lanjut dan optimasi konteks AI.",
170
+ "sections": {
171
+ "basic": {
172
+ "title": "Fitur Dasar: Terjemahan Real-time",
173
+ "content": "t9n dirancang untuk format JSON i18n. Kami telah mengoptimalkan strategi Prompt untuk memastikan semua variabel kode (seperti {name} atau {{count}}) terlindungi secara ketat selama proses penerjemahan.",
174
+ "item1": "Mendukung pemilihan massal bahasa target, menghasilkan banyak terjemahan sekaligus.",
175
+ "item2": "Pratinjau real-time: konten sumber dan konten target dibandingkan secara berdampingan."
176
+ },
177
+ "context": {
178
+ "title": "Kesadaran Konteks",
179
+ "content": "Terjemahan lebih dari sekadar kata demi kata. Dengan memberikan latar belakang aplikasi, AI dapat memilih kosakata dengan lebih akurat.",
180
+ "example": "Misalnya, kata \"Menu\" yang sama berarti \"daftar makanan\" di aplikasi restoran dan \"daftar fungsi\" di perangkat lunak desain. Memberikan Konteks dapat menghilangkan ambiguitas."
181
+ },
182
+ "diff": {
183
+ "title": "Pembaruan Inkremental Cerdas (Mode Diff)",
184
+ "content": "Saat file bahasa sumber Anda (mis. en.json) memiliki konten baru, Anda tidak perlu menerjemahkan ulang seluruh file. Mode pembaruan inkremental t9n kini mendukung otomatisasi penuh.",
185
+ "new_feature": "Baru: Pengenalan Multi-file Otomatis Penuh",
186
+ "step1_title": "1. Unggah Multi-pilih",
187
+ "step1_desc": "Pilih file bahasa Inggris (dasar) dan file terjemahan yang ada (mis. Mandarin, Jepang) secara bersamaan di dialog unggah. Tidak perlu lagi perbandingan manual.",
188
+ "step2_title": "2. Deteksi Dasar Cerdas",
189
+ "step2_desc": "Sistem secara otomatis menghitung jumlah kunci di setiap file dan menganggap yang paling lengkap sebagai 'basis terjemahan', lalu mengisi bagian yang hilang di file lainnya secara otomatis.",
190
+ "step3_title": "3. Terjemahan Presisi",
191
+ "step3_desc": "Kunci yang hilang ditandai sebagai 🚧 [MISSING]. AI hanya menerjemahkan penanda ini, menghemat lebih dari 90% kredit Anda.",
192
+ "quote": "\"Pertahankan 100% terjemahan yang ada, hanya selesaikan kebutuhan baru.\""
193
+ },
194
+ "cli": {
195
+ "tag": "Tersedia Sekarang",
196
+ "title": "t9n CLI",
197
+ "content": "Manajemen i18n profesional dari terminal Anda. Otomatiskan alur kerja penerjemahan Anda dengan antarmuka baris perintah kami yang kuat.",
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 id,ja",
203
+ "command_diff": "t9n diff ./dictionaries",
204
+ "desc_auth": "Hubungkan lingkungan lokal Anda dengan akun t9n Anda.",
205
+ "desc_init": "Buat t9n.config.json untuk menyimpan preferensi proyek Anda.",
206
+ "desc_scan": "Temukan kunci yang hilang di kode sumber Anda yang belum ada di JSON.",
207
+ "desc_translate": "Terjemahkan file lokal secara langsung dan simpan hasilnya secara otomatis.",
208
+ "desc_diff": "Pembaruan inkremental cerdas untuk semua bahasa dalam sebuah folder.",
209
+ "progress": "Siap untuk Produksi"
210
+ }
211
+ },
212
+ "example_correct": "Portfolio\" → \"Portofolio Investasi\"",
213
+ "example_incorrect": "Portfolio\" → \"Koleksi Karya Seni\""
214
+ },
215
+ "cli": {
216
+ "diff": {
217
+ "title": "🛰️ T9N CLI - Pembaruan Inkremental",
218
+ "analyzing": "🔍 Menganalisis perbedaan...",
219
+ "comparing": "Membandingkan dengan file yang ada...",
220
+ "new_lang": "Bahasa baru terdeteksi.",
221
+ "success": "Terjemahan berhasil diterima!",
222
+ "updated": "Diperbarui:",
223
+ "all_up_to_date": "✨ Semua terjemahan sudah mutakhir!"
224
+ },
225
+ "scan": {
226
+ "title": "🔍 T9N CLI - Pemindai Kode",
227
+ "scanning": "Memindai file...",
228
+ "scanned": "Memindai {n} file.",
229
+ "missing_found": "Ditemukan {n} kunci yang hilang (ada di kode tapi TIDAK ada di kamus):",
230
+ "all_present": "✨ Semua kunci di kode sudah ada di dalam kamus.",
231
+ "orphaned": "Ditemukan {n} kunci yang berpotensi tidak digunakan (ada di kamus tapi TIDAK ada di kode):"
232
+ },
233
+ "auth": {
234
+ "verifying": "Memverifikasi Kunci API...",
235
+ "success": "Autentikasi berhasil! (konfigurasi {target})",
236
+ "key_missing": "Harap berikan Kunci API. Penggunaan: t9n auth <key>"
237
+ },
238
+ "init": {
239
+ "title": "🎬 T9N - Inisialisasi Proyek",
240
+ "created": "Berhasil membuat konfigurasi proyek: {path}",
241
+ "already_exists": "File konfigurasi sudah ada di: {path}"
242
+ }
243
+ }
244
+ }