translomatic-cli 1.0.0 → 1.1.0

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 CHANGED
@@ -51,12 +51,13 @@ translomatic init --force # Overwrite existing config
51
51
  Translates all missing strings in your project. Only translates new/changed strings by default — existing translations are preserved.
52
52
 
53
53
  ```bash
54
- translomatic translate # Translate all missing strings
55
- translomatic translate --force # Re-translate everything
56
- translomatic translate -l vi,ja # Only translate specific languages
57
- translomatic translate -n common # Only translate specific namespaces
58
- translomatic translate --dry-run # Preview without changes
59
- translomatic translate -v # Verbose output
54
+ translomatic translate # Translate all missing strings
55
+ translomatic translate --force # Re-translate everything
56
+ translomatic translate -m transloai-pro # Use a specific model
57
+ translomatic translate -l vi,ja # Only translate specific languages
58
+ translomatic translate -n common # Only translate specific namespaces
59
+ translomatic translate --dry-run # Preview without changes
60
+ translomatic translate -v # Verbose output
60
61
  ```
61
62
 
62
63
  **Features:**
@@ -66,6 +67,36 @@ translomatic translate -v # Verbose output
66
67
  - Context-aware translation using AI models
67
68
  - Per-language glossary support
68
69
 
70
+ ### `translomatic models`
71
+
72
+ Lists all available translation models with speed, quality, and feature information.
73
+
74
+ ```bash
75
+ translomatic models # List all models
76
+ translomatic models -v # Include plan tier details
77
+ ```
78
+
79
+ **Example output:**
80
+ ```
81
+ TransloFlash — Fast Translation
82
+
83
+ Model ID Speed Quality Tier Features
84
+ ───────────────────────────────────────────────────────────────────────
85
+ transloflash-lite ⚡ fastest ☆ good free translation
86
+ transloflash ⚡ fast ☆ high pro translation
87
+ translomax ◆ moderate ★ very high pro translation
88
+
89
+ TransloAI — AI-Powered Context-Aware
90
+
91
+ Model ID Speed Quality Tier Features
92
+ ───────────────────────────────────────────────────────────────────────
93
+ transloai-nano ⚡ fast ☆ good business translation, context, glossary
94
+ transloai-lite ⚡ fast ☆ high business translation, context, glossary
95
+ transloai-base ◆ moderate ★ very high business translation, context, glossary
96
+ transloai-pro ◆ moderate ★ excellent enterprise translation, context, glossary
97
+ transloai-ultra ◇ slow ★ best enterprise translation, context, glossary
98
+ ```
99
+
69
100
  ### `translomatic analyze`
70
101
 
71
102
  Uses AI to analyze your source strings and auto-generate:
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `translomatic models` command
3
+ *
4
+ * Lists all available translation models with their capabilities.
5
+ * Helps users choose the best model for their needs.
6
+ */
7
+ export declare function modelsCommand(projectDir: string, options: {
8
+ verbose?: boolean;
9
+ }): Promise<void>;
10
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"AAsBA;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAsHf"}
@@ -0,0 +1,137 @@
1
+ import { loadConfig, resolveApiKey } from "../config.js";
2
+ import { Logger } from "../logger.js";
3
+ import chalk from "chalk";
4
+ /**
5
+ * `translomatic models` command
6
+ *
7
+ * Lists all available translation models with their capabilities.
8
+ * Helps users choose the best model for their needs.
9
+ */
10
+ export async function modelsCommand(projectDir, options) {
11
+ const logger = new Logger(options.verbose);
12
+ logger.banner();
13
+ logger.section("Available Translation Models");
14
+ // Get API key
15
+ let apiKey;
16
+ let baseUrl = "https://api.translomatic.com";
17
+ try {
18
+ const config = await loadConfig(projectDir);
19
+ apiKey = resolveApiKey(config);
20
+ if (config.apiKey)
21
+ apiKey = config.apiKey;
22
+ }
23
+ catch {
24
+ apiKey = process.env.TRANSLOMATIC_API_KEY || "";
25
+ if (!apiKey) {
26
+ logger.error("API key required. Set TRANSLOMATIC_API_KEY or run 'translomatic init' first.");
27
+ process.exit(1);
28
+ }
29
+ }
30
+ try {
31
+ // Direct fetch to /v1/models
32
+ const response = await fetch(`${baseUrl}/v1/models`, {
33
+ headers: { "X-API-Key": apiKey },
34
+ });
35
+ if (!response.ok) {
36
+ throw new Error(`API error: ${response.status} ${response.statusText}`);
37
+ }
38
+ const data = (await response.json());
39
+ const { models, tiers } = data;
40
+ // Group by family
41
+ const families = new Map();
42
+ for (const model of models) {
43
+ const family = model.family;
44
+ if (!families.has(family))
45
+ families.set(family, []);
46
+ families.get(family).push(model);
47
+ }
48
+ for (const [family, familyModels] of families) {
49
+ const familyTitle = family === "transloflash"
50
+ ? "TransloFlash — Fast Translation"
51
+ : "TransloAI — AI-Powered Context-Aware";
52
+ console.log();
53
+ console.log(chalk.bold.cyan(` ${familyTitle}`));
54
+ console.log();
55
+ // Table header
56
+ const idWidth = 22;
57
+ const speedWidth = 12;
58
+ const qualityWidth = 14;
59
+ const tierWidth = 12;
60
+ console.log(chalk.dim(" ") +
61
+ chalk.bold("Model ID".padEnd(idWidth)) +
62
+ chalk.bold("Speed".padEnd(speedWidth)) +
63
+ chalk.bold("Quality".padEnd(qualityWidth)) +
64
+ chalk.bold("Tier".padEnd(tierWidth)) +
65
+ chalk.bold("Features"));
66
+ console.log(chalk.dim(" " + "─".repeat(idWidth + speedWidth + qualityWidth + tierWidth + 28)));
67
+ for (const model of familyModels) {
68
+ const speedIcon = getSpeedIcon(model.speed);
69
+ const qualityIcon = getQualityIcon(model.quality);
70
+ const tierColor = getTierColor(model.tier);
71
+ const features = model.features.join(", ");
72
+ console.log(chalk.dim(" ") +
73
+ chalk.white(model.id.padEnd(idWidth)) +
74
+ `${speedIcon} ${model.speed}`.padEnd(speedWidth + 2) +
75
+ `${qualityIcon} ${model.quality}`.padEnd(qualityWidth + 2) +
76
+ tierColor(model.tier.padEnd(tierWidth)) +
77
+ chalk.dim(features));
78
+ }
79
+ }
80
+ // Plan tiers
81
+ if (options.verbose) {
82
+ logger.section("Plan Tiers → Available Models");
83
+ for (const [tier, modelIds] of Object.entries(tiers)) {
84
+ console.log(chalk.dim(" ") +
85
+ getTierColor(tier)(tier.padEnd(14)) +
86
+ chalk.white(modelIds.join(", ")));
87
+ }
88
+ }
89
+ // Usage hint
90
+ console.log();
91
+ logger.info("Use a model with --model flag:");
92
+ logger.info(" translomatic translate --model transloai-pro");
93
+ logger.info("");
94
+ logger.info("Or set default model in .translomaticrc.json:");
95
+ logger.info(' "model": "transloai-pro"');
96
+ if (models.some((m) => m.context_aware)) {
97
+ logger.info("");
98
+ logger.info(chalk.cyan("Tip: ") +
99
+ "TransloAI models support context + glossary for accurate translations.");
100
+ logger.info(" Run 'translomatic analyze' to auto-configure context.");
101
+ }
102
+ console.log();
103
+ }
104
+ catch (err) {
105
+ logger.error(`Failed to fetch models: ${err.message}`);
106
+ process.exit(1);
107
+ }
108
+ }
109
+ function getSpeedIcon(speed) {
110
+ switch (speed) {
111
+ case "fastest": return chalk.green("⚡");
112
+ case "fast": return chalk.green("⚡");
113
+ case "moderate": return chalk.yellow("◆");
114
+ case "slow": return chalk.red("◇");
115
+ default: return " ";
116
+ }
117
+ }
118
+ function getQualityIcon(quality) {
119
+ switch (quality) {
120
+ case "best": return chalk.green("★");
121
+ case "excellent": return chalk.green("★");
122
+ case "very high": return chalk.cyan("★");
123
+ case "high": return chalk.blue("☆");
124
+ case "good": return chalk.dim("☆");
125
+ default: return " ";
126
+ }
127
+ }
128
+ function getTierColor(tier) {
129
+ switch (tier) {
130
+ case "free": return chalk.green;
131
+ case "pro": return chalk.blue;
132
+ case "business": return chalk.yellow;
133
+ case "enterprise": return chalk.magenta;
134
+ default: return chalk.white;
135
+ }
136
+ }
137
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  */
8
8
  export declare function translateCommand(projectDir: string, options: {
9
9
  force?: boolean;
10
+ model?: string;
10
11
  lang?: string;
11
12
  namespace?: string;
12
13
  dryRun?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/commands/translate.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,OAAO,CAAC,IAAI,CAAC,CAyDf"}
1
+ {"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/commands/translate.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,OAAO,CAAC,IAAI,CAAC,CA8Df"}
@@ -19,7 +19,12 @@ export async function translateCommand(projectDir, options) {
19
19
  ? options.lang.split(",").map((l) => l.trim())
20
20
  : config.targetLangs;
21
21
  logger.info(`Target languages: ${targetLangs.join(", ")}`);
22
- if (config.model) {
22
+ // --model flag overrides config.model
23
+ if (options.model) {
24
+ config.model = options.model;
25
+ logger.info(`Model: ${options.model} (from --model flag)`);
26
+ }
27
+ else if (config.model) {
23
28
  logger.info(`Model: ${config.model}`);
24
29
  }
25
30
  if (config.context) {
@@ -1 +1 @@
1
- {"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/commands/translate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/commands/translate.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,11 +4,12 @@ import { initCommand } from "./commands/init.js";
4
4
  import { translateCommand } from "./commands/translate.js";
5
5
  import { analyzeCommand } from "./commands/analyze.js";
6
6
  import { statusCommand } from "./commands/status.js";
7
+ import { modelsCommand } from "./commands/models.js";
7
8
  const program = new Command();
8
9
  program
9
10
  .name("translomatic")
10
11
  .description("Auto-scan and translate your entire project using Translomatic API")
11
- .version("1.0.0");
12
+ .version("1.1.0");
12
13
  // ─── init ──────────────────────────────────────────────
13
14
  program
14
15
  .command("init")
@@ -22,6 +23,7 @@ program
22
23
  .command("translate")
23
24
  .description("Translate all missing strings in the project")
24
25
  .option("--force", "Re-translate all strings (ignore existing translations)")
26
+ .option("-m, --model <model>", "Translation model to use (e.g. transloai-pro, translomax)")
25
27
  .option("-l, --lang <langs>", "Only translate specific languages (comma-separated)")
26
28
  .option("-n, --namespace <ns>", "Only translate specific namespaces (comma-separated)")
27
29
  .option("--dry-run", "Show what would be translated without making changes")
@@ -29,6 +31,14 @@ program
29
31
  .action(async (options) => {
30
32
  await translateCommand(process.cwd(), options);
31
33
  });
34
+ // ─── models ────────────────────────────────────────────
35
+ program
36
+ .command("models")
37
+ .description("List all available translation models")
38
+ .option("-v, --verbose", "Show plan tier details")
39
+ .action(async (options) => {
40
+ await modelsCommand(process.cwd(), options);
41
+ });
32
42
  // ─── analyze ───────────────────────────────────────────
33
43
  program
34
44
  .command("analyze")
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CAAC,oEAAoE,CAAC;KACjF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,0DAA0D;AAE1D,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEL,0DAA0D;AAE1D,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,SAAS,EAAE,yDAAyD,CAAC;KAC5E,MAAM,CAAC,oBAAoB,EAAE,qDAAqD,CAAC;KACnF,MAAM,CAAC,sBAAsB,EAAE,sDAAsD,CAAC;KACtF,MAAM,CAAC,WAAW,EAAE,sDAAsD,CAAC;KAC3E,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEL,0DAA0D;AAE1D,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEL,0DAA0D;AAE1D,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,eAAe,EAAE,8BAA8B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEL,0DAA0D;AAE1D,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CAAC,oEAAoE,CAAC;KACjF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,0DAA0D;AAE1D,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEL,0DAA0D;AAE1D,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,SAAS,EAAE,yDAAyD,CAAC;KAC5E,MAAM,CAAC,qBAAqB,EAAE,2DAA2D,CAAC;KAC1F,MAAM,CAAC,oBAAoB,EAAE,qDAAqD,CAAC;KACnF,MAAM,CAAC,sBAAsB,EAAE,sDAAsD,CAAC;KACtF,MAAM,CAAC,WAAW,EAAE,sDAAsD,CAAC;KAC3E,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEL,0DAA0D;AAE1D,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEL,0DAA0D;AAE1D,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEL,0DAA0D;AAE1D,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,eAAe,EAAE,8BAA8B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEL,0DAA0D;AAE1D,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "translomatic-cli",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "CLI tool to auto-scan and translate entire projects using Translomatic API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",