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": "Traduzione i18n che rispetta il tuo codice.",
|
|
5
|
+
"subtitle": "Zero errori di sintassi. Protezione variabili. Supporto contesto.",
|
|
6
|
+
"button": "Inizia a tradurre"
|
|
7
|
+
},
|
|
8
|
+
"editor": {
|
|
9
|
+
"run": "AVVIA TRADUZIONE",
|
|
10
|
+
"translating": "TRADUZIONE IN CORSO",
|
|
11
|
+
"source": {
|
|
12
|
+
"label": "Lingua sorgente",
|
|
13
|
+
"upload": "Carica JSON",
|
|
14
|
+
"upload_multiple": "Clicca per caricare file JSON",
|
|
15
|
+
"context": "Contesto",
|
|
16
|
+
"context_placeholder": "Aggiungi contesto per migliorare la precisione...",
|
|
17
|
+
"pro_feature": "FUNZIONE PRO",
|
|
18
|
+
"pro_context_msg": "Passa a Pro per fornire contesto e maggiore precisione.",
|
|
19
|
+
"info": "SORGENTE",
|
|
20
|
+
"lines": "Righe",
|
|
21
|
+
"clear_context": "Pulisci",
|
|
22
|
+
"large_file_title": "File grande caricato ({size})",
|
|
23
|
+
"large_file_desc": "L'anteprima è disabilitata per prestazioni. Il contenuto completo verrà inviato per la traduzione."
|
|
24
|
+
},
|
|
25
|
+
"diff_dialog": {
|
|
26
|
+
"title": "Aggiornamento incrementale (Diff)",
|
|
27
|
+
"files_preview": "Anteprima file",
|
|
28
|
+
"base_tag": "BASE",
|
|
29
|
+
"start_diff": "Avvia Diff"
|
|
30
|
+
},
|
|
31
|
+
"target": {
|
|
32
|
+
"label": "Lingua di destinazione",
|
|
33
|
+
"copy": "Copia",
|
|
34
|
+
"download": "Scarica",
|
|
35
|
+
"no_selection": "Nessuna lingua selezionata",
|
|
36
|
+
"placeholder": "Seleziona una lingua e avvia la traduzione per vedere i risultati",
|
|
37
|
+
"stale_warning": "Sorgente modificata - Traduzione obsoleta",
|
|
38
|
+
"max_select": "MAX {n}",
|
|
39
|
+
"more_suffix": "(+{n})"
|
|
40
|
+
},
|
|
41
|
+
"mobile": {
|
|
42
|
+
"view_result": "Vedi risultato",
|
|
43
|
+
"back_to_code": "Torna al codice"
|
|
44
|
+
},
|
|
45
|
+
"features": {
|
|
46
|
+
"diff_title": "Diff incrementale",
|
|
47
|
+
"diff_msg": "La funzione Diff / Aggiornamento incrementale è in arrivo!",
|
|
48
|
+
"soon": "PRESTO"
|
|
49
|
+
},
|
|
50
|
+
"messages": {
|
|
51
|
+
"pro_feature_title": "Funzione Pro (In arrivo)",
|
|
52
|
+
"upload_pro_msg": "Il caricamento è una funzione Pro.\n\nStiamo sviluppando le funzioni premium. Resta sintonizzato!\n\nServe aiuto? Contatta: {email}",
|
|
53
|
+
"download_pro_msg": "Il download è una funzione Pro.\n\nStiamo sviluppando le funzioni premium. Resta sintonizzato!\n\nServe aiuto? Contatta: {email}",
|
|
54
|
+
"diff_upload_hint": "Carica tutti i tuoi file di traduzione. Il più completo sarà usato come base.",
|
|
55
|
+
"file_too_large_title": "File troppo grande",
|
|
56
|
+
"file_too_large_msg": "Il file è troppo grande ({size}). Il limite massimo è {limit}.\n\nLa funzione di divisione file è in arrivo!",
|
|
57
|
+
"copied": "Copiato negli appunti!",
|
|
58
|
+
"copy_failed": "Impossibile copiare negli appunti",
|
|
59
|
+
"invalid_json": "JSON sorgente non valido",
|
|
60
|
+
"translation_complete": "Traduzione completata!",
|
|
61
|
+
"translation_failed": "Traduzione fallita",
|
|
62
|
+
"daily_limit_reached": "LIMITE GIORNALIERO RAGGIUNTO",
|
|
63
|
+
"daily_limit_desc": "Hai esaurito le traduzioni gratuite per oggi.",
|
|
64
|
+
"pro_plan_coming_soon": "IL PIANO PRO E L'ACCESSO ILLIMITATO SONO IN ARRIVO!",
|
|
65
|
+
"building_premium": "Stiamo sviluppando le funzioni premium. Resta sintonizzato!",
|
|
66
|
+
"contact_us": "Serve altro? Contattaci: {email}",
|
|
67
|
+
"error_details": "Dettagli errore:",
|
|
68
|
+
"limit_exceeded": "Limite superato",
|
|
69
|
+
"limit_exceeded_desc": "Il piano {tier} consente fino a {max} chiavi per richiesta. Il tuo file ha {keys} chiavi.",
|
|
70
|
+
"insufficient_credits": "Crediti insufficienti",
|
|
71
|
+
"insufficient_credits_desc": "Questa traduzione richiede {cost} crediti, ma ne hai {available} rimanenti.",
|
|
72
|
+
"free_plan_limit_exceeded": "LIMITE PIANO GRATUITO SUPERATO",
|
|
73
|
+
"upgrade_to_pro": "PASSA A PRO (In arrivo)",
|
|
74
|
+
"pro_benefits_1": "Chiavi illimitate per file",
|
|
75
|
+
"pro_benefits_2": "Lunghezza contesto illimitata",
|
|
76
|
+
"pro_benefits_3": "Traduzione in batch",
|
|
77
|
+
"reduce_size": "Per ora, riduci la dimensione del file o del contesto.",
|
|
78
|
+
"select_target_lang": "Seleziona almeno una lingua di destinazione.",
|
|
79
|
+
"up_to_date": "Tutte le lingue selezionate sono aggiornate.",
|
|
80
|
+
"translating_placeholder": "// Traduzione in corso...",
|
|
81
|
+
"error_no_data": "// Errore: Nessun dato restituito.",
|
|
82
|
+
"error_failed_generic": "// Errore: Traduzione fallita. Riprova.",
|
|
83
|
+
"max_langs_reached": "Massimo {n} lingue di destinazione consentite nel piano gratuito.",
|
|
84
|
+
"credits_needed": "Crediti necessari",
|
|
85
|
+
"credits_remaining": "Rimanenti",
|
|
86
|
+
"invalid_base_json": "JSON di base non valido",
|
|
87
|
+
"invalid_base_content": "Contenuto file di base non valido"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"common": {
|
|
91
|
+
"contact": "Contatti",
|
|
92
|
+
"email": "z17682341097@gmail.com",
|
|
93
|
+
"pro": "PRO",
|
|
94
|
+
"coming_soon": "In arrivo",
|
|
95
|
+
"pricing": "Prezzi",
|
|
96
|
+
"docs": "Docs & CLI",
|
|
97
|
+
"cli": "CLI",
|
|
98
|
+
"i18n_note": "Tutte le traduzioni di questo sito sono state generate con t9n.",
|
|
99
|
+
"upgrade": "Aggiorna",
|
|
100
|
+
"auto_detect": "Rilevamento automatico",
|
|
101
|
+
"soon": "PRESTO",
|
|
102
|
+
"pro_only": "(Solo {pro})",
|
|
103
|
+
"contact_support": "Contatta il supporto",
|
|
104
|
+
"pricing_limits": "Prezzi e limiti",
|
|
105
|
+
"back_to_home": "TORNA ALLA HOME",
|
|
106
|
+
"back_to_editor": "Torna all'editor",
|
|
107
|
+
"mail_to": "Invia email",
|
|
108
|
+
"cancel": "ANNULLA",
|
|
109
|
+
"close": "CHIUDI",
|
|
110
|
+
"confirm": "CONFERMA",
|
|
111
|
+
"notification": "Notifica"
|
|
112
|
+
},
|
|
113
|
+
"auth": {
|
|
114
|
+
"login": "Accedi",
|
|
115
|
+
"logout": "Esci",
|
|
116
|
+
"welcome_back": "Bentornato",
|
|
117
|
+
"login_desc": "Accedi per funzioni Pro e limiti più elevati",
|
|
118
|
+
"cli_login_required": "Accedi prima usando: t9n auth <tua-api-key>",
|
|
119
|
+
"continue_google": "Continua con Google",
|
|
120
|
+
"continue_github": "Continua con GitHub",
|
|
121
|
+
"terms": "Continuando, accetti i Termini di Servizio e l'Informativa sulla Privacy."
|
|
122
|
+
},
|
|
123
|
+
"settings": {
|
|
124
|
+
"title": "Impostazioni",
|
|
125
|
+
"apikeys": {
|
|
126
|
+
"title": "Chiavi API",
|
|
127
|
+
"desc": "Gestisci le chiavi API per strumenti CLI o pipeline CI/CD.",
|
|
128
|
+
"create": "Crea nuova chiave",
|
|
129
|
+
"name_label": "Nome chiave",
|
|
130
|
+
"name_placeholder": "es. CLI mio laptop",
|
|
131
|
+
"key_secret_warning": "Copia la tua chiave API ora. Per sicurezza, non verrà mostrata di nuovo.",
|
|
132
|
+
"copy_key": "Copia chiave",
|
|
133
|
+
"list_empty": "Nessuna chiave API creata.",
|
|
134
|
+
"revoke": "Revoca",
|
|
135
|
+
"revoke_confirm": "Revocare questa chiave API? Gli strumenti che la usano smetteranno di funzionare.",
|
|
136
|
+
"last_used": "Ultimo utilizzo",
|
|
137
|
+
"never_used": "Mai",
|
|
138
|
+
"created": "Creata"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"pricing": {
|
|
142
|
+
"title": "Prezzi semplici e trasparenti",
|
|
143
|
+
"subtitle": "Scegli il piano più adatto alle tue esigenze di traduzione.",
|
|
144
|
+
"monthly": "al mese",
|
|
145
|
+
"daily": "al giorno",
|
|
146
|
+
"per_request": "per richiesta",
|
|
147
|
+
"get_started": "Inizia ora",
|
|
148
|
+
"upgrade": "Passa a Pro",
|
|
149
|
+
"contact_sales": "Contatta vendite",
|
|
150
|
+
"features": {
|
|
151
|
+
"credits": "{n} Crediti",
|
|
152
|
+
"keys": "Fino a {n} chiavi",
|
|
153
|
+
"langs": "Fino a {n} lingue",
|
|
154
|
+
"upload_download": "Carica / Scarica",
|
|
155
|
+
"diff": "Aggiornamento incrementale (Diff)",
|
|
156
|
+
"context": "Supporto contesto"
|
|
157
|
+
},
|
|
158
|
+
"most_popular": "Più popolare",
|
|
159
|
+
"custom": "Personalizzato"
|
|
160
|
+
},
|
|
161
|
+
"metadata": {
|
|
162
|
+
"title": "t9n - Traduttore JSON per sviluppatori | Traduttore AI i18n",
|
|
163
|
+
"description": "Il traduttore AI per file JSON i18n pensato per gli sviluppatori. Zero errori di sintassi, protezione variabili e supporto contesto intelligente.",
|
|
164
|
+
"og_title": "t9n - Traduttore JSON per sviluppatori",
|
|
165
|
+
"og_description": "Traduci file JSON i18n senza rompere le variabili del codice. Supporta React Intl, i18next e altri."
|
|
166
|
+
},
|
|
167
|
+
"docs": {
|
|
168
|
+
"title": "Documentazione",
|
|
169
|
+
"subtitle": "Esplora le funzioni di t9n, dall'uso base agli aggiornamenti incrementali e l'ottimizzazione del contesto via AI.",
|
|
170
|
+
"sections": {
|
|
171
|
+
"basic": {
|
|
172
|
+
"title": "Funzione base: Traduzione in tempo reale",
|
|
173
|
+
"content": "t9n è progettato per il formato JSON i18n. Abbiamo ottimizzato la strategia per garantire che tutte le variabili (come {name} o {{count}}) siano protette durante la traduzione.",
|
|
174
|
+
"item1": "Supporta la selezione multipla delle lingue, generando più traduzioni contemporaneamente.",
|
|
175
|
+
"item2": "Anteprima in tempo reale: confronto affiancato tra sorgente e destinazione."
|
|
176
|
+
},
|
|
177
|
+
"context": {
|
|
178
|
+
"title": "Supporto contesto",
|
|
179
|
+
"content": "Tradurre non è solo parola per parola. Fornendo il contesto, l'AI può scegliere i termini con maggiore precisione.",
|
|
180
|
+
"example": "Ad esempio, la parola \"Menu\" è diversa in un'app di ristorazione rispetto a un software di design. Il contesto elimina le ambiguità."
|
|
181
|
+
},
|
|
182
|
+
"diff": {
|
|
183
|
+
"title": "Aggiornamento incrementale intelligente (Modalità Diff)",
|
|
184
|
+
"content": "Quando il file sorgente (es. en.json) ha nuovi contenuti, non serve ri-tradurre tutto. La modalità Diff di t9n ora supporta l'automazione completa.",
|
|
185
|
+
"new_feature": "Novità: Riconoscimento multi-file automatico",
|
|
186
|
+
"step1_title": "1. Caricamento multiplo",
|
|
187
|
+
"step1_desc": "Seleziona inglese (base) e le traduzioni esistenti (es. italiano, giapponese) contemporaneamente. Niente più confronti manuali.",
|
|
188
|
+
"step2_title": "2. Rilevamento base intelligente",
|
|
189
|
+
"step2_desc": "Il sistema conta le chiavi in ogni file e usa il più completo come base, riempiendo le parti mancanti negli altri.",
|
|
190
|
+
"step3_title": "3. Traduzione di precisione",
|
|
191
|
+
"step3_desc": "Le chiavi mancanti sono segnate come 🚧 [MISSING]. L'AI traduce solo queste, risparmiando oltre il 90% dei crediti.",
|
|
192
|
+
"quote": "\"Mantieni il 100% delle traduzioni esistenti, gestisci solo le novità.\""
|
|
193
|
+
},
|
|
194
|
+
"cli": {
|
|
195
|
+
"tag": "Disponibile ora",
|
|
196
|
+
"title": "t9n CLI",
|
|
197
|
+
"content": "Gestione i18n professionale dal terminale. Automatizza il flusso di traduzione con la nostra interfaccia a riga di comando.",
|
|
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 it,ja",
|
|
203
|
+
"command_diff": "t9n diff ./dictionaries",
|
|
204
|
+
"desc_auth": "Collega l'ambiente locale al tuo account t9n.",
|
|
205
|
+
"desc_init": "Crea t9n.config.json per salvare le preferenze del progetto.",
|
|
206
|
+
"desc_scan": "Trova chiavi mancanti nel codice che non sono ancora nel tuo JSON.",
|
|
207
|
+
"desc_translate": "Traduci direttamente i file locali e salva i risultati automaticamente.",
|
|
208
|
+
"desc_diff": "Aggiornamenti incrementali intelligenti per tutte le lingue in una cartella.",
|
|
209
|
+
"progress": "Pronto per la produzione"
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"example_correct": "Portfolio\" → \"Portafoglio investimenti\"",
|
|
213
|
+
"example_incorrect": "Portfolio\" → \"Collezione opere d'arte\""
|
|
214
|
+
},
|
|
215
|
+
"cli": {
|
|
216
|
+
"diff": {
|
|
217
|
+
"title": "🛰️ T9N CLI - Aggiornamento incrementale",
|
|
218
|
+
"analyzing": "🔍 Analisi differenze...",
|
|
219
|
+
"comparing": "Confronto con il file esistente...",
|
|
220
|
+
"new_lang": "Nuova lingua rilevata.",
|
|
221
|
+
"success": "Traduzione ricevuta con successo!",
|
|
222
|
+
"updated": "Aggiornato:",
|
|
223
|
+
"all_up_to_date": "✨ Tutte le traduzioni sono aggiornate!"
|
|
224
|
+
},
|
|
225
|
+
"scan": {
|
|
226
|
+
"title": "🔍 T9N CLI - Scanner codice",
|
|
227
|
+
"scanning": "Scansione file...",
|
|
228
|
+
"scanned": "Scansionati {n} file.",
|
|
229
|
+
"missing_found": "Trovate {n} chiavi mancanti (nel codice ma NON nel dizionario):",
|
|
230
|
+
"all_present": "✨ Tutte le chiavi nel codice sono presenti nel dizionario.",
|
|
231
|
+
"orphaned": "Trovate {n} chiavi potenzialmente inutilizzate (nel dizionario ma NON nel codice):"
|
|
232
|
+
},
|
|
233
|
+
"auth": {
|
|
234
|
+
"verifying": "Verifica chiave API...",
|
|
235
|
+
"success": "Autenticazione riuscita! (config {target})",
|
|
236
|
+
"key_missing": "Fornire una chiave API. Uso: t9n auth <key>"
|
|
237
|
+
},
|
|
238
|
+
"init": {
|
|
239
|
+
"title": "🎬 T9N - Inizializzazione progetto",
|
|
240
|
+
"created": "Configurazione progetto creata: {path}",
|
|
241
|
+
"already_exists": "Il file di configurazione esiste già in: {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": "差分更新",
|
|
47
|
+
"diff_msg": "差分 / 逐次更新機能は近日公開予定です!",
|
|
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}プランでは1リクエストにつき最大{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": "1ファイルあたりのキー数無制限",
|
|
75
|
+
"pro_benefits_2": "コンテキストの長さ無制限",
|
|
76
|
+
"pro_benefits_3": "一括翻訳",
|
|
77
|
+
"reduce_size": "現在は、ファイルサイズまたはコンテキストを削減してください。",
|
|
78
|
+
"select_target_lang": "ターゲット言語を少なくとも1つ選択してください。",
|
|
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": "CLIツールやCI/CDパイプラインで使用するAPIキーを管理します。",
|
|
128
|
+
"create": "新しいキーを作成",
|
|
129
|
+
"name_label": "キー名",
|
|
130
|
+
"name_placeholder": "例: My Laptop 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": "基本機能から高度な差分更新、AIコンテキスト最適化まで、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)に新しい内容が追加された際、ファイル全体を再翻訳する必要はありません。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
|
+
}
|