ai-i18n-tools 1.7.1 → 1.7.2

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 (141) hide show
  1. package/README.md +16 -2
  2. package/dist/api/llm-client.d.ts +26 -5
  3. package/dist/api/llm-client.d.ts.map +1 -1
  4. package/dist/api/llm-client.js +146 -33
  5. package/dist/api/llm-client.js.map +1 -1
  6. package/dist/build-info.generated.d.ts +1 -1
  7. package/dist/build-info.generated.js +1 -1
  8. package/dist/cli/check-markdown.d.ts.map +1 -1
  9. package/dist/cli/check-markdown.js +3 -2
  10. package/dist/cli/check-markdown.js.map +1 -1
  11. package/dist/cli/check-models.d.ts.map +1 -1
  12. package/dist/cli/check-models.js +15 -10
  13. package/dist/cli/check-models.js.map +1 -1
  14. package/dist/cli/clean-temp.d.ts.map +1 -1
  15. package/dist/cli/clean-temp.js +11 -7
  16. package/dist/cli/clean-temp.js.map +1 -1
  17. package/dist/cli/doc-translate-quality-retry.d.ts.map +1 -1
  18. package/dist/cli/doc-translate-quality-retry.js +15 -4
  19. package/dist/cli/doc-translate-quality-retry.js.map +1 -1
  20. package/dist/cli/doc-translate.d.ts.map +1 -1
  21. package/dist/cli/doc-translate.js +219 -71
  22. package/dist/cli/doc-translate.js.map +1 -1
  23. package/dist/cli/export-ui-xliff.d.ts.map +1 -1
  24. package/dist/cli/export-ui-xliff.js +10 -6
  25. package/dist/cli/export-ui-xliff.js.map +1 -1
  26. package/dist/cli/extract-strings.d.ts.map +1 -1
  27. package/dist/cli/extract-strings.js +55 -14
  28. package/dist/cli/extract-strings.js.map +1 -1
  29. package/dist/cli/format.d.ts +4 -5
  30. package/dist/cli/format.d.ts.map +1 -1
  31. package/dist/cli/format.js +9 -8
  32. package/dist/cli/format.js.map +1 -1
  33. package/dist/cli/generate-ui-languages.d.ts.map +1 -1
  34. package/dist/cli/generate-ui-languages.js +2 -1
  35. package/dist/cli/generate-ui-languages.js.map +1 -1
  36. package/dist/cli/helpers.d.ts.map +1 -1
  37. package/dist/cli/helpers.js +4 -0
  38. package/dist/cli/helpers.js.map +1 -1
  39. package/dist/cli/index.js +477 -327
  40. package/dist/cli/index.js.map +1 -1
  41. package/dist/cli/lint-source.d.ts.map +1 -1
  42. package/dist/cli/lint-source.js +74 -24
  43. package/dist/cli/lint-source.js.map +1 -1
  44. package/dist/cli/list-languages.d.ts.map +1 -1
  45. package/dist/cli/list-languages.js +38 -16
  46. package/dist/cli/list-languages.js.map +1 -1
  47. package/dist/cli/list-models.d.ts.map +1 -1
  48. package/dist/cli/list-models.js +12 -8
  49. package/dist/cli/list-models.js.map +1 -1
  50. package/dist/cli/mark-html.d.ts +31 -0
  51. package/dist/cli/mark-html.d.ts.map +1 -0
  52. package/dist/cli/mark-html.js +68 -0
  53. package/dist/cli/mark-html.js.map +1 -0
  54. package/dist/cli/openrouter-catalog-model-filter.d.ts.map +1 -1
  55. package/dist/cli/openrouter-catalog-model-filter.js +7 -3
  56. package/dist/cli/openrouter-catalog-model-filter.js.map +1 -1
  57. package/dist/cli/translate-json-run.d.ts.map +1 -1
  58. package/dist/cli/translate-json-run.js +29 -12
  59. package/dist/cli/translate-json-run.js.map +1 -1
  60. package/dist/cli/translate-svg.d.ts.map +1 -1
  61. package/dist/cli/translate-svg.js +43 -26
  62. package/dist/cli/translate-svg.js.map +1 -1
  63. package/dist/cli/translate-ui-strings.d.ts.map +1 -1
  64. package/dist/cli/translate-ui-strings.js +119 -40
  65. package/dist/cli/translate-ui-strings.js.map +1 -1
  66. package/dist/cli/write-heading-ids.d.ts.map +1 -1
  67. package/dist/cli/write-heading-ids.js +17 -8
  68. package/dist/cli/write-heading-ids.js.map +1 -1
  69. package/dist/core/config.d.ts +2 -2
  70. package/dist/core/config.d.ts.map +1 -1
  71. package/dist/core/config.js +2 -2
  72. package/dist/core/config.js.map +1 -1
  73. package/dist/core/han-variant-data.d.ts +36 -0
  74. package/dist/core/han-variant-data.d.ts.map +1 -0
  75. package/dist/core/han-variant-data.js +50 -0
  76. package/dist/core/han-variant-data.js.map +1 -0
  77. package/dist/core/locale-utils.d.ts +75 -1
  78. package/dist/core/locale-utils.d.ts.map +1 -1
  79. package/dist/core/locale-utils.js +191 -1
  80. package/dist/core/locale-utils.js.map +1 -1
  81. package/dist/core/prompt-builder.d.ts.map +1 -1
  82. package/dist/core/prompt-builder.js +8 -1
  83. package/dist/core/prompt-builder.js.map +1 -1
  84. package/dist/core/prompts.d.ts +4 -0
  85. package/dist/core/prompts.d.ts.map +1 -1
  86. package/dist/core/prompts.js +2 -0
  87. package/dist/core/prompts.js.map +1 -1
  88. package/dist/core/types.d.ts +9 -0
  89. package/dist/core/types.d.ts.map +1 -1
  90. package/dist/core/types.js +13 -0
  91. package/dist/core/types.js.map +1 -1
  92. package/dist/core/ui-languages-catalog.d.ts.map +1 -1
  93. package/dist/core/ui-languages-catalog.js +38 -18
  94. package/dist/core/ui-languages-catalog.js.map +1 -1
  95. package/dist/core/ui-locale.d.ts +37 -0
  96. package/dist/core/ui-locale.d.ts.map +1 -0
  97. package/dist/core/ui-locale.js +78 -0
  98. package/dist/core/ui-locale.js.map +1 -0
  99. package/dist/dashboard-app/app.js +348 -151
  100. package/dist/dashboard-app/index.html +182 -181
  101. package/dist/extractors/html-i18n-marks.d.ts +48 -0
  102. package/dist/extractors/html-i18n-marks.d.ts.map +1 -0
  103. package/dist/extractors/html-i18n-marks.js +351 -0
  104. package/dist/extractors/html-i18n-marks.js.map +1 -0
  105. package/dist/extractors/ui-string-babel.d.ts.map +1 -1
  106. package/dist/extractors/ui-string-babel.js +11 -3
  107. package/dist/extractors/ui-string-babel.js.map +1 -1
  108. package/dist/i18n/index.d.ts +59 -0
  109. package/dist/i18n/index.d.ts.map +1 -0
  110. package/dist/i18n/index.js +186 -0
  111. package/dist/i18n/index.js.map +1 -0
  112. package/dist/i18n/locales/de.json +610 -0
  113. package/dist/i18n/locales/es.json +610 -0
  114. package/dist/i18n/locales/fr.json +610 -0
  115. package/dist/i18n/locales/hi-Latn.json +610 -0
  116. package/dist/i18n/locales/ja.json +610 -0
  117. package/dist/i18n/locales/ko.json +610 -0
  118. package/dist/i18n/locales/pt-BR.json +610 -0
  119. package/dist/i18n/locales/ui-languages.json +63 -0
  120. package/dist/i18n/locales/zh-Hans.json +610 -0
  121. package/dist/i18n/locales/zh-Hant.json +610 -0
  122. package/dist/index.d.ts +2 -1
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +2 -1
  125. package/dist/index.js.map +1 -1
  126. package/dist/server/translation-dashboard.d.ts +10 -0
  127. package/dist/server/translation-dashboard.d.ts.map +1 -1
  128. package/dist/server/translation-dashboard.js +4 -0
  129. package/dist/server/translation-dashboard.js.map +1 -1
  130. package/dist/utils/load-dotenv.d.ts +10 -0
  131. package/dist/utils/load-dotenv.d.ts.map +1 -0
  132. package/dist/utils/load-dotenv.js +27 -0
  133. package/dist/utils/load-dotenv.js.map +1 -0
  134. package/dist/utils/table.d.ts +27 -0
  135. package/dist/utils/table.d.ts.map +1 -0
  136. package/dist/utils/table.js +96 -0
  137. package/dist/utils/table.js.map +1 -0
  138. package/docs/GETTING_STARTED.md +101 -1
  139. package/docs/PACKAGE_OVERVIEW.md +13 -2
  140. package/docs/ai-i18n-tools-context.md +1 -0
  141. package/package.json +6 -5
package/README.md CHANGED
@@ -123,7 +123,7 @@ export OPENROUTER_API_KEY=sk-or-v1-your-key-here
123
123
  <a id="openrouter"></a>
124
124
  ## LLM providers
125
125
 
126
- Translation commands (`translate-ui`, `translate-docs`, `translate-json`, `sync`, `check-models`, and related scripts) call an LLM provider; `check-markdown` does not.
126
+ Translation commands (`translate-ui`, `translate-docs`, `translate-json`, `sync`, `check-models`, and related scripts) call an LLM provider; `check-markdown`, `mark-html`, and `extract` do not.
127
127
 
128
128
  Configure providers under a top-level `providers` map and pick the active one with a top-level `provider` selector (optional when exactly one provider is configured). Most providers need only a `translationModels` list — `baseUrl` and the API-key environment variable come from a built-in preset; you can override `baseUrl`, `apiKeyEnv`, `headers`, `maxTokens`, `temperature`, and `requestTimeoutMs` per provider. `requestTimeoutMs` is the maximum time in milliseconds to wait for each request (default `30000`).
129
129
 
@@ -270,6 +270,7 @@ ai-i18n-tools list-models
270
270
  ai-i18n-tools list-languages [search]
271
271
  ai-i18n-tools init [-t ui-markdown|ui-docusaurus|ui-starlight|ui-astro-website|ui-json-bundles] [-o path] [--with-translate-ignore]
272
272
  ai-i18n-tools write-heading-ids …
273
+ ai-i18n-tools mark-html [paths...] [--write]
273
274
  ai-i18n-tools extract
274
275
  ai-i18n-tools translate-docs …
275
276
  ai-i18n-tools translate-json …
@@ -291,9 +292,22 @@ ai-i18n-tools help [command]
291
292
  ```
292
293
 
293
294
 
295
+ For plain HTML apps, annotate elements with bare `data-i18n` / `data-i18n-title` / `data-i18n-placeholder` markers (the source text is taken from the element's own textContent / title / placeholder, written once); `mark-html` inserts them for you and `extract` then captures them into `strings.json`. See [Getting Started — Marking HTML for translation](docs/GETTING_STARTED.md#marking-html-for-translation).
296
+
294
297
  Complete per-command flag lists are in [Getting Started — CLI reference](docs/GETTING_STARTED.md#cli-reference). Run `ai-i18n-tools <command> --help` for built-in usage text.
295
298
 
296
- Global options on every command: `-c <config>` (default: `ai-i18n-tools.config.json`), `-v` (verbose), `-P` / `--provider <name>` (override the active LLM provider; must be configured under `providers`), optional `-w` / `--write-logs [path]` to tee console output to a log file (default: under the translation cache directory), `-V` / `--version`, and `-h` / `--help`. Several commands accept `-l` / `--locale <codes>` (comma-separated BCP-47) to limit target locales; `lint-source` uses a single source locale. See [Getting Started](docs/GETTING_STARTED.md#cli-reference) for the command overview table.
299
+ Global options on every command: `-c <config>` (default: `ai-i18n-tools.config.json`), `-v` (verbose), `-P` / `--provider <name>` (override the active LLM provider; must be configured under `providers`), `-L` / `--ui-lang <code>` (language for the tool's own UI/logs), optional `-w` / `--write-logs [path]` to tee console output to a log file (default: under the translation cache directory), `-V` / `--version`, and `-h` / `--help`. Several commands accept `-l` / `--locale <codes>` (comma-separated BCP-47) to limit target locales; `lint-source` uses a single source locale. See [Getting Started](docs/GETTING_STARTED.md#cli-reference) for the command overview table.
300
+
301
+ ### Tool UI language (logs, help, dashboard)
302
+
303
+ The tool localizes its own CLI help, high-traffic log/summary messages, and the Translation Dashboard. The UI locale is resolved from these sources, highest priority first:
304
+
305
+ 1. `-L` / `--ui-lang <code>` global flag (e.g. `-L pt-BR`).
306
+ 2. `AI_I18N_LANG` environment variable (e.g. `export AI_I18N_LANG=es`).
307
+ 3. The `uiLanguage` config key in `ai-i18n-tools.config.json` (BCP-47 string).
308
+ 4. The host OS locale (via `Intl.DateTimeFormat().resolvedOptions().locale`).
309
+
310
+ The requested locale is matched against the shipped UI languages exactly or by closest variation (for example `pt-PT` resolves to `pt-BR`, and `en-US` resolves to `en-GB`); when nothing matches it falls back to the source locale (`en-GB`). This is independent of your project's `sourceLocale` / `targetLocales`. Shipped UI languages: `en-GB` (source) plus `de`, `es`, `fr`, `hi-Latn`, `ja`, `ko`, `pt-BR`, `zh-Hans`, and `zh-Hant`.
297
311
 
298
312
  ---
299
313
 
@@ -11,6 +11,10 @@ export declare class DocumentBatchAllModelsFailedError extends Error {
11
11
  lastError: unknown;
12
12
  /** HTTP response body text when the model returned content but parsing failed. */
13
13
  lastRawAssistantContent?: string;
14
+ /** Tokens spent across billed-but-discarded attempts before every model failed. */
15
+ wastedUsage?: LlmUsageStats;
16
+ /** USD cost spent across billed-but-discarded attempts (undefined when no cost was reported). */
17
+ wastedCost?: number;
14
18
  };
15
19
  constructor(message: string, details: {
16
20
  systemPrompt: string;
@@ -19,6 +23,10 @@ export declare class DocumentBatchAllModelsFailedError extends Error {
19
23
  lastError: unknown;
20
24
  /** HTTP response body text when the model returned content but parsing failed. */
21
25
  lastRawAssistantContent?: string;
26
+ /** Tokens spent across billed-but-discarded attempts before every model failed. */
27
+ wastedUsage?: LlmUsageStats;
28
+ /** USD cost spent across billed-but-discarded attempts (undefined when no cost was reported). */
29
+ wastedCost?: number;
22
30
  });
23
31
  }
24
32
  export interface LlmClientOptions {
@@ -35,6 +43,13 @@ export interface LlmClientOptions {
35
43
  logger?: Logger;
36
44
  httpReferer?: string;
37
45
  xTitle?: string;
46
+ /**
47
+ * Fires once per billed API response (whether the response is later accepted, rejected, or
48
+ * empty) with that call's tokens/cost. Lets callers maintain a live run total that survives
49
+ * interrupts/errors, since the usage is captured the moment the provider responds rather than
50
+ * only when the enclosing batch/file completes. Must be synchronous and must not throw.
51
+ */
52
+ onApiUsage?: (usage: LlmUsageStats, cost: number | undefined) => void;
38
53
  }
39
54
  /** @deprecated Use {@link LlmClientOptions}. */
40
55
  export type OpenRouterClientOptions = LlmClientOptions;
@@ -58,6 +73,7 @@ export declare class LlmClient {
58
73
  private readonly httpReferer;
59
74
  private readonly xTitle;
60
75
  private readonly requestTimeoutMs;
76
+ private readonly onApiUsage?;
61
77
  constructor(opts: LlmClientOptions);
62
78
  private buildProvider;
63
79
  getConfiguredModels(): readonly string[];
@@ -74,17 +90,22 @@ export declare class LlmClient {
74
90
  * Enforce the target locale's ISO 15924 script subtag on a model response, throwing
75
91
  * {@link ScriptValidationError} so the model-fallback loop retries with the next model.
76
92
  *
77
- * For romanized (`*-Latn`) targets any non-Latin letter is rejected (output must be pure Latin).
78
- * For other supported scripts (`Cyrl`, `Arab`, `Deva`, `Mong`, `Han`, …) only letters from a
79
- * *different* non-Latin script are rejected Latin text (code, URLs, brand names, placeholders)
80
- * is always allowed, so this is free of false positives. See {@link disallowedScriptLetters}.
81
- * Locales without a script subtag, and composite scripts (e.g. `Jpan`, `Kore`), are not enforced.
93
+ * Uses a statistical dominant-script check ({@link scriptValidationIssue}): Latin text
94
+ * (code, URLs, brand names, placeholders) and letter-like symbols such as `ℹ` are ignored,
95
+ * a stray foreign-language quote does not fail the output, and `zh-Hans`/`zh-Hant` are told
96
+ * apart via variant-distinct characters. Locales without a script subtag, and composite
97
+ * scripts (e.g. `Jpan`, `Kore`), are not enforced.
82
98
  */
83
99
  private assertExpectedScript;
84
100
  private appendDebugLog;
85
101
  /** Match doc-translate log lines: two-space indent, locale, filename. */
86
102
  private warnModelSwitch;
87
103
  private toOpenRouterMessages;
104
+ private static emptyDiscarded;
105
+ /** Add a billed-but-discarded attempt's tokens/cost onto the running discarded total. */
106
+ private static addDiscarded;
107
+ /** Fold discarded-attempt tokens/cost into the eventually-successful response's totals. */
108
+ private static foldDiscarded;
88
109
  /** Read OpenRouter's exact USD cost from `providerMetadata` (other providers: undefined). */
89
110
  private extractCost;
90
111
  /** Single chat-completions call for one model via the active provider (AI SDK transport). */
@@ -1 +1 @@
1
- {"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../src/api/llm-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../src/api/llm-client.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,iBAAiB,EAEvB,MAAM,kBAAkB,CAAC;AAc1B,OAAO,EAYL,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA2DjD,+FAA+F;AAC/F,qBAAa,iCAAkC,SAAQ,KAAK;aAGxC,OAAO,EAAE;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,kFAAkF;QAClF,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,mFAAmF;QACnF,WAAW,CAAC,EAAE,aAAa,CAAC;QAC5B,iGAAiG;QACjG,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;gBAZD,OAAO,EAAE,MAAM,EACC,OAAO,EAAE;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,kFAAkF;QAClF,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,mFAAmF;QACnF,WAAW,CAAC,EAAE,aAAa,CAAC;QAC5B,iGAAiG;QACjG,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;CAKJ;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,oBAAoB,CAAC,CAAC;IAC3F,2FAA2F;IAC3F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,6CAA6C;IAC7C,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACvE;AAED,gDAAgD;AAChD,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AAEvD;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2B;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAW;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyB;IAC5D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAA2D;gBAE3E,IAAI,EAAE,gBAAgB;IAkDlC,OAAO,CAAC,aAAa;IAuBrB,mBAAmB,IAAI,SAAS,MAAM,EAAE;IAIxC,oFAAoF;IACpF,WAAW,IAAI,MAAM;IAIrB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,cAAc;IActB,yEAAyE;IACzE,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B,yFAAyF;IACzF,OAAO,CAAC,MAAM,CAAC,YAAY;IAa3B,2FAA2F;IAC3F,OAAO,CAAC,MAAM,CAAC,aAAa;IAiB5B,6FAA6F;IAC7F,OAAO,CAAC,WAAW;IAOnB,6FAA6F;YAC/E,eAAe;IA4EvB,IAAI,CACR,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EAC3E,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC;QACzD,kGAAkG;QAClG,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KAC9C,GACA,OAAO,CAAC,YAAY,CAAC;IAqDxB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOrC,wBAAwB,CAC5B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,WAAW,CAAC,EAAE,yBAAyB,CAAC;QACxC,aAAa,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1D,GACA,OAAO,CAAC,iBAAiB,CAAC;IAoCvB,sBAAsB,CAC1B,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAM,EAAO,EAC5B,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,WAAW,CAAC,EAAE,yBAAyB,CAAC;QACxC,cAAc,CAAC,EAAE,2BAA2B,CAAC;QAC7C,oEAAoE;QACpE,aAAa,CAAC,EAAE;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1C,GACA,OAAO,CAAC,sBAAsB,CAAC;IA4IlC;;OAEG;IACG,gBAAgB,CACpB,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC/D,OAAO,CAAC;QACT,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,aAAa,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IA8DF;;OAEG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EAAE,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC/D,OAAO,CAAC;QACT,KAAK,EAAE,oBAAoB,EAAE,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,aAAa,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC;IA2DF;;OAEG;IACG,4BAA4B,CAChC,aAAa,EAAE,cAAc,EAAE,EAC/B,QAAQ,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EACvD,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5D,OAAO,CAAC;QACT,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACtC,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,aAAa,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CAwDH;AAED,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,kBAAY,CAAC;AAC1C,yCAAyC;AACzC,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC"}
@@ -4,7 +4,7 @@ import { generateText } from "ai";
4
4
  import { createOpenAICompatible, } from "@ai-sdk/openai-compatible";
5
5
  import { BatchTranslationError, } from "../core/types.js";
6
6
  import { englishLanguageNameForLocale, normalizeLocale, resolveTranslationModels, } from "../core/config.js";
7
- import { disallowedScriptLetters, englishScriptName, scriptSubtag } from "../core/locale-utils.js";
7
+ import { scriptSubtag, scriptValidationIssue } from "../core/locale-utils.js";
8
8
  import { OPENROUTER_PROVIDER_KEY, resolveActiveProvider, resolveApiKey, resolveProviderSettings, } from "../core/llm-providers.js";
9
9
  import { buildDocumentBatchPrompt, buildDocumentSinglePrompt, buildLintSourcePromptMessages, buildUIPromptMessages, parseBatchJsonArrayResponse, parseBatchJsonObjectResponse, parseBatchTranslationResponse, parseLintSourceBatchResponse, parsePluralFormsJsonResponse, parseUIJsonArrayResponse, ScriptValidationError, } from "../core/prompt-builder.js";
10
10
  /** OpenRouter: prefer throughput; allow backup providers (top-level `provider` routing field). */
@@ -12,6 +12,19 @@ const OPENROUTER_PROVIDER = {
12
12
  sort: "throughput",
13
13
  allow_fallbacks: true,
14
14
  };
15
+ /**
16
+ * Thrown by {@link LlmClient.fetchCompletion} when a provider returns a billed response whose
17
+ * content is empty/unusable, so the model-fallback loop can still account for the spent tokens/cost
18
+ * instead of silently dropping them.
19
+ */
20
+ class BilledCompletionError extends Error {
21
+ constructor(message, usage, cost) {
22
+ super(message);
23
+ this.usage = usage;
24
+ this.cost = cost;
25
+ this.name = "BilledCompletionError";
26
+ }
27
+ }
15
28
  /**
16
29
  * OpenRouter returns `usage.cost` (USD) on non-streaming responses; surface it through
17
30
  * `providerMetadata.openrouter.cost` so the client can report exact spend.
@@ -81,6 +94,7 @@ export class LlmClient {
81
94
  this.sourceLanguageLabel = this.languageLabelForPrompt(opts.config.sourceLocale);
82
95
  this.httpReferer = opts.httpReferer ?? "https://github.com/wsj-br/ai-i18n-tools";
83
96
  this.xTitle = opts.xTitle ?? "ai-i18n-tools";
97
+ this.onApiUsage = opts.onApiUsage;
84
98
  this.providerInstance = this.buildProvider(settings);
85
99
  }
86
100
  buildProvider(settings) {
@@ -133,25 +147,23 @@ export class LlmClient {
133
147
  * Enforce the target locale's ISO 15924 script subtag on a model response, throwing
134
148
  * {@link ScriptValidationError} so the model-fallback loop retries with the next model.
135
149
  *
136
- * For romanized (`*-Latn`) targets any non-Latin letter is rejected (output must be pure Latin).
137
- * For other supported scripts (`Cyrl`, `Arab`, `Deva`, `Mong`, `Han`, …) only letters from a
138
- * *different* non-Latin script are rejected Latin text (code, URLs, brand names, placeholders)
139
- * is always allowed, so this is free of false positives. See {@link disallowedScriptLetters}.
140
- * Locales without a script subtag, and composite scripts (e.g. `Jpan`, `Kore`), are not enforced.
150
+ * Uses a statistical dominant-script check ({@link scriptValidationIssue}): Latin text
151
+ * (code, URLs, brand names, placeholders) and letter-like symbols such as `ℹ` are ignored,
152
+ * a stray foreign-language quote does not fail the output, and `zh-Hans`/`zh-Hant` are told
153
+ * apart via variant-distinct characters. Locales without a script subtag, and composite
154
+ * scripts (e.g. `Jpan`, `Kore`), are not enforced.
141
155
  */
142
156
  assertExpectedScript(text, targetLocale) {
143
157
  const script = scriptSubtag(targetLocale);
144
158
  if (!script) {
145
159
  return;
146
160
  }
147
- const offending = disallowedScriptLetters(text, script, 5);
148
- if (offending.length === 0) {
161
+ const issue = scriptValidationIssue(text, script);
162
+ if (!issue) {
149
163
  return;
150
164
  }
151
- const expected = script === "Latn"
152
- ? "romanized Latin (Roman)"
153
- : `${englishScriptName(script) ?? script} (${script})`;
154
- throw new ScriptValidationError(`Output for ${targetLocale} contains characters outside the expected ${expected} script (${offending.join(" ")})`, text, offending);
165
+ const suffix = issue.sample.length > 0 ? ` (${issue.sample.join(" ")})` : "";
166
+ throw new ScriptValidationError(`Output for ${targetLocale} ${issue.message}${suffix}`, text, issue.sample);
155
167
  }
156
168
  appendDebugLog(direction, payload) {
157
169
  if (!this.debugTrafficFilePath) {
@@ -176,6 +188,30 @@ export class LlmClient {
176
188
  toOpenRouterMessages(messages) {
177
189
  return messages.map((m) => ({ role: m.role, content: m.content }));
178
190
  }
191
+ static emptyDiscarded() {
192
+ return { inputTokens: 0, outputTokens: 0, totalTokens: 0, cost: undefined };
193
+ }
194
+ /** Add a billed-but-discarded attempt's tokens/cost onto the running discarded total. */
195
+ static addDiscarded(acc, usage, cost) {
196
+ acc.inputTokens += usage.inputTokens;
197
+ acc.outputTokens += usage.outputTokens;
198
+ acc.totalTokens += usage.totalTokens;
199
+ if (typeof cost === "number") {
200
+ acc.cost = (acc.cost ?? 0) + cost;
201
+ }
202
+ }
203
+ /** Fold discarded-attempt tokens/cost into the eventually-successful response's totals. */
204
+ static foldDiscarded(usage, cost, discarded) {
205
+ const mergedUsage = {
206
+ inputTokens: usage.inputTokens + discarded.inputTokens,
207
+ outputTokens: usage.outputTokens + discarded.outputTokens,
208
+ totalTokens: usage.totalTokens + discarded.totalTokens,
209
+ };
210
+ const mergedCost = cost === undefined && discarded.cost === undefined
211
+ ? undefined
212
+ : (cost ?? 0) + (discarded.cost ?? 0);
213
+ return { usage: mergedUsage, cost: mergedCost };
214
+ }
179
215
  /** Read OpenRouter's exact USD cost from `providerMetadata` (other providers: undefined). */
180
216
  extractCost(providerMetadata) {
181
217
  const raw = providerMetadata?.[OPENROUTER_PROVIDER_KEY]?.cost;
@@ -228,6 +264,9 @@ export class LlmClient {
228
264
  totalTokens: result.usage.totalTokens ?? 0,
229
265
  };
230
266
  const cost = this.extractCost(result.providerMetadata);
267
+ // Report every billed response immediately so a live run total survives interrupts/errors,
268
+ // even for responses that are later rejected (empty content, parse/script failure) below.
269
+ this.onApiUsage?.(usage, cost);
231
270
  if (this.debugTrafficFilePath) {
232
271
  this.appendDebugLog("response", {
233
272
  model,
@@ -238,7 +277,7 @@ export class LlmClient {
238
277
  });
239
278
  }
240
279
  if (!content || content.trim() === "") {
241
- throw new Error(`Empty response content from ${this.provider} model ${model}`);
280
+ throw new BilledCompletionError(`Empty response content from ${this.provider} model ${model}`, usage, cost);
242
281
  }
243
282
  return { content, model, usage, cost };
244
283
  }
@@ -246,15 +285,10 @@ export class LlmClient {
246
285
  const openRouterMessages = this.toOpenRouterMessages(messages);
247
286
  const start = Math.max(0, Math.floor(options?.startModelIndex ?? 0));
248
287
  let lastError;
288
+ const discarded = LlmClient.emptyDiscarded();
249
289
  for (let mi = start; mi < this.modelsToTry.length; mi++) {
250
290
  const model = this.modelsToTry[mi];
251
- try {
252
- const completion = await this.fetchCompletion(model, openRouterMessages);
253
- options?.validateResponse?.(completion.content);
254
- return completion;
255
- }
256
- catch (e) {
257
- lastError = e;
291
+ const warnFailure = (e) => {
258
292
  const nextModel = this.modelsToTry[mi + 1];
259
293
  if (nextModel && options?.docLogContext) {
260
294
  this.warnModelSwitch(options.docLogContext.locale, options.docLogContext.relativePath, model, nextModel, e);
@@ -262,7 +296,30 @@ export class LlmClient {
262
296
  else if (!options?.docLogContext) {
263
297
  this.logger?.warn(`Model ${model} failed: ${e}`);
264
298
  }
299
+ };
300
+ let completion;
301
+ try {
302
+ completion = await this.fetchCompletion(model, openRouterMessages);
303
+ }
304
+ catch (e) {
305
+ lastError = e;
306
+ if (e instanceof BilledCompletionError) {
307
+ LlmClient.addDiscarded(discarded, e.usage, e.cost);
308
+ }
309
+ warnFailure(e);
310
+ continue;
265
311
  }
312
+ try {
313
+ options?.validateResponse?.(completion.content);
314
+ }
315
+ catch (e) {
316
+ lastError = e;
317
+ LlmClient.addDiscarded(discarded, completion.usage, completion.cost);
318
+ warnFailure(e);
319
+ continue;
320
+ }
321
+ const folded = LlmClient.foldDiscarded(completion.usage, completion.cost, discarded);
322
+ return { ...completion, usage: folded.usage, cost: folded.cost };
266
323
  }
267
324
  throw new Error(`All translation models failed (${this.modelsToTry.slice(start).join(", ")}). Last error: ${lastError}`);
268
325
  }
@@ -319,6 +376,7 @@ export class LlmClient {
319
376
  ]);
320
377
  const start = Math.max(0, Math.floor(options?.startModelIndex ?? 0));
321
378
  let lastError;
379
+ const discarded = LlmClient.emptyDiscarded();
322
380
  let lastFailureDetails;
323
381
  for (let mi = start; mi < this.modelsToTry.length; mi++) {
324
382
  const model = this.modelsToTry[mi];
@@ -328,6 +386,9 @@ export class LlmClient {
328
386
  }
329
387
  catch (e) {
330
388
  lastError = e;
389
+ if (e instanceof BilledCompletionError) {
390
+ LlmClient.addDiscarded(discarded, e.usage, e.cost);
391
+ }
331
392
  lastFailureDetails = {
332
393
  systemPrompt,
333
394
  userContent,
@@ -363,17 +424,19 @@ export class LlmClient {
363
424
  for (const value of translations.values()) {
364
425
  this.assertExpectedScript(value, locale);
365
426
  }
427
+ const folded = LlmClient.foldDiscarded(completion.usage, completion.cost, discarded);
366
428
  return {
367
429
  translations,
368
430
  model: completion.model,
369
- usage: completion.usage,
370
- cost: completion.cost,
431
+ usage: folded.usage,
432
+ cost: folded.cost,
371
433
  debugPrompt: { systemPrompt, userContent },
372
434
  rawAssistantContent: completion.content,
373
435
  };
374
436
  }
375
437
  catch (e) {
376
438
  lastError = e;
439
+ LlmClient.addDiscarded(discarded, completion.usage, completion.cost);
377
440
  lastFailureDetails = {
378
441
  systemPrompt,
379
442
  userContent,
@@ -396,7 +459,7 @@ export class LlmClient {
396
459
  }
397
460
  }
398
461
  const msg = `All translation models failed for batch (${this.modelsToTry.slice(start).join(", ")}). Last error: ${lastError instanceof Error ? lastError.message : String(lastError)}`;
399
- const details = lastFailureDetails ??
462
+ const baseDetails = lastFailureDetails ??
400
463
  {
401
464
  systemPrompt,
402
465
  userContent,
@@ -404,7 +467,15 @@ export class LlmClient {
404
467
  lastError,
405
468
  lastRawAssistantContent: undefined,
406
469
  };
407
- throw new DocumentBatchAllModelsFailedError(msg, details);
470
+ throw new DocumentBatchAllModelsFailedError(msg, {
471
+ ...baseDetails,
472
+ wastedUsage: {
473
+ inputTokens: discarded.inputTokens,
474
+ outputTokens: discarded.outputTokens,
475
+ totalTokens: discarded.totalTokens,
476
+ },
477
+ ...(discarded.cost !== undefined ? { wastedCost: discarded.cost } : {}),
478
+ });
408
479
  }
409
480
  /**
410
481
  * UI strings: translate a batch of strings and return a JSON array response, with model fallback chain.
@@ -429,23 +500,37 @@ export class LlmClient {
429
500
  ]);
430
501
  const start = Math.max(0, Math.floor(options?.startModelIndex ?? 0));
431
502
  let lastError;
503
+ const discarded = LlmClient.emptyDiscarded();
432
504
  for (let mi = start; mi < this.modelsToTry.length; mi++) {
433
505
  const model = this.modelsToTry[mi];
506
+ let result;
507
+ try {
508
+ result = await this.fetchCompletion(model, openRouterMessages);
509
+ }
510
+ catch (e) {
511
+ lastError = e;
512
+ if (e instanceof BilledCompletionError) {
513
+ LlmClient.addDiscarded(discarded, e.usage, e.cost);
514
+ }
515
+ this.logger?.warn(`UI batch failed with ${model}: ${e}`);
516
+ continue;
517
+ }
434
518
  try {
435
- const result = await this.fetchCompletion(model, openRouterMessages);
436
519
  const translations = parseUIJsonArrayResponse(result.content, texts.length);
437
520
  for (const value of translations) {
438
521
  this.assertExpectedScript(value, targetLocale);
439
522
  }
523
+ const folded = LlmClient.foldDiscarded(result.usage, result.cost, discarded);
440
524
  return {
441
525
  translations,
442
526
  model: result.model,
443
- usage: result.usage,
444
- cost: result.cost,
527
+ usage: folded.usage,
528
+ cost: folded.cost,
445
529
  };
446
530
  }
447
531
  catch (e) {
448
532
  lastError = e;
533
+ LlmClient.addDiscarded(discarded, result.usage, result.cost);
449
534
  this.logger?.warn(`UI batch failed with ${model}: ${e}`);
450
535
  }
451
536
  }
@@ -473,21 +558,35 @@ export class LlmClient {
473
558
  ]);
474
559
  const start = Math.max(0, Math.floor(options?.startModelIndex ?? 0));
475
560
  let lastError;
561
+ const discarded = LlmClient.emptyDiscarded();
476
562
  for (let mi = start; mi < this.modelsToTry.length; mi++) {
477
563
  const model = this.modelsToTry[mi];
564
+ let result;
565
+ try {
566
+ result = await this.fetchCompletion(model, openRouterMessages);
567
+ }
568
+ catch (e) {
569
+ lastError = e;
570
+ if (e instanceof BilledCompletionError) {
571
+ LlmClient.addDiscarded(discarded, e.usage, e.cost);
572
+ }
573
+ this.logger?.warn(`lint-source batch failed with ${model}: ${e}`);
574
+ continue;
575
+ }
478
576
  try {
479
- const result = await this.fetchCompletion(model, openRouterMessages);
480
577
  const { slots, lengthWarning } = parseLintSourceBatchResponse(result.content, texts.length);
578
+ const folded = LlmClient.foldDiscarded(result.usage, result.cost, discarded);
481
579
  return {
482
580
  slots,
483
581
  model: result.model,
484
- usage: result.usage,
485
- cost: result.cost,
582
+ usage: folded.usage,
583
+ cost: folded.cost,
486
584
  lengthWarning,
487
585
  };
488
586
  }
489
587
  catch (e) {
490
588
  lastError = e;
589
+ LlmClient.addDiscarded(discarded, result.usage, result.cost);
491
590
  this.logger?.warn(`lint-source batch failed with ${model}: ${e}`);
492
591
  }
493
592
  }
@@ -510,25 +609,39 @@ export class LlmClient {
510
609
  ]);
511
610
  const start = Math.max(0, Math.floor(options?.startModelIndex ?? 0));
512
611
  let lastError;
612
+ const discarded = LlmClient.emptyDiscarded();
513
613
  for (let mi = start; mi < this.modelsToTry.length; mi++) {
514
614
  const model = this.modelsToTry[mi];
615
+ let result;
616
+ try {
617
+ result = await this.fetchCompletion(model, openRouterMessages);
618
+ }
619
+ catch (e) {
620
+ lastError = e;
621
+ if (e instanceof BilledCompletionError) {
622
+ LlmClient.addDiscarded(discarded, e.usage, e.cost);
623
+ }
624
+ this.logger?.warn(`Plural cardinal batch failed with ${model}: ${e}`);
625
+ continue;
626
+ }
515
627
  try {
516
- const result = await this.fetchCompletion(model, openRouterMessages);
517
628
  const forms = parsePluralFormsJsonResponse(result.content, expectedForms);
518
629
  if (options?.targetLocale) {
519
630
  for (const value of Object.values(forms)) {
520
631
  this.assertExpectedScript(value, options.targetLocale);
521
632
  }
522
633
  }
634
+ const folded = LlmClient.foldDiscarded(result.usage, result.cost, discarded);
523
635
  return {
524
636
  forms,
525
637
  model: result.model,
526
- usage: result.usage,
527
- cost: result.cost,
638
+ usage: folded.usage,
639
+ cost: folded.cost,
528
640
  };
529
641
  }
530
642
  catch (e) {
531
643
  lastError = e;
644
+ LlmClient.addDiscarded(discarded, result.usage, result.cost);
532
645
  this.logger?.warn(`Plural cardinal batch failed with ${model}: ${e}`);
533
646
  }
534
647
  }
@@ -1 +1 @@
1
- {"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../../src/api/llm-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../../src/api/llm-client.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  /** Auto-generated by scripts/write-build-info.mjs — do not edit */
2
- export declare const BUILD_TIMESTAMP_ISO = "2026-06-21T00:49:27.184Z";
2
+ export declare const BUILD_TIMESTAMP_ISO = "2026-06-22T19:58:32.626Z";
3
3
  //# sourceMappingURL=build-info.generated.d.ts.map
@@ -1,3 +1,3 @@
1
1
  /** Auto-generated by scripts/write-build-info.mjs — do not edit */
2
- export const BUILD_TIMESTAMP_ISO = "2026-06-21T00:49:27.184Z";
2
+ export const BUILD_TIMESTAMP_ISO = "2026-06-22T19:58:32.626Z";
3
3
  //# sourceMappingURL=build-info.generated.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-markdown.d.ts","sourceRoot":"","sources":["../../src/cli/check-markdown.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAenD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAuEhG"}
1
+ {"version":3,"file":"check-markdown.d.ts","sourceRoot":"","sources":["../../src/cli/check-markdown.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAgBnD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAyEhG"}
@@ -1,6 +1,7 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
3
  import chalk from "chalk";
4
+ import { t } from "../i18n/index.js";
4
5
  import { toDocTranslateConfig } from "../core/config.js";
5
6
  import { TranslationCache } from "../core/cache.js";
6
7
  import { documentationFileTrackingKey } from "../core/doc-file-tracking.js";
@@ -68,10 +69,10 @@ export async function runCheckMarkdown(opts) {
68
69
  console.log(JSON.stringify({ issues: jsonRows, count: issueCount }, null, 2));
69
70
  }
70
71
  else if (issueCount > 0) {
71
- console.error(chalk.red(`\n❌ check-markdown: ${issueCount} issue(s) in documentation sources`));
72
+ console.error(chalk.red(t("\n❌ check-markdown: {{count}} issue(s) in documentation sources", { count: issueCount })));
72
73
  }
73
74
  else {
74
- console.log(chalk.green("✅ check-markdown: no markdown source issues found"));
75
+ console.log(chalk.green(t("✅ check-markdown: no markdown source issues found")));
75
76
  }
76
77
  return { exitCode: issueCount > 0 ? 1 : 0 };
77
78
  }