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": "Μετάφραση 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": "Έναρξη 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Ετοιμάζουμε τις premium λειτουργίες. Μείνετε συντονισμένοι!\n\nΧρειάζεστε βοήθεια; Επικοινωνία: {email}",
|
|
53
|
+
"download_pro_msg": "Η λήψη είναι Pro λειτουργία.\n\nΕτοιμάζουμε τις premium λειτουργίες. Μείνετε συντονισμένοι!\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": "Ετοιμάζουμε τις 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": "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": "Πίσω στον Editor",
|
|
107
|
+
"mail_to": "Email προς",
|
|
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 pipelines.",
|
|
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 Translator",
|
|
163
|
+
"description": "Ο AI μεταφραστής για αρχεία i18n JSON. Μηδενικά συντακτικά λάθη, προστασία μεταβλητών (React Intl, i18next) και έξυπνη επίγνωση πλαισίου. Μεταφράστε λογισμικό, όχι απλά λέξεις.",
|
|
164
|
+
"og_title": "t9n - Μεταφραστής JSON για προγραμματιστές",
|
|
165
|
+
"og_description": "Μεταφράστε αρχεία i18n JSON χωρίς να καταστρέψετε τις μεταβλητές του κώδικά σας. Υποστηρίζει React Intl, i18next και άλλα."
|
|
166
|
+
},
|
|
167
|
+
"docs": {
|
|
168
|
+
"title": "Τεκμηρίωση",
|
|
169
|
+
"subtitle": "Εξερευνήστε τις λειτουργίες του t9n, από τη βασική χρήση έως τις προηγμένες σταδιακές ενημερώσεις και τη βελτιστοποίηση πλαισίου AI.",
|
|
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 Mode)",
|
|
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 από το τερματικό σας. Αυτοματοποιήστε τη ροή εργασίας σας με το ισχυρό CLI μας.",
|
|
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 - Scanner Κώδικα",
|
|
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": "i18n translation that respects your code.",
|
|
5
|
+
"subtitle": "Zero Syntax Errors. Variable Protection. Context Aware.",
|
|
6
|
+
"button": "Start Translating"
|
|
7
|
+
},
|
|
8
|
+
"editor": {
|
|
9
|
+
"run": "RUN TRANSLATION",
|
|
10
|
+
"translating": "TRANSLATING",
|
|
11
|
+
"source": {
|
|
12
|
+
"label": "Source Language",
|
|
13
|
+
"upload": "Upload JSON",
|
|
14
|
+
"upload_multiple": "Click to upload JSON files",
|
|
15
|
+
"context": "Context",
|
|
16
|
+
"context_placeholder": "Add context to improve translation...",
|
|
17
|
+
"pro_feature": "PRO FEATURE",
|
|
18
|
+
"pro_context_msg": "Upgrade to provide context for higher accuracy.",
|
|
19
|
+
"info": "SOURCE",
|
|
20
|
+
"lines": "Lines",
|
|
21
|
+
"clear_context": "Clear",
|
|
22
|
+
"large_file_title": "Large file loaded ({size})",
|
|
23
|
+
"large_file_desc": "Preview is disabled for performance. The full content will be sent for translation."
|
|
24
|
+
},
|
|
25
|
+
"diff_dialog": {
|
|
26
|
+
"title": "Incremental Update (Diff)",
|
|
27
|
+
"files_preview": "Files Preview",
|
|
28
|
+
"base_tag": "BASE",
|
|
29
|
+
"start_diff": "Start Diff"
|
|
30
|
+
},
|
|
31
|
+
"target": {
|
|
32
|
+
"label": "Target Language",
|
|
33
|
+
"copy": "Copy",
|
|
34
|
+
"download": "Download",
|
|
35
|
+
"no_selection": "No languages selected",
|
|
36
|
+
"placeholder": "Select language & run translation to see results here",
|
|
37
|
+
"stale_warning": "Source changed - Translation outdated",
|
|
38
|
+
"max_select": "MAX {n}",
|
|
39
|
+
"more_suffix": "(+{n})"
|
|
40
|
+
},
|
|
41
|
+
"mobile": {
|
|
42
|
+
"view_result": "View Result",
|
|
43
|
+
"back_to_code": "Back to Code"
|
|
44
|
+
},
|
|
45
|
+
"features": {
|
|
46
|
+
"diff_title": "Incremental Diff",
|
|
47
|
+
"diff_msg": "Diff / Incremental Update feature is coming soon!",
|
|
48
|
+
"soon": "SOON"
|
|
49
|
+
},
|
|
50
|
+
"messages": {
|
|
51
|
+
"pro_feature_title": "Pro Feature (Coming Soon)",
|
|
52
|
+
"upload_pro_msg": "Upload is a Pro feature.\n\nWe are currently building the premium features. Stay tuned!\n\nNeed help? Contact: {email}",
|
|
53
|
+
"download_pro_msg": "Download is a Pro feature.\n\nWe are currently building the premium features. Stay tuned!\n\nNeed help? Contact: {email}",
|
|
54
|
+
"diff_upload_hint": "Upload all your translation files. The most complete one will be used as base.",
|
|
55
|
+
"file_too_large_title": "File Too Large",
|
|
56
|
+
"file_too_large_msg": "File is too large ({size}). Max limit is {limit}.\n\nFile splitting feature is coming soon!",
|
|
57
|
+
"copied": "Copied to clipboard!",
|
|
58
|
+
"copy_failed": "Failed to copy to clipboard",
|
|
59
|
+
"invalid_json": "Invalid Source JSON",
|
|
60
|
+
"translation_complete": "Translation completed!",
|
|
61
|
+
"translation_failed": "Translation failed",
|
|
62
|
+
"daily_limit_reached": "DAILY LIMIT REACHED",
|
|
63
|
+
"daily_limit_desc": "You have used your free translations for today.",
|
|
64
|
+
"pro_plan_coming_soon": "PRO PLAN & UNLIMITED ACCESS ARE COMING SOON!",
|
|
65
|
+
"building_premium": "We are currently building the premium features. Stay tuned!",
|
|
66
|
+
"contact_us": "Need more? Contact us: {email}",
|
|
67
|
+
"error_details": "Error details:",
|
|
68
|
+
"limit_exceeded": "Limit Exceeded",
|
|
69
|
+
"limit_exceeded_desc": "{tier} plan allows up to {max} keys per request. Your file has {keys} keys.",
|
|
70
|
+
"insufficient_credits": "Insufficient Credits",
|
|
71
|
+
"insufficient_credits_desc": "This translation requires {cost} credits, but you have {available} remaining.",
|
|
72
|
+
"free_plan_limit_exceeded": "FREE PLAN LIMIT EXCEEDED",
|
|
73
|
+
"upgrade_to_pro": "UPGRADE TO PRO (Coming Soon)",
|
|
74
|
+
"pro_benefits_1": "Unlimited Keys per file",
|
|
75
|
+
"pro_benefits_2": "Unlimited Context length",
|
|
76
|
+
"pro_benefits_3": "Batch Translation",
|
|
77
|
+
"reduce_size": "For now, please reduce your file size or context.",
|
|
78
|
+
"select_target_lang": "Please select at least one target language.",
|
|
79
|
+
"up_to_date": "All selected languages are up to date.",
|
|
80
|
+
"translating_placeholder": "// Translating...",
|
|
81
|
+
"error_no_data": "// Error: No data returned.",
|
|
82
|
+
"error_failed_generic": "// Error: Failed to translate. Please try again.",
|
|
83
|
+
"max_langs_reached": "Maximum {n} target languages allowed in free plan.",
|
|
84
|
+
"credits_needed": "Credits needed",
|
|
85
|
+
"credits_remaining": "Remaining",
|
|
86
|
+
"invalid_base_json": "Invalid Base JSON",
|
|
87
|
+
"invalid_base_content": "Invalid Base File Content"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"common": {
|
|
91
|
+
"contact": "Contact",
|
|
92
|
+
"email": "z17682341097@gmail.com",
|
|
93
|
+
"pro": "PRO",
|
|
94
|
+
"coming_soon": "Coming Soon",
|
|
95
|
+
"pricing": "Pricing",
|
|
96
|
+
"docs": "Docs & CLI",
|
|
97
|
+
"cli": "CLI",
|
|
98
|
+
"i18n_note": "All translations for this site were generated using t9n.",
|
|
99
|
+
"upgrade": "Upgrade",
|
|
100
|
+
"auto_detect": "Auto-detect",
|
|
101
|
+
"soon": "SOON",
|
|
102
|
+
"pro_only": "({pro} Only)",
|
|
103
|
+
"contact_support": "Contact Support",
|
|
104
|
+
"pricing_limits": "Pricing & Limits",
|
|
105
|
+
"back_to_home": "BACK TO HOME",
|
|
106
|
+
"back_to_editor": "Back to Editor",
|
|
107
|
+
"mail_to": "Mail to",
|
|
108
|
+
"cancel": "CANCEL",
|
|
109
|
+
"close": "CLOSE",
|
|
110
|
+
"confirm": "CONFIRM",
|
|
111
|
+
"notification": "Notification"
|
|
112
|
+
},
|
|
113
|
+
"auth": {
|
|
114
|
+
"login": "Login",
|
|
115
|
+
"logout": "Sign Out",
|
|
116
|
+
"welcome_back": "Welcome Back",
|
|
117
|
+
"login_desc": "Sign in to access Pro features and higher limits",
|
|
118
|
+
"cli_login_required": "Please login first using: t9n auth <your-api-key>",
|
|
119
|
+
"continue_google": "Continue with Google",
|
|
120
|
+
"continue_github": "Continue with GitHub",
|
|
121
|
+
"terms": "By continuing, you agree to our Terms of Service and Privacy Policy."
|
|
122
|
+
},
|
|
123
|
+
"settings": {
|
|
124
|
+
"title": "Settings",
|
|
125
|
+
"apikeys": {
|
|
126
|
+
"title": "API Keys",
|
|
127
|
+
"desc": "Manage your API keys for use with CLI tools or in CI/CD pipelines.",
|
|
128
|
+
"create": "Create New Key",
|
|
129
|
+
"name_label": "Key Name",
|
|
130
|
+
"name_placeholder": "e.g. My Laptop CLI",
|
|
131
|
+
"key_secret_warning": "Please copy your API key now. For your security, it will not be shown again.",
|
|
132
|
+
"copy_key": "Copy Key",
|
|
133
|
+
"list_empty": "No API keys created yet.",
|
|
134
|
+
"revoke": "Revoke",
|
|
135
|
+
"revoke_confirm": "Are you sure you want to revoke this API key? Tools using it will stop working.",
|
|
136
|
+
"last_used": "Last Used",
|
|
137
|
+
"never_used": "Never",
|
|
138
|
+
"created": "Created"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"pricing": {
|
|
142
|
+
"title": "Simple, Transparent Pricing",
|
|
143
|
+
"subtitle": "Choose the plan that suits your translation needs.",
|
|
144
|
+
"monthly": "monthly",
|
|
145
|
+
"daily": "daily",
|
|
146
|
+
"per_request": "per request",
|
|
147
|
+
"get_started": "Get Started",
|
|
148
|
+
"upgrade": "Upgrade Now",
|
|
149
|
+
"contact_sales": "Contact Sales",
|
|
150
|
+
"features": {
|
|
151
|
+
"credits": "{n} Credits",
|
|
152
|
+
"keys": "Up to {n} keys",
|
|
153
|
+
"langs": "Up to {n} languages",
|
|
154
|
+
"upload_download": "Upload / Download",
|
|
155
|
+
"diff": "Incremental Update (Diff)",
|
|
156
|
+
"context": "Context Awareness"
|
|
157
|
+
},
|
|
158
|
+
"most_popular": "Most Popular",
|
|
159
|
+
"custom": "Custom"
|
|
160
|
+
},
|
|
161
|
+
"metadata": {
|
|
162
|
+
"title": "t9n - JSON Translator for Developers | i18n AI Translator",
|
|
163
|
+
"description": "The developer-first AI translator for i18n JSON files. Zero syntax errors, variable protection (React Intl, i18next), and smart context awareness. Translate software, not just words.",
|
|
164
|
+
"og_title": "t9n - JSON Translator for Developers",
|
|
165
|
+
"og_description": "Translate i18n JSON files without breaking your code variables. Supports React Intl, i18next, and more."
|
|
166
|
+
},
|
|
167
|
+
"docs": {
|
|
168
|
+
"title": "Documentation",
|
|
169
|
+
"subtitle": "Dive into t9n's features, from basic usage to advanced incremental updates and AI context optimization.",
|
|
170
|
+
"sections": {
|
|
171
|
+
"basic": {
|
|
172
|
+
"title": "Basic Feature: Real-time Translation",
|
|
173
|
+
"content": "t9n is designed for i18n JSON format. We have optimized the Prompt strategy to ensure all code variables (such as {name} or {{count}}) are strictly protected during the translation process.",
|
|
174
|
+
"item1": "Support batch selection of target languages, generating multiple translations at once.",
|
|
175
|
+
"item2": "Real-time preview: source content and target content compared side by side."
|
|
176
|
+
},
|
|
177
|
+
"context": {
|
|
178
|
+
"title": "Context Awareness",
|
|
179
|
+
"content": "Translation is more than just word-for-word. By providing application background, AI can choose vocabulary more accurately.",
|
|
180
|
+
"example": "For example, the same word \"Menu\" is \"menu\" in a restaurant app and \"function list\" in design software. Providing Context can eliminate ambiguity."
|
|
181
|
+
},
|
|
182
|
+
"diff": {
|
|
183
|
+
"title": "Intelligent Incremental Update (Diff Mode)",
|
|
184
|
+
"content": "When your source language file (e.g. en.json) has new content, you don't need to re-translate the entire file. t9n's incremental update mode now supports full automation.",
|
|
185
|
+
"new_feature": "New: Fully Automatic Multi-file Recognition",
|
|
186
|
+
"step1_title": "1. Multi-select Upload",
|
|
187
|
+
"step1_desc": "Select English (base) and existing translation files (e.g., Chinese, Japanese) simultaneously in the upload dialog. No more manual comparisons.",
|
|
188
|
+
"step2_title": "2. Smart Base Detection",
|
|
189
|
+
"step2_desc": "The system automatically counts keys in each file and treats the most complete one as the 'translation base', auto-filling missing parts in others.",
|
|
190
|
+
"step3_title": "3. Precision Translation",
|
|
191
|
+
"step3_desc": "Missing keys are marked as 🚧 [MISSING]. AI only translates these markers, saving you over 90% in credits.",
|
|
192
|
+
"quote": "\"Keep 100% of existing translations, only address new requirements.\""
|
|
193
|
+
},
|
|
194
|
+
"cli": {
|
|
195
|
+
"tag": "Available Now",
|
|
196
|
+
"title": "t9n CLI",
|
|
197
|
+
"content": "Professional i18n management from your terminal. Automate your translation workflow with our powerful command-line interface.",
|
|
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": "Link your local environment with your t9n account.",
|
|
205
|
+
"desc_init": "Create t9n.config.json to save your project preferences.",
|
|
206
|
+
"desc_scan": "Find missing keys in your source code that aren't in your JSON yet.",
|
|
207
|
+
"desc_translate": "Directly translate local files and save results automatically.",
|
|
208
|
+
"desc_diff": "Smart incremental updates for all languages in a folder.",
|
|
209
|
+
"progress": "Ready for Production"
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"example_correct": "Portfolio\" → \"Investment Portfolio\"",
|
|
213
|
+
"example_incorrect": "Portfolio\" → \"Artwork Collection\""
|
|
214
|
+
},
|
|
215
|
+
"cli": {
|
|
216
|
+
"diff": {
|
|
217
|
+
"title": "🛰️ T9N CLI - Incremental Update",
|
|
218
|
+
"analyzing": "🔍 Analyzing differences...",
|
|
219
|
+
"comparing": "Comparing with existing file...",
|
|
220
|
+
"new_lang": "New language detected.",
|
|
221
|
+
"success": "Translation received successfully!",
|
|
222
|
+
"updated": "Updated:",
|
|
223
|
+
"all_up_to_date": "✨ All translations are up to date!"
|
|
224
|
+
},
|
|
225
|
+
"scan": {
|
|
226
|
+
"title": "🔍 T9N CLI - Code Scanner",
|
|
227
|
+
"scanning": "Scanning files...",
|
|
228
|
+
"scanned": "Scanned {n} files.",
|
|
229
|
+
"missing_found": "Found {n} missing keys (in code but NOT in dictionary):",
|
|
230
|
+
"all_present": "✨ All keys in code are present in the dictionary.",
|
|
231
|
+
"orphaned": "Found {n} potentially unused keys (in dict but NOT in code):"
|
|
232
|
+
},
|
|
233
|
+
"auth": {
|
|
234
|
+
"verifying": "Verifying API Key...",
|
|
235
|
+
"success": "Authentication successful! ({target} config)",
|
|
236
|
+
"key_missing": "Please provide an API Key. Usage: t9n auth <key>"
|
|
237
|
+
},
|
|
238
|
+
"init": {
|
|
239
|
+
"title": "🎬 T9N - Project Initialization",
|
|
240
|
+
"created": "Created project config: {path}",
|
|
241
|
+
"already_exists": "Config file already exists at: {path}"
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|