@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.
- package/.dockerignore +51 -0
- package/.env.example +33 -0
- package/.github/workflows/docs-pages.yml +57 -0
- package/.github/workflows/release.yml +49 -0
- package/.translaterc.json +44 -0
- package/CLAUDE.md +243 -0
- package/Dockerfile +55 -0
- package/README.md +371 -0
- package/RFC.md +1595 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +4494 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +1152 -0
- package/dist/index.js +3841 -0
- package/dist/index.js.map +1 -0
- package/docker-compose.yml +56 -0
- package/docs/.vitepress/config.ts +161 -0
- package/docs/api/agent.md +262 -0
- package/docs/api/engine.md +274 -0
- package/docs/api/index.md +171 -0
- package/docs/api/providers.md +304 -0
- package/docs/changelog.md +64 -0
- package/docs/cli/dir.md +243 -0
- package/docs/cli/file.md +213 -0
- package/docs/cli/glossary.md +273 -0
- package/docs/cli/index.md +129 -0
- package/docs/cli/init.md +158 -0
- package/docs/cli/serve.md +211 -0
- package/docs/glossary.json +235 -0
- package/docs/guide/chunking.md +272 -0
- package/docs/guide/configuration.md +139 -0
- package/docs/guide/cost-optimization.md +237 -0
- package/docs/guide/docker.md +371 -0
- package/docs/guide/getting-started.md +150 -0
- package/docs/guide/glossary.md +241 -0
- package/docs/guide/index.md +86 -0
- package/docs/guide/ollama.md +515 -0
- package/docs/guide/prompt-caching.md +221 -0
- package/docs/guide/providers.md +232 -0
- package/docs/guide/quality-control.md +206 -0
- package/docs/guide/vitepress-integration.md +265 -0
- package/docs/index.md +63 -0
- package/docs/ja/api/agent.md +262 -0
- package/docs/ja/api/engine.md +274 -0
- package/docs/ja/api/index.md +171 -0
- package/docs/ja/api/providers.md +304 -0
- package/docs/ja/changelog.md +64 -0
- package/docs/ja/cli/dir.md +243 -0
- package/docs/ja/cli/file.md +213 -0
- package/docs/ja/cli/glossary.md +273 -0
- package/docs/ja/cli/index.md +111 -0
- package/docs/ja/cli/init.md +158 -0
- package/docs/ja/guide/chunking.md +271 -0
- package/docs/ja/guide/configuration.md +139 -0
- package/docs/ja/guide/cost-optimization.md +30 -0
- package/docs/ja/guide/getting-started.md +150 -0
- package/docs/ja/guide/glossary.md +214 -0
- package/docs/ja/guide/index.md +32 -0
- package/docs/ja/guide/ollama.md +410 -0
- package/docs/ja/guide/prompt-caching.md +221 -0
- package/docs/ja/guide/providers.md +232 -0
- package/docs/ja/guide/quality-control.md +137 -0
- package/docs/ja/guide/vitepress-integration.md +265 -0
- package/docs/ja/index.md +58 -0
- package/docs/ko/api/agent.md +262 -0
- package/docs/ko/api/engine.md +274 -0
- package/docs/ko/api/index.md +171 -0
- package/docs/ko/api/providers.md +304 -0
- package/docs/ko/changelog.md +64 -0
- package/docs/ko/cli/dir.md +243 -0
- package/docs/ko/cli/file.md +213 -0
- package/docs/ko/cli/glossary.md +273 -0
- package/docs/ko/cli/index.md +111 -0
- package/docs/ko/cli/init.md +158 -0
- package/docs/ko/guide/chunking.md +271 -0
- package/docs/ko/guide/configuration.md +139 -0
- package/docs/ko/guide/cost-optimization.md +30 -0
- package/docs/ko/guide/getting-started.md +150 -0
- package/docs/ko/guide/glossary.md +214 -0
- package/docs/ko/guide/index.md +32 -0
- package/docs/ko/guide/ollama.md +410 -0
- package/docs/ko/guide/prompt-caching.md +221 -0
- package/docs/ko/guide/providers.md +232 -0
- package/docs/ko/guide/quality-control.md +137 -0
- package/docs/ko/guide/vitepress-integration.md +265 -0
- package/docs/ko/index.md +58 -0
- package/docs/zh/api/agent.md +262 -0
- package/docs/zh/api/engine.md +274 -0
- package/docs/zh/api/index.md +171 -0
- package/docs/zh/api/providers.md +304 -0
- package/docs/zh/changelog.md +64 -0
- package/docs/zh/cli/dir.md +243 -0
- package/docs/zh/cli/file.md +213 -0
- package/docs/zh/cli/glossary.md +273 -0
- package/docs/zh/cli/index.md +111 -0
- package/docs/zh/cli/init.md +158 -0
- package/docs/zh/guide/chunking.md +271 -0
- package/docs/zh/guide/configuration.md +139 -0
- package/docs/zh/guide/cost-optimization.md +30 -0
- package/docs/zh/guide/getting-started.md +150 -0
- package/docs/zh/guide/glossary.md +214 -0
- package/docs/zh/guide/index.md +32 -0
- package/docs/zh/guide/ollama.md +410 -0
- package/docs/zh/guide/prompt-caching.md +221 -0
- package/docs/zh/guide/providers.md +232 -0
- package/docs/zh/guide/quality-control.md +137 -0
- package/docs/zh/guide/vitepress-integration.md +265 -0
- package/docs/zh/index.md +58 -0
- package/package.json +91 -0
- package/release.config.mjs +15 -0
- package/schemas/glossary.schema.json +110 -0
- package/src/cli/commands/dir.ts +469 -0
- package/src/cli/commands/file.ts +291 -0
- package/src/cli/commands/glossary.ts +221 -0
- package/src/cli/commands/init.ts +68 -0
- package/src/cli/commands/serve.ts +60 -0
- package/src/cli/index.ts +64 -0
- package/src/cli/options.ts +59 -0
- package/src/core/agent.ts +1119 -0
- package/src/core/chunker.ts +391 -0
- package/src/core/engine.ts +634 -0
- package/src/errors.ts +188 -0
- package/src/index.ts +147 -0
- package/src/integrations/vitepress.ts +549 -0
- package/src/parsers/markdown.ts +383 -0
- package/src/providers/claude.ts +259 -0
- package/src/providers/interface.ts +109 -0
- package/src/providers/ollama.ts +379 -0
- package/src/providers/openai.ts +308 -0
- package/src/providers/registry.ts +153 -0
- package/src/server/index.ts +152 -0
- package/src/server/middleware/auth.ts +93 -0
- package/src/server/middleware/logger.ts +90 -0
- package/src/server/routes/health.ts +84 -0
- package/src/server/routes/translate.ts +210 -0
- package/src/server/types.ts +138 -0
- package/src/services/cache.ts +899 -0
- package/src/services/config.ts +217 -0
- package/src/services/glossary.ts +247 -0
- package/src/types/analysis.ts +164 -0
- package/src/types/index.ts +265 -0
- package/src/types/modes.ts +121 -0
- package/src/types/mqm.ts +157 -0
- package/src/utils/logger.ts +141 -0
- package/src/utils/tokens.ts +116 -0
- package/tests/fixtures/glossaries/ml-glossary.json +53 -0
- package/tests/fixtures/input/lynq-installation.ko.md +350 -0
- package/tests/fixtures/input/lynq-installation.md +350 -0
- package/tests/fixtures/input/simple.ko.md +27 -0
- package/tests/fixtures/input/simple.md +27 -0
- package/tests/unit/chunker.test.ts +229 -0
- package/tests/unit/glossary.test.ts +146 -0
- package/tests/unit/markdown.test.ts +205 -0
- package/tests/unit/tokens.test.ts +81 -0
- package/tsconfig.json +28 -0
- package/tsup.config.ts +34 -0
- package/vitest.config.ts +16 -0
package/docs/cli/file.md
ADDED
|
@@ -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.
|