@mariokreitz/langsync 0.7.0 → 0.7.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/README.md +17 -9
- package/dist/cli.js +3 -3
- package/package.json +13 -9
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @mariokreitz/langsync
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> CLI tooling for localization workflows in TypeScript projects.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@mariokreitz/langsync)
|
|
6
6
|
[](https://github.com/mariokreitz/langsync/actions/workflows/ci.yml)
|
|
@@ -8,14 +8,16 @@
|
|
|
8
8
|
[](https://nodejs.org)
|
|
9
9
|
[](https://github.com/mariokreitz/langsync/blob/main/LICENSE)
|
|
10
10
|
|
|
11
|
-
LangSync is a
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
LangSync is a practical CLI for localization maintenance: validate locale
|
|
12
|
+
structure, sync missing keys, translate empty values, and run Excel handoffs
|
|
13
|
+
without changing your existing JSON-based i18n setup.
|
|
14
14
|
|
|
15
|
-
- **
|
|
16
|
-
- **Bidirectional Excel I/O** for non-technical translators.
|
|
15
|
+
- **Translation sync** with missing-key detection across locales and namespaces.
|
|
17
16
|
- **Strict validation** with CI-friendly exit codes and JSON output.
|
|
18
17
|
- **Auto-detected integrations** for `i18next`, `ngx-translate`, `react-intl`.
|
|
18
|
+
- **AI translation adapters**: OpenAI and DeepL are released; Anthropic and Gemini are experimental (`LANGSYNC_AI_EXPERIMENTAL=1`).
|
|
19
|
+
- **Optional Excel round-trip** for translator collaboration when needed.
|
|
20
|
+
- **Typed configuration** with `defineConfig()` and IntelliSense.
|
|
19
21
|
- **Interactive setup** that scaffolds your config and single-file or namespaced locale files.
|
|
20
22
|
|
|
21
23
|
## Install
|
|
@@ -46,13 +48,13 @@ npx langsync validate
|
|
|
46
48
|
# 3. Add missing keys (empty placeholders) to non-reference locales
|
|
47
49
|
npx langsync sync
|
|
48
50
|
|
|
49
|
-
# 4. Optionally fill the gaps with AI
|
|
51
|
+
# 4. Optionally fill the gaps with AI (OpenAI/DeepL)
|
|
50
52
|
npx langsync translate
|
|
51
53
|
|
|
52
|
-
# 5.
|
|
54
|
+
# 5. Optionally hand off to translators via Excel
|
|
53
55
|
npx langsync export excel
|
|
54
56
|
|
|
55
|
-
# 6.
|
|
57
|
+
# 6. Optionally import their work back
|
|
56
58
|
npx langsync import excel
|
|
57
59
|
```
|
|
58
60
|
|
|
@@ -119,6 +121,12 @@ npm install @mariokreitz/langsync-sdk
|
|
|
119
121
|
See the [SDK reference](https://docs.langsync.kreitz-webdev.de/docs/sdk) for the
|
|
120
122
|
full surface, options, and result types.
|
|
121
123
|
|
|
124
|
+
## Migration from i18n-excel-manager
|
|
125
|
+
|
|
126
|
+
For migration steps and command mapping, use the dedicated guide:
|
|
127
|
+
|
|
128
|
+
- [Migration from i18n-excel-manager](https://docs.langsync.kreitz-webdev.de/docs/migration-from-i18n-excel-manager)
|
|
129
|
+
|
|
122
130
|
## Documentation
|
|
123
131
|
|
|
124
132
|
Full documentation — configuration reference, every CLI command, the VS Code
|
package/dist/cli.js
CHANGED
|
@@ -26,7 +26,7 @@ var logger = {
|
|
|
26
26
|
};
|
|
27
27
|
function printBanner(version) {
|
|
28
28
|
const title = chalk.bold.cyan("LangSync");
|
|
29
|
-
const tagline = chalk.gray("
|
|
29
|
+
const tagline = chalk.gray("CLI tooling for localization workflows.");
|
|
30
30
|
const ver = chalk.dim(`v${version}`);
|
|
31
31
|
console.log(`
|
|
32
32
|
${title} ${ver}
|
|
@@ -1206,11 +1206,11 @@ function registerWatchCommand(program) {
|
|
|
1206
1206
|
}
|
|
1207
1207
|
|
|
1208
1208
|
// src/cli.ts
|
|
1209
|
-
var VERSION = "0.7.
|
|
1209
|
+
var VERSION = "0.7.1" ;
|
|
1210
1210
|
async function main() {
|
|
1211
1211
|
assertNodeVersion(22);
|
|
1212
1212
|
const program = new Command();
|
|
1213
|
-
program.name("langsync").description("
|
|
1213
|
+
program.name("langsync").description("CLI tooling for localization workflows in TypeScript projects.").version(VERSION, "-v, --version", "Output the current version.").hook("preAction", () => {
|
|
1214
1214
|
printBanner(VERSION);
|
|
1215
1215
|
});
|
|
1216
1216
|
registerInitCommand(program);
|
package/package.json
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mariokreitz/langsync",
|
|
3
|
-
"version": "0.7.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.7.1",
|
|
4
|
+
"description": "CLI tooling for localization workflows in TypeScript projects.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"i18n",
|
|
7
7
|
"localization",
|
|
8
|
+
"sync",
|
|
8
9
|
"translation",
|
|
9
|
-
"excel",
|
|
10
10
|
"cli",
|
|
11
|
+
"json",
|
|
12
|
+
"missing-keys",
|
|
13
|
+
"workflow",
|
|
14
|
+
"developer-tools",
|
|
15
|
+
"ai-translation",
|
|
16
|
+
"typescript",
|
|
17
|
+
"framework-agnostic",
|
|
11
18
|
"i18next",
|
|
12
19
|
"ngx-translate",
|
|
13
|
-
"react-intl"
|
|
14
|
-
"ai-translation",
|
|
15
|
-
"openai",
|
|
16
|
-
"watch-mode"
|
|
20
|
+
"react-intl"
|
|
17
21
|
],
|
|
18
22
|
"license": "MIT",
|
|
19
23
|
"author": "Mario Kreitz",
|
|
@@ -66,10 +70,10 @@
|
|
|
66
70
|
"devDependencies": {
|
|
67
71
|
"@types/prompts": "^2.4.9",
|
|
68
72
|
"memfs": "^4.57.3",
|
|
69
|
-
"@langsync/shared": "0.2.2",
|
|
70
73
|
"@langsync/core": "0.1.3",
|
|
71
74
|
"@langsync/ai-engine": "0.2.2",
|
|
72
|
-
"@langsync/excel-engine": "0.2.1"
|
|
75
|
+
"@langsync/excel-engine": "0.2.1",
|
|
76
|
+
"@langsync/shared": "0.2.2"
|
|
73
77
|
},
|
|
74
78
|
"scripts": {
|
|
75
79
|
"build": "tsup",
|