@llm-translate/cli 1.0.0-next.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 (157) hide show
  1. package/.dockerignore +51 -0
  2. package/.env.example +33 -0
  3. package/.github/workflows/docs-pages.yml +57 -0
  4. package/.github/workflows/release.yml +49 -0
  5. package/.translaterc.json +44 -0
  6. package/CLAUDE.md +243 -0
  7. package/Dockerfile +55 -0
  8. package/README.md +371 -0
  9. package/RFC.md +1595 -0
  10. package/dist/cli/index.d.ts +2 -0
  11. package/dist/cli/index.js +4494 -0
  12. package/dist/cli/index.js.map +1 -0
  13. package/dist/index.d.ts +1152 -0
  14. package/dist/index.js +3841 -0
  15. package/dist/index.js.map +1 -0
  16. package/docker-compose.yml +56 -0
  17. package/docs/.vitepress/config.ts +161 -0
  18. package/docs/api/agent.md +262 -0
  19. package/docs/api/engine.md +274 -0
  20. package/docs/api/index.md +171 -0
  21. package/docs/api/providers.md +304 -0
  22. package/docs/changelog.md +64 -0
  23. package/docs/cli/dir.md +243 -0
  24. package/docs/cli/file.md +213 -0
  25. package/docs/cli/glossary.md +273 -0
  26. package/docs/cli/index.md +129 -0
  27. package/docs/cli/init.md +158 -0
  28. package/docs/cli/serve.md +211 -0
  29. package/docs/glossary.json +235 -0
  30. package/docs/guide/chunking.md +272 -0
  31. package/docs/guide/configuration.md +139 -0
  32. package/docs/guide/cost-optimization.md +237 -0
  33. package/docs/guide/docker.md +371 -0
  34. package/docs/guide/getting-started.md +150 -0
  35. package/docs/guide/glossary.md +241 -0
  36. package/docs/guide/index.md +86 -0
  37. package/docs/guide/ollama.md +515 -0
  38. package/docs/guide/prompt-caching.md +221 -0
  39. package/docs/guide/providers.md +232 -0
  40. package/docs/guide/quality-control.md +206 -0
  41. package/docs/guide/vitepress-integration.md +265 -0
  42. package/docs/index.md +63 -0
  43. package/docs/ja/api/agent.md +262 -0
  44. package/docs/ja/api/engine.md +274 -0
  45. package/docs/ja/api/index.md +171 -0
  46. package/docs/ja/api/providers.md +304 -0
  47. package/docs/ja/changelog.md +64 -0
  48. package/docs/ja/cli/dir.md +243 -0
  49. package/docs/ja/cli/file.md +213 -0
  50. package/docs/ja/cli/glossary.md +273 -0
  51. package/docs/ja/cli/index.md +111 -0
  52. package/docs/ja/cli/init.md +158 -0
  53. package/docs/ja/guide/chunking.md +271 -0
  54. package/docs/ja/guide/configuration.md +139 -0
  55. package/docs/ja/guide/cost-optimization.md +30 -0
  56. package/docs/ja/guide/getting-started.md +150 -0
  57. package/docs/ja/guide/glossary.md +214 -0
  58. package/docs/ja/guide/index.md +32 -0
  59. package/docs/ja/guide/ollama.md +410 -0
  60. package/docs/ja/guide/prompt-caching.md +221 -0
  61. package/docs/ja/guide/providers.md +232 -0
  62. package/docs/ja/guide/quality-control.md +137 -0
  63. package/docs/ja/guide/vitepress-integration.md +265 -0
  64. package/docs/ja/index.md +58 -0
  65. package/docs/ko/api/agent.md +262 -0
  66. package/docs/ko/api/engine.md +274 -0
  67. package/docs/ko/api/index.md +171 -0
  68. package/docs/ko/api/providers.md +304 -0
  69. package/docs/ko/changelog.md +64 -0
  70. package/docs/ko/cli/dir.md +243 -0
  71. package/docs/ko/cli/file.md +213 -0
  72. package/docs/ko/cli/glossary.md +273 -0
  73. package/docs/ko/cli/index.md +111 -0
  74. package/docs/ko/cli/init.md +158 -0
  75. package/docs/ko/guide/chunking.md +271 -0
  76. package/docs/ko/guide/configuration.md +139 -0
  77. package/docs/ko/guide/cost-optimization.md +30 -0
  78. package/docs/ko/guide/getting-started.md +150 -0
  79. package/docs/ko/guide/glossary.md +214 -0
  80. package/docs/ko/guide/index.md +32 -0
  81. package/docs/ko/guide/ollama.md +410 -0
  82. package/docs/ko/guide/prompt-caching.md +221 -0
  83. package/docs/ko/guide/providers.md +232 -0
  84. package/docs/ko/guide/quality-control.md +137 -0
  85. package/docs/ko/guide/vitepress-integration.md +265 -0
  86. package/docs/ko/index.md +58 -0
  87. package/docs/zh/api/agent.md +262 -0
  88. package/docs/zh/api/engine.md +274 -0
  89. package/docs/zh/api/index.md +171 -0
  90. package/docs/zh/api/providers.md +304 -0
  91. package/docs/zh/changelog.md +64 -0
  92. package/docs/zh/cli/dir.md +243 -0
  93. package/docs/zh/cli/file.md +213 -0
  94. package/docs/zh/cli/glossary.md +273 -0
  95. package/docs/zh/cli/index.md +111 -0
  96. package/docs/zh/cli/init.md +158 -0
  97. package/docs/zh/guide/chunking.md +271 -0
  98. package/docs/zh/guide/configuration.md +139 -0
  99. package/docs/zh/guide/cost-optimization.md +30 -0
  100. package/docs/zh/guide/getting-started.md +150 -0
  101. package/docs/zh/guide/glossary.md +214 -0
  102. package/docs/zh/guide/index.md +32 -0
  103. package/docs/zh/guide/ollama.md +410 -0
  104. package/docs/zh/guide/prompt-caching.md +221 -0
  105. package/docs/zh/guide/providers.md +232 -0
  106. package/docs/zh/guide/quality-control.md +137 -0
  107. package/docs/zh/guide/vitepress-integration.md +265 -0
  108. package/docs/zh/index.md +58 -0
  109. package/package.json +91 -0
  110. package/release.config.mjs +15 -0
  111. package/schemas/glossary.schema.json +110 -0
  112. package/src/cli/commands/dir.ts +469 -0
  113. package/src/cli/commands/file.ts +291 -0
  114. package/src/cli/commands/glossary.ts +221 -0
  115. package/src/cli/commands/init.ts +68 -0
  116. package/src/cli/commands/serve.ts +60 -0
  117. package/src/cli/index.ts +64 -0
  118. package/src/cli/options.ts +59 -0
  119. package/src/core/agent.ts +1119 -0
  120. package/src/core/chunker.ts +391 -0
  121. package/src/core/engine.ts +634 -0
  122. package/src/errors.ts +188 -0
  123. package/src/index.ts +147 -0
  124. package/src/integrations/vitepress.ts +549 -0
  125. package/src/parsers/markdown.ts +383 -0
  126. package/src/providers/claude.ts +259 -0
  127. package/src/providers/interface.ts +109 -0
  128. package/src/providers/ollama.ts +379 -0
  129. package/src/providers/openai.ts +308 -0
  130. package/src/providers/registry.ts +153 -0
  131. package/src/server/index.ts +152 -0
  132. package/src/server/middleware/auth.ts +93 -0
  133. package/src/server/middleware/logger.ts +90 -0
  134. package/src/server/routes/health.ts +84 -0
  135. package/src/server/routes/translate.ts +210 -0
  136. package/src/server/types.ts +138 -0
  137. package/src/services/cache.ts +899 -0
  138. package/src/services/config.ts +217 -0
  139. package/src/services/glossary.ts +247 -0
  140. package/src/types/analysis.ts +164 -0
  141. package/src/types/index.ts +265 -0
  142. package/src/types/modes.ts +121 -0
  143. package/src/types/mqm.ts +157 -0
  144. package/src/utils/logger.ts +141 -0
  145. package/src/utils/tokens.ts +116 -0
  146. package/tests/fixtures/glossaries/ml-glossary.json +53 -0
  147. package/tests/fixtures/input/lynq-installation.ko.md +350 -0
  148. package/tests/fixtures/input/lynq-installation.md +350 -0
  149. package/tests/fixtures/input/simple.ko.md +27 -0
  150. package/tests/fixtures/input/simple.md +27 -0
  151. package/tests/unit/chunker.test.ts +229 -0
  152. package/tests/unit/glossary.test.ts +146 -0
  153. package/tests/unit/markdown.test.ts +205 -0
  154. package/tests/unit/tokens.test.ts +81 -0
  155. package/tsconfig.json +28 -0
  156. package/tsup.config.ts +34 -0
  157. package/vitest.config.ts +16 -0
@@ -0,0 +1,213 @@
1
+ # llm-translate file
2
+
3
+ ::: info Translations
4
+ All non-English documentation is automatically translated using Claude Sonnet 4.
5
+ :::
6
+
7
+ Translate a single file.
8
+
9
+ ## Synopsis
10
+
11
+ ```bash
12
+ llm-translate file <input> [output] [options]
13
+ ```
14
+
15
+ ## Arguments
16
+
17
+ | Argument | Description |
18
+ |----------|-------------|
19
+ | `<input>` | Input file path (required) |
20
+ | `[output]` | Output file path (optional, defaults to stdout) |
21
+
22
+ ## Options
23
+
24
+ ### Translation Options
25
+
26
+ | Option | Default | Description |
27
+ |--------|---------|-------------|
28
+ | `--source-lang`, `-s` | required | Source language code |
29
+ | `--target-lang`, `-t` | required | Target language code |
30
+ | `--glossary`, `-g` | none | Path to glossary file |
31
+
32
+ ### Quality Options
33
+
34
+ | Option | Default | Description |
35
+ |--------|---------|-------------|
36
+ | `--quality` | 85 | Quality threshold (0-100) |
37
+ | `--max-iterations` | 4 | Maximum refinement iterations |
38
+ | `--strict-quality` | false | Fail if threshold not met |
39
+ | `--strict-glossary` | false | Fail if glossary terms not applied |
40
+
41
+ ### Provider Options
42
+
43
+ | Option | Default | Description |
44
+ |--------|---------|-------------|
45
+ | `--provider`, `-p` | claude | Provider name |
46
+ | `--model`, `-m` | varies | Model identifier |
47
+
48
+ ### Output Options
49
+
50
+ | Option | Default | Description |
51
+ |--------|---------|-------------|
52
+ | `--output`, `-o` | auto | Output file path |
53
+ | `--format`, `-f` | auto | Force output format (md\|html\|txt) |
54
+ | `--dry-run` | false | Show what would be done |
55
+ | `--json` | false | Output results as JSON |
56
+ | `--verbose`, `-v` | false | Enable verbose logging |
57
+ | `--quiet`, `-q` | false | Suppress non-error output |
58
+
59
+ ### Advanced Options
60
+
61
+ | Option | Default | Description |
62
+ |--------|---------|-------------|
63
+ | `--no-cache` | false | Disable translation cache |
64
+ | `--chunk-size` | 1024 | Max tokens per chunk |
65
+ | `--context` | none | Additional context for translation |
66
+
67
+ ## Examples
68
+
69
+ ### Basic Usage
70
+
71
+ ```bash
72
+ # Translate to Korean
73
+ llm-translate file README.md -o README.ko.md -s en -t ko
74
+
75
+ # With explicit output path
76
+ llm-translate file README.md --output README.ko.md --source-lang en --target-lang ko
77
+
78
+ # Specify source and target languages
79
+ llm-translate file doc.md -o doc.ja.md --source-lang en --target-lang ja
80
+ ```
81
+
82
+ ### With Glossary
83
+
84
+ ```bash
85
+ # Use glossary for consistent terminology
86
+ llm-translate file api-docs.md -o api-docs.ko.md \
87
+ -s en -t ko \
88
+ --glossary glossary.json
89
+ ```
90
+
91
+ ### Quality Control
92
+
93
+ ```bash
94
+ # Higher quality threshold
95
+ llm-translate file important.md -o important.ko.md \
96
+ -s en -t ko \
97
+ --quality 95 \
98
+ --max-iterations 6
99
+
100
+ # Strict mode (fail if not met)
101
+ llm-translate file legal.md -o legal.ko.md \
102
+ --source-lang en \
103
+ --target-lang ko \
104
+ --quality 95 \
105
+ --strict-quality
106
+ ```
107
+
108
+ ### Provider Selection
109
+
110
+ ```bash
111
+ # Use Claude Sonnet
112
+ llm-translate file doc.md -o doc.ko.md \
113
+ -s en -t ko \
114
+ --provider claude \
115
+ --model claude-sonnet-4-5-20250929
116
+
117
+ # Use OpenAI
118
+ llm-translate file doc.md -o doc.ko.md \
119
+ -s en -t ko \
120
+ --provider openai \
121
+ --model gpt-4o
122
+ ```
123
+
124
+ ### From stdin
125
+
126
+ ```bash
127
+ # Pipe content (uses stdin mode when no TTY)
128
+ cat doc.md | llm-translate -s en -t ko > doc.ko.md
129
+
130
+ # Use with other tools
131
+ curl https://example.com/doc.md | llm-translate -s en -t ko
132
+ ```
133
+
134
+ ## Output Format
135
+
136
+ ### Normal Mode
137
+
138
+ ```
139
+ ✓ Translated README.md → README.ko.md
140
+ Quality: 92/85 (threshold met)
141
+ Duration: 3.2s
142
+ ```
143
+
144
+ ### Verbose Mode
145
+
146
+ ```bash
147
+ llm-translate file doc.md -o doc.ko.md --target ko --verbose
148
+ ```
149
+
150
+ ```
151
+ ℹ Loading configuration...
152
+ ℹ Provider: claude (claude-haiku-4-5-20251001)
153
+ ℹ Parsing document...
154
+ ℹ Chunks: 5
155
+ ℹ Starting translation...
156
+
157
+ [Chunk 1/5] Starting initial translation...
158
+ [Chunk 1/5] Quality: 78/85
159
+ [Chunk 1/5] Generating improvements...
160
+ [Chunk 1/5] Quality: 91/85 ✓
161
+
162
+ [Chunk 2/5] Starting initial translation...
163
+ [Chunk 2/5] Quality: 88/85 ✓
164
+ ...
165
+
166
+ ✓ Translation complete
167
+ Quality: 89/85 (threshold met)
168
+ Iterations: avg 1.8
169
+ Tokens: 5,234 input / 6,456 output
170
+ Cache: 3,200 read / 800 written
171
+ Duration: 8.4s
172
+ ```
173
+
174
+ ## Language Codes
175
+
176
+ Common language codes:
177
+
178
+ | Code | Language |
179
+ |------|----------|
180
+ | `en` | English |
181
+ | `ko` | Korean |
182
+ | `ja` | Japanese |
183
+ | `zh` | Chinese (Simplified) |
184
+ | `zh-TW` | Chinese (Traditional) |
185
+ | `es` | Spanish |
186
+ | `fr` | French |
187
+ | `de` | German |
188
+
189
+ ## Error Handling
190
+
191
+ ### File Not Found
192
+
193
+ ```bash
194
+ $ llm-translate file missing.md -s en -t ko
195
+ Error: Could not read file 'missing.md'
196
+ Exit code: 3
197
+ ```
198
+
199
+ ### Quality Not Met (Strict Mode)
200
+
201
+ ```bash
202
+ $ llm-translate file doc.md -o doc.ko.md -s en -t ko --quality 99 --strict-quality
203
+ Error: Quality threshold not met: 94/99
204
+ Exit code: 4
205
+ ```
206
+
207
+ ### API Error
208
+
209
+ ```bash
210
+ $ llm-translate file doc.md --target ko
211
+ Error: Provider error: Rate limit exceeded
212
+ Exit code: 5
213
+ ```
@@ -0,0 +1,273 @@
1
+ # llm-translate glossary
2
+
3
+ ::: info Translations
4
+ All non-English documentation is automatically translated using Claude Sonnet 4.
5
+ :::
6
+
7
+ Manage glossary files for consistent terminology.
8
+
9
+ ## Synopsis
10
+
11
+ ```bash
12
+ llm-translate glossary <subcommand> [options]
13
+ ```
14
+
15
+ ## Subcommands
16
+
17
+ ### list
18
+
19
+ List all terms in a glossary.
20
+
21
+ ```bash
22
+ llm-translate glossary list --glossary glossary.json
23
+ ```
24
+
25
+ Options:
26
+ | Option | Description |
27
+ |--------|-------------|
28
+ | `--glossary`, `-g` | Path to glossary file (required) |
29
+ | `--target`, `-t` | Filter by target language |
30
+ | `--format` | Output format: `table`, `json` |
31
+
32
+ Examples:
33
+
34
+ ```bash
35
+ # List all terms
36
+ llm-translate glossary list -g glossary.json
37
+
38
+ # Filter by target language
39
+ llm-translate glossary list -g glossary.json --target ko
40
+
41
+ # JSON output
42
+ llm-translate glossary list -g glossary.json --format json
43
+ ```
44
+
45
+ Output:
46
+ ```
47
+ Glossary: glossary.json (15 terms)
48
+
49
+ Source | Korean (ko) | Japanese (ja) | Flags
50
+ ----------------|------------------|------------------|-------
51
+ component | 컴포넌트 | コンポーネント |
52
+ prop | 프롭 | プロップ |
53
+ state | 상태 | ステート |
54
+ TypeScript | - | - | DNT
55
+ API | - | - | DNT, CS
56
+
57
+ DNT = Do Not Translate, CS = Case Sensitive
58
+ ```
59
+
60
+ ### validate
61
+
62
+ Validate glossary file structure and content.
63
+
64
+ ```bash
65
+ llm-translate glossary validate --glossary glossary.json
66
+ ```
67
+
68
+ Options:
69
+ | Option | Description |
70
+ |--------|-------------|
71
+ | `--glossary`, `-g` | Path to glossary file (required) |
72
+ | `--strict` | Fail on warnings |
73
+
74
+ Examples:
75
+
76
+ ```bash
77
+ # Basic validation
78
+ llm-translate glossary validate -g glossary.json
79
+
80
+ # Strict mode
81
+ llm-translate glossary validate -g glossary.json --strict
82
+ ```
83
+
84
+ Output:
85
+ ```
86
+ Validating glossary.json...
87
+
88
+ ✓ Valid JSON structure
89
+ ✓ Required fields present
90
+ ✓ 15 terms found
91
+
92
+ Warnings:
93
+ - Term "component" has no context
94
+ - Term "hook" missing Japanese translation
95
+
96
+ ✓ Validation passed (2 warnings)
97
+ ```
98
+
99
+ ### add
100
+
101
+ Add a new term to the glossary.
102
+
103
+ ```bash
104
+ llm-translate glossary add <source> [options]
105
+ ```
106
+
107
+ Options:
108
+ | Option | Description |
109
+ |--------|-------------|
110
+ | `--glossary`, `-g` | Path to glossary file (required) |
111
+ | `--target` | Target translation (format: `lang=value`) |
112
+ | `--context` | Context for the term |
113
+ | `--dnt` | Mark as "do not translate" |
114
+ | `--case-sensitive` | Mark as case sensitive |
115
+
116
+ Examples:
117
+
118
+ ```bash
119
+ # Add with translations
120
+ llm-translate glossary add "container" \
121
+ -g glossary.json \
122
+ --target ko="컨테이너" \
123
+ --target ja="コンテナ"
124
+
125
+ # Add do-not-translate term
126
+ llm-translate glossary add "Kubernetes" \
127
+ -g glossary.json \
128
+ --dnt
129
+
130
+ # Add with context
131
+ llm-translate glossary add "instance" \
132
+ -g glossary.json \
133
+ --target ko="인스턴스" \
134
+ --context "Cloud computing instance"
135
+ ```
136
+
137
+ ### remove
138
+
139
+ Remove a term from the glossary.
140
+
141
+ ```bash
142
+ llm-translate glossary remove <source> --glossary glossary.json
143
+ ```
144
+
145
+ Examples:
146
+
147
+ ```bash
148
+ llm-translate glossary remove "deprecated-term" -g glossary.json
149
+ ```
150
+
151
+ ### update
152
+
153
+ Update an existing term.
154
+
155
+ ```bash
156
+ llm-translate glossary update <source> [options]
157
+ ```
158
+
159
+ Options:
160
+ | Option | Description |
161
+ |--------|-------------|
162
+ | `--glossary`, `-g` | Path to glossary file (required) |
163
+ | `--target` | Update target translation |
164
+ | `--context` | Update context |
165
+ | `--dnt` | Set/unset do not translate |
166
+
167
+ Examples:
168
+
169
+ ```bash
170
+ # Update translation
171
+ llm-translate glossary update "component" \
172
+ -g glossary.json \
173
+ --target ko="컴포넌트 요소"
174
+
175
+ # Add context
176
+ llm-translate glossary update "state" \
177
+ -g glossary.json \
178
+ --context "React component state"
179
+ ```
180
+
181
+ ### stats
182
+
183
+ Show glossary statistics.
184
+
185
+ ```bash
186
+ llm-translate glossary stats --glossary glossary.json
187
+ ```
188
+
189
+ Output:
190
+ ```
191
+ Glossary Statistics: glossary.json
192
+
193
+ Terms: 15
194
+ - With translations: 12
195
+ - Do not translate: 3
196
+
197
+ Languages:
198
+ - Korean (ko): 12 terms
199
+ - Japanese (ja): 10 terms
200
+ - Chinese (zh): 8 terms
201
+
202
+ Token estimate: ~450 tokens
203
+ ```
204
+
205
+ ### merge
206
+
207
+ Merge multiple glossaries.
208
+
209
+ ```bash
210
+ llm-translate glossary merge \
211
+ --input glossary-a.json \
212
+ --input glossary-b.json \
213
+ --output merged.json
214
+ ```
215
+
216
+ Options:
217
+ | Option | Description |
218
+ |--------|-------------|
219
+ | `--input`, `-i` | Input glossary files (multiple) |
220
+ | `--output`, `-o` | Output merged glossary |
221
+ | `--strategy` | Conflict resolution: `first`, `last`, `error` |
222
+
223
+ ### export
224
+
225
+ Export glossary to different formats.
226
+
227
+ ```bash
228
+ llm-translate glossary export --glossary glossary.json --format csv
229
+ ```
230
+
231
+ Options:
232
+ | Option | Description |
233
+ |--------|-------------|
234
+ | `--format` | Export format: `csv`, `tsv`, `xlsx` |
235
+ | `--output`, `-o` | Output file path |
236
+
237
+ ## Best Practices
238
+
239
+ ### Organizing Large Glossaries
240
+
241
+ ```bash
242
+ # Split by domain
243
+ glossaries/
244
+ ├── common.json # Shared terms
245
+ ├── frontend.json # UI terminology
246
+ ├── backend.json # Server terminology
247
+ └── devops.json # Infrastructure terms
248
+
249
+ # Merge for use
250
+ llm-translate glossary merge \
251
+ -i glossaries/common.json \
252
+ -i glossaries/frontend.json \
253
+ -o project-glossary.json
254
+ ```
255
+
256
+ ### Version Control
257
+
258
+ Include glossary in version control:
259
+
260
+ ```bash
261
+ git add glossary.json
262
+ git commit -m "Add project glossary"
263
+ ```
264
+
265
+ ### Regular Maintenance
266
+
267
+ ```bash
268
+ # Validate before commits
269
+ llm-translate glossary validate -g glossary.json --strict
270
+
271
+ # Review stats periodically
272
+ llm-translate glossary stats -g glossary.json
273
+ ```
@@ -0,0 +1,129 @@
1
+ # CLI Reference
2
+
3
+ ::: info Translations
4
+ All non-English documentation is automatically translated using Claude Sonnet 4.
5
+ :::
6
+
7
+ llm-translate provides a command-line interface for translating documents.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npm install -g @llm-translate/cli
13
+ ```
14
+
15
+ ## Global Options
16
+
17
+ These options are available for all commands:
18
+
19
+ | Option | Description |
20
+ |--------|-------------|
21
+ | `--help`, `-h` | Show help |
22
+ | `--version`, `-V` | Show version |
23
+ | `--verbose`, `-v` | Enable verbose output |
24
+ | `--quiet`, `-q` | Suppress non-essential output |
25
+ | `--config` | Path to config file |
26
+
27
+ ## Commands
28
+
29
+ ### [file](./file)
30
+
31
+ Translate a single file.
32
+
33
+ ```bash
34
+ llm-translate file <input> [output] [options]
35
+ ```
36
+
37
+ ### [dir](./dir)
38
+
39
+ Translate all files in a directory.
40
+
41
+ ```bash
42
+ llm-translate dir <input> <output> [options]
43
+ ```
44
+
45
+ ### [init](./init)
46
+
47
+ Initialize configuration file.
48
+
49
+ ```bash
50
+ llm-translate init [options]
51
+ ```
52
+
53
+ ### [glossary](./glossary)
54
+
55
+ Manage glossary files.
56
+
57
+ ```bash
58
+ llm-translate glossary <subcommand> [options]
59
+ ```
60
+
61
+ ### [serve](./serve)
62
+
63
+ Start the translation API server.
64
+
65
+ ```bash
66
+ llm-translate serve [options]
67
+ ```
68
+
69
+ ## Quick Examples
70
+
71
+ ```bash
72
+ # Translate a file to Korean
73
+ llm-translate file README.md -o README.ko.md -s en -t ko
74
+
75
+ # Translate with glossary
76
+ llm-translate file docs/guide.md -o docs/guide.ja.md \
77
+ -s en -t ja --glossary glossary.json
78
+
79
+ # Batch translate a directory
80
+ llm-translate dir ./docs ./docs-ko -s en -t ko
81
+
82
+ # Initialize config
83
+ llm-translate init --provider claude
84
+
85
+ # Validate glossary
86
+ llm-translate glossary validate glossary.json
87
+
88
+ # Start translation API server
89
+ llm-translate serve --port 3000
90
+
91
+ # Start server with CORS and JSON logging (for Docker)
92
+ llm-translate serve --cors --json
93
+ ```
94
+
95
+ ## Exit Codes
96
+
97
+ | Code | Description |
98
+ |------|-------------|
99
+ | 0 | Success |
100
+ | 1 | General error |
101
+ | 2 | Invalid arguments |
102
+ | 3 | File not found |
103
+ | 4 | Quality threshold not met (strict mode) |
104
+ | 5 | Provider/API error |
105
+ | 6 | Glossary validation failed |
106
+
107
+ ## Environment Variables
108
+
109
+ ```bash
110
+ # API Keys
111
+ ANTHROPIC_API_KEY=sk-ant-xxxxx
112
+ OPENAI_API_KEY=sk-xxxxx
113
+ OLLAMA_BASE_URL=http://localhost:11434
114
+
115
+ # Server Mode
116
+ TRANSLATE_PORT=3000
117
+ TRANSLATE_API_KEY=your-api-key
118
+ ```
119
+
120
+ ## Configuration Priority
121
+
122
+ Settings are applied in this order (later overrides earlier):
123
+
124
+ 1. Built-in defaults
125
+ 2. Config file (`.translaterc.json`)
126
+ 3. Environment variables
127
+ 4. CLI arguments
128
+
129
+ See [Configuration](../guide/configuration) for details.