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.
- package/dictionaries/ar.json +244 -0
- package/dictionaries/de.json +244 -0
- package/dictionaries/el.json +244 -0
- package/dictionaries/en.json +244 -0
- package/dictionaries/es.json +244 -0
- package/dictionaries/fr.json +244 -0
- package/dictionaries/hi.json +244 -0
- package/dictionaries/id.json +244 -0
- package/dictionaries/it.json +244 -0
- package/dictionaries/ja.json +244 -0
- package/dictionaries/ko.json +244 -0
- package/dictionaries/ms.json +244 -0
- package/dictionaries/nl.json +244 -0
- package/dictionaries/pl.json +244 -0
- package/dictionaries/pt.json +244 -0
- package/dictionaries/ru.json +244 -0
- package/dictionaries/sv.json +244 -0
- package/dictionaries/th.json +244 -0
- package/dictionaries/tr.json +244 -0
- package/dictionaries/vi.json +244 -0
- package/dictionaries/yue.json +244 -0
- package/dictionaries/zh-CN.json +244 -0
- package/dictionaries/zh-TW.json +244 -0
- package/dist/api.d.ts +1 -0
- package/dist/api.js +52 -0
- package/dist/commands/auth.d.ts +1 -0
- package/dist/commands/auth.js +41 -0
- package/dist/commands/diff.d.ts +1 -0
- package/dist/commands/diff.js +96 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.js +32 -0
- package/dist/commands/scan.d.ts +1 -0
- package/dist/commands/scan.js +151 -0
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.js +42 -0
- package/dist/commands/translate.d.ts +1 -0
- package/dist/commands/translate.js +76 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.js +60 -0
- package/dist/i18n.d.ts +7 -0
- package/dist/i18n.js +52 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +58 -0
- package/dist/lib/jsonUtils.d.ts +12 -0
- package/dist/lib/jsonUtils.js +151 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
{
|
|
2
|
+
"home": {
|
|
3
|
+
"badge": "t9n - MVP",
|
|
4
|
+
"title": "Kodunuza saygı duyan i18n çevirisi.",
|
|
5
|
+
"subtitle": "Sıfır Sözdizimi Hatası. Değişken Koruması. Bağlam Duyarlı.",
|
|
6
|
+
"button": "Çeviriye Başla"
|
|
7
|
+
},
|
|
8
|
+
"editor": {
|
|
9
|
+
"run": "ÇEVİRİYİ BAŞLAT",
|
|
10
|
+
"translating": "ÇEVRİLİYOR",
|
|
11
|
+
"source": {
|
|
12
|
+
"label": "Kaynak Dil",
|
|
13
|
+
"upload": "JSON Yükle",
|
|
14
|
+
"upload_multiple": "JSON dosyalarını yüklemek için tıklayın",
|
|
15
|
+
"context": "Bağlam",
|
|
16
|
+
"context_placeholder": "Çeviriyi iyileştirmek için bağlam ekleyin...",
|
|
17
|
+
"pro_feature": "PRO ÖZELLİĞİ",
|
|
18
|
+
"pro_context_msg": "Daha yüksek doğruluk için bağlam sağlamak üzere yükseltin.",
|
|
19
|
+
"info": "KAYNAK",
|
|
20
|
+
"lines": "Satır",
|
|
21
|
+
"clear_context": "Temizle",
|
|
22
|
+
"large_file_title": "Büyük dosya yüklendi ({size})",
|
|
23
|
+
"large_file_desc": "Performans için önizleme devre dışı. Tüm içerik çeviri için gönderilecek."
|
|
24
|
+
},
|
|
25
|
+
"diff_dialog": {
|
|
26
|
+
"title": "Kademeli Güncelleme (Diff)",
|
|
27
|
+
"files_preview": "Dosya Önizlemesi",
|
|
28
|
+
"base_tag": "TEMEL",
|
|
29
|
+
"start_diff": "Diff Başlat"
|
|
30
|
+
},
|
|
31
|
+
"target": {
|
|
32
|
+
"label": "Hedef Dil",
|
|
33
|
+
"copy": "Kopyala",
|
|
34
|
+
"download": "İndir",
|
|
35
|
+
"no_selection": "Dil seçilmedi",
|
|
36
|
+
"placeholder": "Sonuçları burada görmek için dil seçin ve çeviriyi başlatın",
|
|
37
|
+
"stale_warning": "Kaynak değişti - Çeviri güncel değil",
|
|
38
|
+
"max_select": "MAKS {n}",
|
|
39
|
+
"more_suffix": "(+{n})"
|
|
40
|
+
},
|
|
41
|
+
"mobile": {
|
|
42
|
+
"view_result": "Sonucu Gör",
|
|
43
|
+
"back_to_code": "Koda Dön"
|
|
44
|
+
},
|
|
45
|
+
"features": {
|
|
46
|
+
"diff_title": "Kademeli Diff",
|
|
47
|
+
"diff_msg": "Diff / Kademeli Güncelleme özelliği yakında!",
|
|
48
|
+
"soon": "YAKINDA"
|
|
49
|
+
},
|
|
50
|
+
"messages": {
|
|
51
|
+
"pro_feature_title": "Pro Özelliği (Yakında)",
|
|
52
|
+
"upload_pro_msg": "Yükleme bir Pro özelliğidir.\n\nŞu anda premium özellikleri geliştiriyoruz. Takipte kalın!\n\nYardım mı lazım? İletişim: {email}",
|
|
53
|
+
"download_pro_msg": "İndirme bir Pro özelliğidir.\n\nŞu anda premium özellikleri geliştiriyoruz. Takipte kalın!\n\nYardım mı lazım? İletişim: {email}",
|
|
54
|
+
"diff_upload_hint": "Tüm çeviri dosyalarınızı yükleyin. En eksiksiz olanı temel olarak kullanılacaktır.",
|
|
55
|
+
"file_too_large_title": "Dosya Çok Büyük",
|
|
56
|
+
"file_too_large_msg": "Dosya çok büyük ({size}). Maksimum sınır {limit}.\n\nDosya bölme özelliği yakında gelecek!",
|
|
57
|
+
"copied": "Panoya kopyalandı!",
|
|
58
|
+
"copy_failed": "Panoya kopyalanamadı",
|
|
59
|
+
"invalid_json": "Geçersiz Kaynak JSON",
|
|
60
|
+
"translation_complete": "Çeviri tamamlandı!",
|
|
61
|
+
"translation_failed": "Çeviri başarısız",
|
|
62
|
+
"daily_limit_reached": "GÜNLÜK SINIRA ULAŞILDI",
|
|
63
|
+
"daily_limit_desc": "Bugünkü ücretsiz çeviri hakkınızı kullandınız.",
|
|
64
|
+
"pro_plan_coming_soon": "PRO PLAN VE SINIRSIZ ERİŞİM YAKINDA GELECEK!",
|
|
65
|
+
"building_premium": "Şu anda premium özellikleri geliştiriyoruz. Takipte kalın!",
|
|
66
|
+
"contact_us": "Daha fazlasına mı ihtiyacınız var? Bize ulaşın: {email}",
|
|
67
|
+
"error_details": "Hata detayları:",
|
|
68
|
+
"limit_exceeded": "Sınır Aşıldı",
|
|
69
|
+
"limit_exceeded_desc": "{tier} planı istek başına en fazla {max} anahtara izin verir. Dosyanız {keys} anahtar içeriyor.",
|
|
70
|
+
"insufficient_credits": "Yetersiz Kredi",
|
|
71
|
+
"insufficient_credits_desc": "Bu çeviri {cost} kredi gerektiriyor, ancak {available} krediniz kaldı.",
|
|
72
|
+
"free_plan_limit_exceeded": "ÜCRETSİZ PLAN SINIRI AŞILDI",
|
|
73
|
+
"upgrade_to_pro": "PRO'YA YÜKSELT (Yakında)",
|
|
74
|
+
"pro_benefits_1": "Dosya başına sınırsız anahtar",
|
|
75
|
+
"pro_benefits_2": "Sınırsız bağlam uzunluğu",
|
|
76
|
+
"pro_benefits_3": "Toplu Çeviri",
|
|
77
|
+
"reduce_size": "Şimdilik lütfen dosya boyutunu veya bağlamı azaltın.",
|
|
78
|
+
"select_target_lang": "Lütfen en az bir hedef dil seçin.",
|
|
79
|
+
"up_to_date": "Seçilen tüm diller güncel.",
|
|
80
|
+
"translating_placeholder": "// Çevriliyor...",
|
|
81
|
+
"error_no_data": "// Hata: Veri dönmedi.",
|
|
82
|
+
"error_failed_generic": "// Hata: Çeviri başarısız. Lütfen tekrar deneyin.",
|
|
83
|
+
"max_langs_reached": "Ücretsiz planda maksimum {n} hedef dile izin verilir.",
|
|
84
|
+
"credits_needed": "Gerekli kredi",
|
|
85
|
+
"credits_remaining": "Kalan",
|
|
86
|
+
"invalid_base_json": "Geçersiz Temel JSON",
|
|
87
|
+
"invalid_base_content": "Geçersiz Temel Dosya İçeriği"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"common": {
|
|
91
|
+
"contact": "İletişim",
|
|
92
|
+
"email": "z17682341097@gmail.com",
|
|
93
|
+
"pro": "PRO",
|
|
94
|
+
"coming_soon": "Yakında",
|
|
95
|
+
"pricing": "Fiyatlandırma",
|
|
96
|
+
"docs": "Dokümanlar & CLI",
|
|
97
|
+
"cli": "CLI",
|
|
98
|
+
"i18n_note": "Bu sitedeki tüm çeviriler t9n kullanılarak oluşturulmuştur.",
|
|
99
|
+
"upgrade": "Yükselt",
|
|
100
|
+
"auto_detect": "Otomatik Algıla",
|
|
101
|
+
"soon": "YAKINDA",
|
|
102
|
+
"pro_only": "(Yalnızca {pro})",
|
|
103
|
+
"contact_support": "Destekle İletişime Geç",
|
|
104
|
+
"pricing_limits": "Fiyatlandırma & Sınırlar",
|
|
105
|
+
"back_to_home": "ANA SAYFAYA DÖN",
|
|
106
|
+
"back_to_editor": "Back to Editor",
|
|
107
|
+
"mail_to": "E-posta gönder",
|
|
108
|
+
"cancel": "İPTAL",
|
|
109
|
+
"close": "KAPAT",
|
|
110
|
+
"confirm": "ONAYLA",
|
|
111
|
+
"notification": "Bildirim"
|
|
112
|
+
},
|
|
113
|
+
"auth": {
|
|
114
|
+
"login": "Giriş Yap",
|
|
115
|
+
"logout": "Çıkış Yap",
|
|
116
|
+
"welcome_back": "Tekrar Hoş Geldiniz",
|
|
117
|
+
"login_desc": "Pro özelliklere ve daha yüksek sınırlara erişmek için giriş yapın",
|
|
118
|
+
"cli_login_required": "Lütfen önce şunu kullanarak giriş yapın: t9n auth <api-anahtarınız>",
|
|
119
|
+
"continue_google": "Google ile Devam Et",
|
|
120
|
+
"continue_github": "GitHub ile Devam Et",
|
|
121
|
+
"terms": "Devam ederek Hizmet Şartlarımızı ve Gizlilik Politikamızı kabul etmiş olursunuz."
|
|
122
|
+
},
|
|
123
|
+
"settings": {
|
|
124
|
+
"title": "Ayarlar",
|
|
125
|
+
"apikeys": {
|
|
126
|
+
"title": "API Anahtarları",
|
|
127
|
+
"desc": "CLI araçları veya CI/CD boru hatlarında kullanmak üzere API anahtarlarınızı yönetin.",
|
|
128
|
+
"create": "Yeni Anahtar Oluştur",
|
|
129
|
+
"name_label": "Anahtar Adı",
|
|
130
|
+
"name_placeholder": "örn. Dizüstü Bilgisayarım CLI",
|
|
131
|
+
"key_secret_warning": "Lütfen API anahtarınızı şimdi kopyalayın. Güvenliğiniz için tekrar gösterilmeyecektir.",
|
|
132
|
+
"copy_key": "Anahtarı Kopyala",
|
|
133
|
+
"list_empty": "Henüz API anahtarı oluşturulmadı.",
|
|
134
|
+
"revoke": "İptal Et",
|
|
135
|
+
"revoke_confirm": "Bu API anahtarını iptal etmek istediğinizden emin misiniz? Bunu kullanan araçlar çalışmayı durduracaktır.",
|
|
136
|
+
"last_used": "Son Kullanım",
|
|
137
|
+
"never_used": "Hiçbir zaman",
|
|
138
|
+
"created": "Oluşturulma"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"pricing": {
|
|
142
|
+
"title": "Basit, Şeffaf Fiyatlandırma",
|
|
143
|
+
"subtitle": "Çeviri ihtiyaçlarınıza uygun planı seçin.",
|
|
144
|
+
"monthly": "aylık",
|
|
145
|
+
"daily": "günlük",
|
|
146
|
+
"per_request": "istek başına",
|
|
147
|
+
"get_started": "Başlayın",
|
|
148
|
+
"upgrade": "Şimdi Yükselt",
|
|
149
|
+
"contact_sales": "Satışla İletişime Geç",
|
|
150
|
+
"features": {
|
|
151
|
+
"credits": "{n} Kredi",
|
|
152
|
+
"keys": "{n} anahtara kadar",
|
|
153
|
+
"langs": "{n} dile kadar",
|
|
154
|
+
"upload_download": "Yükleme / İndirme",
|
|
155
|
+
"diff": "Kademeli Güncelleme (Diff)",
|
|
156
|
+
"context": "Bağlam Farkındalığı"
|
|
157
|
+
},
|
|
158
|
+
"most_popular": "En Popüler",
|
|
159
|
+
"custom": "Özel"
|
|
160
|
+
},
|
|
161
|
+
"metadata": {
|
|
162
|
+
"title": "t9n - Geliştiriciler için JSON Çevirmeni | i18n AI Çevirmen",
|
|
163
|
+
"description": "i18n JSON dosyaları için geliştirici öncelikli AI çevirmen. Sıfır sözdizimi hatası, değişken koruması (React Intl, i18next) ve akıllı bağlam farkındalığı. Sadece kelimeleri değil, yazılımı çevirin.",
|
|
164
|
+
"og_title": "t9n - Geliştiriciler için JSON Çevirmeni",
|
|
165
|
+
"og_description": "Kod değişkenlerinizi bozmadan i18n JSON dosyalarını çevirin. React Intl, i18next ve daha fazlasını destekler."
|
|
166
|
+
},
|
|
167
|
+
"docs": {
|
|
168
|
+
"title": "Dokümantasyon",
|
|
169
|
+
"subtitle": "Temel kullanımdan gelişmiş kademeli güncellemelere ve AI bağlam optimizasyonuna kadar t9n'in özelliklerini keşfedin.",
|
|
170
|
+
"sections": {
|
|
171
|
+
"basic": {
|
|
172
|
+
"title": "Temel Özellik: Gerçek Zamanlı Çeviri",
|
|
173
|
+
"content": "t9n, i18n JSON formatı için tasarlanmıştır. Çeviri işlemi sırasında tüm kod değişkenlerinin ({name} veya {{count}} gibi) kesin olarak korunmasını sağlamak için Prompt stratejimizi optimize ettik.",
|
|
174
|
+
"item1": "Hedef dillerin toplu seçimini destekleyerek tek seferde birden fazla çeviri oluşturur.",
|
|
175
|
+
"item2": "Gerçek zamanlı önizleme: kaynak içerik ve hedef içerik yan yana karşılaştırılır."
|
|
176
|
+
},
|
|
177
|
+
"context": {
|
|
178
|
+
"title": "Bağlam Farkındalığı",
|
|
179
|
+
"content": "Çeviri kelimesi kelimesine çevirmekten fazlasıdır. Uygulama arka planı sağlayarak, AI kelimeleri daha doğru seçebilir.",
|
|
180
|
+
"example": "Örneğin, aynı \"Menü\" kelimesi bir restoran uygulamasında \"menü\", tasarım yazılımında ise \"fonksiyon listesi\"dir. Bağlam sağlamak belirsizliği ortadan kaldırabilir."
|
|
181
|
+
},
|
|
182
|
+
"diff": {
|
|
183
|
+
"title": "Akıllı Kademeli Güncelleme (Diff Modu)",
|
|
184
|
+
"content": "Kaynak dil dosyanızda (örn. en.json) yeni içerik olduğunda, tüm dosyayı yeniden çevirmenize gerek kalmaz. t9n'in kademeli güncelleme modu artık tam otomasyonu destekliyor.",
|
|
185
|
+
"new_feature": "Yeni: Tam Otomatik Çoklu Dosya Tanıma",
|
|
186
|
+
"step1_title": "1. Çoklu Seçim Yükleme",
|
|
187
|
+
"step1_desc": "Yükleme iletişim kutusunda İngilizce (temel) ve mevcut çeviri dosyalarını (örn. Çince, Japonca) aynı anda seçin. Artık manuel karşılaştırmaya gerek yok.",
|
|
188
|
+
"step2_title": "2. Akıllı Temel Algılama",
|
|
189
|
+
"step2_desc": "Sistem her dosyadaki anahtarları otomatik olarak sayar ve en eksiksiz olanı 'çeviri temeli' olarak kabul ederek diğerlerindeki eksik kısımları otomatik doldurur.",
|
|
190
|
+
"step3_title": "3. Hassas Çeviri",
|
|
191
|
+
"step3_desc": "Eksik anahtarlar 🚧 [MISSING] olarak işaretlenir. AI yalnızca bu işaretleri çevirerek kredilerinizde %90'ın üzerinde tasarruf sağlar.",
|
|
192
|
+
"quote": "\"Mevcut çevirilerin %100'ünü koruyun, yalnızca yeni gereksinimleri ele alın.\""
|
|
193
|
+
},
|
|
194
|
+
"cli": {
|
|
195
|
+
"tag": "Şimdi Kullanılabilir",
|
|
196
|
+
"title": "t9n CLI",
|
|
197
|
+
"content": "Terminalinizden profesyonel i18n yönetimi. Güçlü komut satırı arayüzümüzle çeviri iş akışınızı otomatikleştirin.",
|
|
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": "Yerel ortamınızı t9n hesabınıza bağlayın.",
|
|
205
|
+
"desc_init": "Proje tercihlerinizi kaydetmek için t9n.config.json dosyasını oluşturun.",
|
|
206
|
+
"desc_scan": "Kaynak kodunuzda bulunan ancak henüz JSON dosyanızda olmayan eksik anahtarları bulun.",
|
|
207
|
+
"desc_translate": "Yerel dosyaları doğrudan çevirin ve sonuçları otomatik olarak kaydedin.",
|
|
208
|
+
"desc_diff": "Bir klasördeki tüm diller için akıllı kademeli güncellemeler.",
|
|
209
|
+
"progress": "Üretime Hazır"
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"example_correct": "Portföy\" → \"Yatırım Portföyü\"",
|
|
213
|
+
"example_incorrect": "Portföy\" → \"Sanat Koleksiyonu\""
|
|
214
|
+
},
|
|
215
|
+
"cli": {
|
|
216
|
+
"diff": {
|
|
217
|
+
"title": "🛰️ T9N CLI - Kademeli Güncelleme",
|
|
218
|
+
"analyzing": "🔍 Farklılıklar analiz ediliyor...",
|
|
219
|
+
"comparing": "Mevcut dosya ile karşılaştırılıyor...",
|
|
220
|
+
"new_lang": "Yeni dil algılandı.",
|
|
221
|
+
"success": "Çeviri başarıyla alındı!",
|
|
222
|
+
"updated": "Güncellendi:",
|
|
223
|
+
"all_up_to_date": "✨ Tüm çeviriler güncel!"
|
|
224
|
+
},
|
|
225
|
+
"scan": {
|
|
226
|
+
"title": "🔍 T9N CLI - Kod Tarayıcı",
|
|
227
|
+
"scanning": "Dosyalar taranıyor...",
|
|
228
|
+
"scanned": "{n} dosya tarandı.",
|
|
229
|
+
"missing_found": "{n} eksik anahtar bulundu (kodda var ancak sözlükte YOK):",
|
|
230
|
+
"all_present": "✨ Koddaki tüm anahtarlar sözlükte mevcut.",
|
|
231
|
+
"orphaned": "{n} potansiyel olarak kullanılmayan anahtar bulundu (sözlükte var ancak kodda YOK):"
|
|
232
|
+
},
|
|
233
|
+
"auth": {
|
|
234
|
+
"verifying": "API Anahtarı doğrulanıyor...",
|
|
235
|
+
"success": "Kimlik doğrulama başarılı! ({target} yapılandırması)",
|
|
236
|
+
"key_missing": "Lütfen bir API Anahtarı sağlayın. Kullanım: t9n auth <anahtar>"
|
|
237
|
+
},
|
|
238
|
+
"init": {
|
|
239
|
+
"title": "🎬 T9N - Proje Başlatma",
|
|
240
|
+
"created": "Proje yapılandırması oluşturuldu: {path}",
|
|
241
|
+
"already_exists": "Yapılandırma dosyası zaten şurada mevcut: {path}"
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
{
|
|
2
|
+
"home": {
|
|
3
|
+
"badge": "t9n - MVP",
|
|
4
|
+
"title": "Dịch i18n tôn trọng mã nguồn của bạn.",
|
|
5
|
+
"subtitle": "Không lỗi cú pháp. Bảo vệ biến. Hiểu ngữ cảnh.",
|
|
6
|
+
"button": "Bắt đầu dịch"
|
|
7
|
+
},
|
|
8
|
+
"editor": {
|
|
9
|
+
"run": "CHẠY BẢN DỊCH",
|
|
10
|
+
"translating": "ĐANG DỊCH",
|
|
11
|
+
"source": {
|
|
12
|
+
"label": "Ngôn ngữ nguồn",
|
|
13
|
+
"upload": "Tải lên JSON",
|
|
14
|
+
"upload_multiple": "Nhấp để tải lên các tệp JSON",
|
|
15
|
+
"context": "Ngữ cảnh",
|
|
16
|
+
"context_placeholder": "Thêm ngữ cảnh để cải thiện bản dịch...",
|
|
17
|
+
"pro_feature": "TÍNH NĂNG PRO",
|
|
18
|
+
"pro_context_msg": "Nâng cấp để cung cấp ngữ cảnh giúp tăng độ chính xác.",
|
|
19
|
+
"info": "NGUỒN",
|
|
20
|
+
"lines": "Dòng",
|
|
21
|
+
"clear_context": "Xóa",
|
|
22
|
+
"large_file_title": "Tệp lớn đã tải ({size})",
|
|
23
|
+
"large_file_desc": "Xem trước bị tắt để đảm bảo hiệu suất. Toàn bộ nội dung sẽ được gửi để dịch."
|
|
24
|
+
},
|
|
25
|
+
"diff_dialog": {
|
|
26
|
+
"title": "Cập nhật gia tăng (Diff)",
|
|
27
|
+
"files_preview": "Xem trước tệp",
|
|
28
|
+
"base_tag": "GỐC",
|
|
29
|
+
"start_diff": "Bắt đầu Diff"
|
|
30
|
+
},
|
|
31
|
+
"target": {
|
|
32
|
+
"label": "Ngôn ngữ đích",
|
|
33
|
+
"copy": "Sao chép",
|
|
34
|
+
"download": "Tải xuống",
|
|
35
|
+
"no_selection": "Chưa chọn ngôn ngữ",
|
|
36
|
+
"placeholder": "Chọn ngôn ngữ và chạy bản dịch để xem kết quả tại đây",
|
|
37
|
+
"stale_warning": "Nguồn đã thay đổi - Bản dịch đã cũ",
|
|
38
|
+
"max_select": "TỐI ĐA {n}",
|
|
39
|
+
"more_suffix": "(+{n})"
|
|
40
|
+
},
|
|
41
|
+
"mobile": {
|
|
42
|
+
"view_result": "Xem kết quả",
|
|
43
|
+
"back_to_code": "Quay lại mã"
|
|
44
|
+
},
|
|
45
|
+
"features": {
|
|
46
|
+
"diff_title": "Diff gia tăng",
|
|
47
|
+
"diff_msg": "Tính năng Diff / Cập nhật gia tăng sắp ra mắt!",
|
|
48
|
+
"soon": "SỚM"
|
|
49
|
+
},
|
|
50
|
+
"messages": {
|
|
51
|
+
"pro_feature_title": "Tính năng Pro (Sắp ra mắt)",
|
|
52
|
+
"upload_pro_msg": "Tải lên là tính năng Pro.\n\nChúng tôi đang phát triển các tính năng cao cấp. Hãy chờ nhé!\n\nCần hỗ trợ? Liên hệ: {email}",
|
|
53
|
+
"download_pro_msg": "Tải xuống là tính năng Pro.\n\nChúng tôi đang phát triển các tính năng cao cấp. Hãy chờ nhé!\n\nCần hỗ trợ? Liên hệ: {email}",
|
|
54
|
+
"diff_upload_hint": "Tải lên tất cả các tệp dịch. Tệp đầy đủ nhất sẽ được dùng làm gốc.",
|
|
55
|
+
"file_too_large_title": "Tệp quá lớn",
|
|
56
|
+
"file_too_large_msg": "Tệp quá lớn ({size}). Giới hạn tối đa là {limit}.\n\nTính năng chia nhỏ tệp sắp ra mắt!",
|
|
57
|
+
"copied": "Đã sao chép vào bộ nhớ tạm!",
|
|
58
|
+
"copy_failed": "Lỗi sao chép vào bộ nhớ tạm",
|
|
59
|
+
"invalid_json": "JSON nguồn không hợp lệ",
|
|
60
|
+
"translation_complete": "Hoàn thành dịch!",
|
|
61
|
+
"translation_failed": "Dịch thất bại",
|
|
62
|
+
"daily_limit_reached": "ĐÃ ĐẠT GIỚI HẠN NGÀY",
|
|
63
|
+
"daily_limit_desc": "Bạn đã hết lượt dịch miễn phí cho hôm nay.",
|
|
64
|
+
"pro_plan_coming_soon": "GÓI PRO & QUYỀN TRUY CẬP KHÔNG GIỚI HẠN SẮP RA MẮT!",
|
|
65
|
+
"building_premium": "Chúng tôi đang phát triển các tính năng cao cấp. Hãy chờ nhé!",
|
|
66
|
+
"contact_us": "Cần thêm? Liên hệ: {email}",
|
|
67
|
+
"error_details": "Chi tiết lỗi:",
|
|
68
|
+
"limit_exceeded": "Vượt quá giới hạn",
|
|
69
|
+
"limit_exceeded_desc": "Gói {tier} cho phép tối đa {max} key mỗi yêu cầu. Tệp của bạn có {keys} key.",
|
|
70
|
+
"insufficient_credits": "Không đủ credit",
|
|
71
|
+
"insufficient_credits_desc": "Bản dịch này cần {cost} credit, nhưng bạn chỉ còn {available}.",
|
|
72
|
+
"free_plan_limit_exceeded": "VƯỢT GIỚI HẠN GÓI MIỄN PHÍ",
|
|
73
|
+
"upgrade_to_pro": "NÂNG CẤP PRO (Sắp ra mắt)",
|
|
74
|
+
"pro_benefits_1": "Không giới hạn key mỗi tệp",
|
|
75
|
+
"pro_benefits_2": "Không giới hạn độ dài ngữ cảnh",
|
|
76
|
+
"pro_benefits_3": "Dịch hàng loạt",
|
|
77
|
+
"reduce_size": "Hiện tại, vui lòng giảm kích thước tệp hoặc ngữ cảnh.",
|
|
78
|
+
"select_target_lang": "Vui lòng chọn ít nhất một ngôn ngữ đích.",
|
|
79
|
+
"up_to_date": "Tất cả các ngôn ngữ đã chọn đều đã mới nhất.",
|
|
80
|
+
"translating_placeholder": "// Đang dịch...",
|
|
81
|
+
"error_no_data": "// Lỗi: Không có dữ liệu trả về.",
|
|
82
|
+
"error_failed_generic": "// Lỗi: Dịch thất bại. Vui lòng thử lại.",
|
|
83
|
+
"max_langs_reached": "Gói miễn phí cho phép tối đa {n} ngôn ngữ đích.",
|
|
84
|
+
"credits_needed": "Credit cần thiết",
|
|
85
|
+
"credits_remaining": "Còn lại",
|
|
86
|
+
"invalid_base_json": "JSON gốc không hợp lệ",
|
|
87
|
+
"invalid_base_content": "Nội dung tệp gốc không hợp lệ"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"common": {
|
|
91
|
+
"contact": "Liên hệ",
|
|
92
|
+
"email": "z17682341097@gmail.com",
|
|
93
|
+
"pro": "PRO",
|
|
94
|
+
"coming_soon": "Sắp ra mắt",
|
|
95
|
+
"pricing": "Giá cả",
|
|
96
|
+
"docs": "Tài liệu & CLI",
|
|
97
|
+
"cli": "CLI",
|
|
98
|
+
"i18n_note": "Tất cả bản dịch cho trang web này được tạo bằng t9n.",
|
|
99
|
+
"upgrade": "Nâng cấp",
|
|
100
|
+
"auto_detect": "Tự động phát hiện",
|
|
101
|
+
"soon": "SỚM",
|
|
102
|
+
"pro_only": "(Chỉ dành cho {pro})",
|
|
103
|
+
"contact_support": "Liên hệ hỗ trợ",
|
|
104
|
+
"pricing_limits": "Giá & Giới hạn",
|
|
105
|
+
"back_to_home": "VỀ TRANG CHỦ",
|
|
106
|
+
"back_to_editor": "Quay lại trình chỉnh sửa",
|
|
107
|
+
"mail_to": "Gửi mail đến",
|
|
108
|
+
"cancel": "HỦY",
|
|
109
|
+
"close": "ĐÓNG",
|
|
110
|
+
"confirm": "XÁC NHẬN",
|
|
111
|
+
"notification": "Thông báo"
|
|
112
|
+
},
|
|
113
|
+
"auth": {
|
|
114
|
+
"login": "Đăng nhập",
|
|
115
|
+
"logout": "Đăng xuất",
|
|
116
|
+
"welcome_back": "Chào mừng quay lại",
|
|
117
|
+
"login_desc": "Đăng nhập để sử dụng tính năng Pro và giới hạn cao hơn",
|
|
118
|
+
"cli_login_required": "Vui lòng đăng nhập trước bằng: t9n auth <your-api-key>",
|
|
119
|
+
"continue_google": "Tiếp tục với Google",
|
|
120
|
+
"continue_github": "Tiếp tục với GitHub",
|
|
121
|
+
"terms": "Bằng cách tiếp tục, bạn đồng ý với Điều khoản và Chính sách bảo mật của chúng tôi."
|
|
122
|
+
},
|
|
123
|
+
"settings": {
|
|
124
|
+
"title": "Cài đặt",
|
|
125
|
+
"apikeys": {
|
|
126
|
+
"title": "API Keys",
|
|
127
|
+
"desc": "Quản lý API key để dùng với CLI hoặc CI/CD.",
|
|
128
|
+
"create": "Tạo Key mới",
|
|
129
|
+
"name_label": "Tên Key",
|
|
130
|
+
"name_placeholder": "vd: CLI Laptop của tôi",
|
|
131
|
+
"key_secret_warning": "Hãy sao chép API key ngay bây giờ. Vì bảo mật, nó sẽ không hiển thị lại.",
|
|
132
|
+
"copy_key": "Sao chép Key",
|
|
133
|
+
"list_empty": "Chưa có API key nào.",
|
|
134
|
+
"revoke": "Thu hồi",
|
|
135
|
+
"revoke_confirm": "Bạn có chắc muốn thu hồi API key này? Các công cụ sử dụng nó sẽ ngừng hoạt động.",
|
|
136
|
+
"last_used": "Dùng lần cuối",
|
|
137
|
+
"never_used": "Chưa bao giờ",
|
|
138
|
+
"created": "Đã tạo"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"pricing": {
|
|
142
|
+
"title": "Giá cả đơn giản, minh bạch",
|
|
143
|
+
"subtitle": "Chọn gói phù hợp với nhu cầu dịch thuật của bạn.",
|
|
144
|
+
"monthly": "hàng tháng",
|
|
145
|
+
"daily": "hàng ngày",
|
|
146
|
+
"per_request": "mỗi yêu cầu",
|
|
147
|
+
"get_started": "Bắt đầu",
|
|
148
|
+
"upgrade": "Nâng cấp ngay",
|
|
149
|
+
"contact_sales": "Liên hệ kinh doanh",
|
|
150
|
+
"features": {
|
|
151
|
+
"credits": "{n} Credit",
|
|
152
|
+
"keys": "Tối đa {n} key",
|
|
153
|
+
"langs": "Tối đa {n} ngôn ngữ",
|
|
154
|
+
"upload_download": "Tải lên / Tải xuống",
|
|
155
|
+
"diff": "Cập nhật gia tăng (Diff)",
|
|
156
|
+
"context": "Hiểu ngữ cảnh"
|
|
157
|
+
},
|
|
158
|
+
"most_popular": "Phổ biến nhất",
|
|
159
|
+
"custom": "Tùy chỉnh"
|
|
160
|
+
},
|
|
161
|
+
"metadata": {
|
|
162
|
+
"title": "t9n - Trình dịch JSON cho lập trình viên | i18n AI Translator",
|
|
163
|
+
"description": "Trình dịch AI ưu tiên cho lập trình viên cho các tệp JSON i18n. Không lỗi cú pháp, bảo vệ biến (React Intl, i18next) và hiểu ngữ cảnh thông minh. Dịch phần mềm, không chỉ là từ ngữ.",
|
|
164
|
+
"og_title": "t9n - Trình dịch JSON cho lập trình viên",
|
|
165
|
+
"og_description": "Dịch tệp JSON i18n mà không làm hỏng các biến trong mã. Hỗ trợ React Intl, i18next và nhiều hơn nữa."
|
|
166
|
+
},
|
|
167
|
+
"docs": {
|
|
168
|
+
"title": "Tài liệu",
|
|
169
|
+
"subtitle": "Khám phá các tính năng của t9n, từ cách sử dụng cơ bản đến cập nhật gia tăng nâng cao và tối ưu hóa ngữ cảnh AI.",
|
|
170
|
+
"sections": {
|
|
171
|
+
"basic": {
|
|
172
|
+
"title": "Tính năng cơ bản: Dịch thời gian thực",
|
|
173
|
+
"content": "t9n được thiết kế cho định dạng JSON i18n. Chúng tôi đã tối ưu hóa chiến lược Prompt để đảm bảo tất cả các biến (như {name} hoặc {{count}}) được bảo vệ nghiêm ngặt trong quá trình dịch.",
|
|
174
|
+
"item1": "Hỗ trợ chọn hàng loạt ngôn ngữ đích, tạo nhiều bản dịch cùng một lúc.",
|
|
175
|
+
"item2": "Xem trước thời gian thực: so sánh nội dung nguồn và đích song song."
|
|
176
|
+
},
|
|
177
|
+
"context": {
|
|
178
|
+
"title": "Hiểu ngữ cảnh",
|
|
179
|
+
"content": "Dịch thuật không chỉ là dịch từng từ. Bằng cách cung cấp bối cảnh ứng dụng, AI có thể chọn từ vựng chính xác hơn.",
|
|
180
|
+
"example": "Ví dụ, cùng một từ \"Menu\" là \"thực đơn\" trong ứng dụng nhà hàng và \"danh sách chức năng\" trong phần mềm thiết kế. Cung cấp ngữ cảnh giúp loại bỏ sự mơ hồ."
|
|
181
|
+
},
|
|
182
|
+
"diff": {
|
|
183
|
+
"title": "Cập nhật gia tăng thông minh (Chế độ Diff)",
|
|
184
|
+
"content": "Khi tệp nguồn (vd: en.json) có nội dung mới, bạn không cần dịch lại toàn bộ tệp. Chế độ cập nhật gia tăng của t9n hiện hỗ trợ tự động hóa hoàn toàn.",
|
|
185
|
+
"new_feature": "Mới: Tự động nhận diện đa tệp",
|
|
186
|
+
"step1_title": "1. Tải lên chọn nhiều tệp",
|
|
187
|
+
"step1_desc": "Chọn tệp tiếng Anh (gốc) và các tệp dịch hiện có (vd: tiếng Trung, tiếng Nhật) cùng lúc trong hộp thoại tải lên. Không còn phải so sánh thủ công.",
|
|
188
|
+
"step2_title": "2. Tự động phát hiện tệp gốc",
|
|
189
|
+
"step2_desc": "Hệ thống tự động đếm số key trong mỗi tệp và coi tệp đầy đủ nhất là 'gốc dịch thuật', tự động điền các phần còn thiếu vào các tệp khác.",
|
|
190
|
+
"step3_title": "3. Dịch chính xác",
|
|
191
|
+
"step3_desc": "Các key còn thiếu được đánh dấu là 🚧 [MISSING]. AI chỉ dịch các điểm này, giúp tiết kiệm hơn 90% credit.",
|
|
192
|
+
"quote": "\"Giữ 100% các bản dịch hiện có, chỉ xử lý các yêu cầu mới.\""
|
|
193
|
+
},
|
|
194
|
+
"cli": {
|
|
195
|
+
"tag": "Hiện đã có",
|
|
196
|
+
"title": "t9n CLI",
|
|
197
|
+
"content": "Quản lý i18n chuyên nghiệp từ terminal của bạn. Tự động hóa quy trình dịch thuật với giao diện dòng lệnh mạnh mẽ.",
|
|
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": "Liên kết môi trường local với tài khoản t9n.",
|
|
205
|
+
"desc_init": "Tạo t9n.config.json để lưu cấu hình dự án.",
|
|
206
|
+
"desc_scan": "Tìm các key còn thiếu trong mã nguồn mà chưa có trong JSON.",
|
|
207
|
+
"desc_translate": "Dịch trực tiếp các tệp local và tự động lưu kết quả.",
|
|
208
|
+
"desc_diff": "Cập nhật gia tăng thông minh cho tất cả ngôn ngữ trong thư mục.",
|
|
209
|
+
"progress": "Sẵn sàng cho sản xuất"
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"example_correct": "Portfolio\" → \"Danh mục đầu tư\"",
|
|
213
|
+
"example_incorrect": "Portfolio\" → \"Bộ sưu tập tác phẩm\""
|
|
214
|
+
},
|
|
215
|
+
"cli": {
|
|
216
|
+
"diff": {
|
|
217
|
+
"title": "🛰️ T9N CLI - Cập nhật gia tăng",
|
|
218
|
+
"analyzing": "🔍 Đang phân tích khác biệt...",
|
|
219
|
+
"comparing": "Đang so sánh với tệp hiện có...",
|
|
220
|
+
"new_lang": "Phát hiện ngôn ngữ mới.",
|
|
221
|
+
"success": "Nhận bản dịch thành công!",
|
|
222
|
+
"updated": "Đã cập nhật:",
|
|
223
|
+
"all_up_to_date": "✨ Tất cả bản dịch đã mới nhất!"
|
|
224
|
+
},
|
|
225
|
+
"scan": {
|
|
226
|
+
"title": "🔍 T9N CLI - Trình quét mã",
|
|
227
|
+
"scanning": "Đang quét tệp...",
|
|
228
|
+
"scanned": "Đã quét {n} tệp.",
|
|
229
|
+
"missing_found": "Tìm thấy {n} key còn thiếu (trong mã nhưng KHÔNG có trong từ điển):",
|
|
230
|
+
"all_present": "✨ Tất cả key trong mã đều đã có trong từ điển.",
|
|
231
|
+
"orphaned": "Tìm thấy {n} key có thể không sử dụng (trong từ điển nhưng KHÔNG có trong mã):"
|
|
232
|
+
},
|
|
233
|
+
"auth": {
|
|
234
|
+
"verifying": "Đang xác thực API Key...",
|
|
235
|
+
"success": "Xác thực thành công! (cấu hình {target})",
|
|
236
|
+
"key_missing": "Vui lòng cung cấp API Key. Cách dùng: t9n auth <key>"
|
|
237
|
+
},
|
|
238
|
+
"init": {
|
|
239
|
+
"title": "🎬 T9N - Khởi tạo dự án",
|
|
240
|
+
"created": "Đã tạo cấu hình dự án: {path}",
|
|
241
|
+
"already_exists": "Tệp cấu hình đã tồn tại tại: {path}"
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|