dsh-cait 1.1.3 → 1.1.7
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/CHANGELOG.md +186 -0
- package/README.ja.md +51 -14
- package/README.md +137 -30
- package/README.zh-CN.md +51 -14
- package/client/components.js +2033 -48
- package/client/entry.js +2 -0
- package/client/helpers.js +12 -0
- package/client/locales.js +658 -8
- package/client/styles.js +111 -4
- package/client.js +2814 -58
- package/lib/aligner.js +6 -6
- package/lib/analysis.js +88 -0
- package/lib/api.js +46 -0
- package/lib/brief.js +275 -0
- package/lib/docx.js +155 -26
- package/lib/formats.js +37 -0
- package/lib/glossary.js +20 -4
- package/lib/import-export.js +212 -13
- package/lib/libraries.js +156 -0
- package/lib/library-export.js +7 -1
- package/lib/localization.js +1098 -0
- package/lib/lock.js +30 -0
- package/lib/notes.js +144 -0
- package/lib/persistence.js +54 -7
- package/lib/pptx.js +33 -1
- package/lib/pre-translate.js +62 -45
- package/lib/propagate.js +3 -0
- package/lib/qa.js +94 -4
- package/lib/replace.js +243 -0
- package/lib/review.js +131 -0
- package/lib/segment-edit.js +199 -0
- package/lib/store-utils.js +33 -6
- package/lib/store.js +507 -47
- package/lib/subtitles.js +213 -0
- package/lib/term-extract.js +105 -3
- package/lib/terms.js +4 -2
- package/lib/tm-maintenance.js +157 -0
- package/lib/tm.js +4 -1
- package/lib/tools.js +294 -0
- package/lib/xlsx.js +176 -66
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,188 @@ All notable changes to CAIT are documented here. The project follows
|
|
|
4
4
|
[Semantic Versioning](https://semver.org/) and the format is based on
|
|
5
5
|
[Keep a Changelog](https://keepachangelog.com/).
|
|
6
6
|
|
|
7
|
+
## [1.1.7] - 2026-11-10
|
|
8
|
+
|
|
9
|
+
Format-depth release: DOCX tables, headers, footers, and notes; Apple/Android
|
|
10
|
+
string catalogs and other localization formats; PowerPoint speaker notes,
|
|
11
|
+
multi-sheet XLSX, and subtitle timing controls.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **DOCX content outside the body.** Import and export paragraphs in tables,
|
|
16
|
+
headers, footers, footnotes, and endnotes, keyed by `docxPart` and
|
|
17
|
+
`docxParagraph`; body-only documents keep the old path.
|
|
18
|
+
- **Localization string formats.** Apple `.strings` and `.stringsdict`, Android
|
|
19
|
+
`strings.xml`/plurals, `.resx`, `.arb`, nested YAML, and Java `.properties`.
|
|
20
|
+
Keys, comments, plural variants, block scalars, inline XML tags, and ARB
|
|
21
|
+
metadata are preserved for round trips. Nested YAML supports mappings,
|
|
22
|
+
sequences, scalars, block scalars, and comments; anchors, aliases, merge keys,
|
|
23
|
+
and flow collections are rejected explicitly.
|
|
24
|
+
- **PowerPoint speaker notes.** Notes pages are imported as separate units and
|
|
25
|
+
written back by part; slide text and notes stay in document order.
|
|
26
|
+
- **Multi-sheet XLSX with source-preserving export.** Every worksheet is
|
|
27
|
+
imported with `sheet`/`sheetName` metadata and cell references. When the
|
|
28
|
+
source workbook is retained, export patches the original cells instead of
|
|
29
|
+
rebuilding the workbook, so styles, merged ranges, and other sheets survive;
|
|
30
|
+
formula cells are skipped.
|
|
31
|
+
- **Subtitle timeline controls.** Merge adjacent cues, split a cue at a time
|
|
32
|
+
point, and shift all cues by milliseconds. Overlapping cues are reported as a
|
|
33
|
+
high-risk QA finding rather than being changed automatically.
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
|
|
37
|
+
- Segment views include their metadata (`start`/`end`, `docxPart`, `sheetName`,
|
|
38
|
+
key paths, and similar) so timeline and format context reaches the UI.
|
|
39
|
+
|
|
40
|
+
### Known limits
|
|
41
|
+
|
|
42
|
+
- Segment merge/split still only cover text formats; Office merge/split needs a
|
|
43
|
+
paragraph-mapping contract.
|
|
44
|
+
- XLSX export needs a target column; formula cells are skipped, and workbooks
|
|
45
|
+
imported before 1.1.7 have no retained source package to patch.
|
|
46
|
+
- Nested YAML rejects anchors, aliases, merge keys, and flow collections.
|
|
47
|
+
- Subtitle editing has no waveform/playhead; split uses a time point, merge uses
|
|
48
|
+
the outer cue range.
|
|
49
|
+
|
|
50
|
+
## [1.1.6] - 2026-11-09
|
|
51
|
+
|
|
52
|
+
Review-workbench release: find and replace, a command palette, segment notes,
|
|
53
|
+
draft undo/redo, segment merge/split/lock, proper-name term discovery, and an
|
|
54
|
+
optional AI review pass that suggests fixes without writing to the document.
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
|
|
58
|
+
- **Find and replace.** Preview every match in source/target, apply in one step,
|
|
59
|
+
and undo the last replacement. Confirmed segments are downgraded to review when
|
|
60
|
+
their target changes; TM entries are left untouched.
|
|
61
|
+
- **Command palette and shortcuts.** `Ctrl/Cmd+K` opens a command palette;
|
|
62
|
+
`Ctrl/Cmd+F` opens find and replace.
|
|
63
|
+
- **Segment notes.** Per-segment review comments with add, edit, and delete,
|
|
64
|
+
persisted in the document JSON.
|
|
65
|
+
- **Draft undo/redo.** Per-segment editing history with `Ctrl/Cmd+Z`,
|
|
66
|
+
`Ctrl/Cmd+Shift+Z`, and `Ctrl/Cmd+Y`.
|
|
67
|
+
- **Merge, split, and lock.** Merge adjacent text segments, split a segment at a
|
|
68
|
+
source offset, and lock segments against edits, confirmation, replacement,
|
|
69
|
+
pre-translation, propagation, and clearing.
|
|
70
|
+
- **Term discovery for one-off names.** Candidates now include quoted terms,
|
|
71
|
+
capitalized names, and Chinese proper names that occur once, in addition to
|
|
72
|
+
repeated n-grams. Candidates carry a type, confidence, and evidence; they are
|
|
73
|
+
never added to the glossary automatically.
|
|
74
|
+
- **AI review.** `reviewDocument` asks the configured DSH route for structured
|
|
75
|
+
issues (`severity`, `code`, `message`, `suggestion`) and the QA tab can jump to
|
|
76
|
+
a segment or fill a suggestion into the draft. `cat_review` exposes the same
|
|
77
|
+
pass to agents; it never writes the document.
|
|
78
|
+
- **Separate review route.** Settings can give AI review its own provider and
|
|
79
|
+
model instead of following the pre-translation route. The default still
|
|
80
|
+
inherits the MT route, so existing configurations keep working.
|
|
81
|
+
|
|
82
|
+
### Changed
|
|
83
|
+
|
|
84
|
+
- Store schema v7 adds `segment.notes` and `segment.locked`; v6 data migrates in
|
|
85
|
+
place.
|
|
86
|
+
- The QA tab now separates mechanical checks (placeholders, numbers, terms,
|
|
87
|
+
length, residue) from model review suggestions.
|
|
88
|
+
|
|
89
|
+
### Fixed
|
|
90
|
+
|
|
91
|
+
- Batch MT maps responses by stable segment id and rejects partial or renumbered
|
|
92
|
+
output instead of shifting later translations by one segment.
|
|
93
|
+
|
|
94
|
+
## [1.1.5] - 2026-11-08
|
|
95
|
+
|
|
96
|
+
Project resources, delivery output, and TM upkeep: each document can bind its own
|
|
97
|
+
TM and glossary libraries, the workbench can price a job and hand off a bilingual
|
|
98
|
+
or XLIFF review package, and TM libraries can be merged, deduplicated, or pruned.
|
|
99
|
+
|
|
100
|
+
### Added
|
|
101
|
+
|
|
102
|
+
- **Per-document resources.** A document can inherit the global mounts or bind its
|
|
103
|
+
own TM/glossary libraries and default write TM. Writes are checked against the
|
|
104
|
+
document scope (`NO_TM_BOUND`, `TM_NOT_MOUNTED`, `TM_NOT_BOUND`), and deleting a
|
|
105
|
+
library removes dangling document references.
|
|
106
|
+
- **Word count and leverage analysis.** `analyzeDocument` reports segments, words,
|
|
107
|
+
characters, translated/confirmed counts, duplicates, ICE/exact/fuzzy/new buckets,
|
|
108
|
+
match rate, and leverage. The workbench shows the breakdown and downloads it as
|
|
109
|
+
CSV or JSON.
|
|
110
|
+
- **Bilingual review DOCX.** Export a three-column Source/Target/Status table for
|
|
111
|
+
reviewers who do not use CAIT.
|
|
112
|
+
- **XLIFF 1.2 review packages.** Export carries the segment uid, target state, and
|
|
113
|
+
a note; re-import applies only segments matched by uid, XLIFF id, or a unique
|
|
114
|
+
source, refuses source mismatches, and reports unmatched entries.
|
|
115
|
+
- **TM maintenance.** Preview and confirm merge, deduplicate, and prune operations;
|
|
116
|
+
merges preserve the target library and optionally delete the source.
|
|
117
|
+
|
|
118
|
+
### Changed
|
|
119
|
+
|
|
120
|
+
- Confirmations write to the document's default write TM when one is bound.
|
|
121
|
+
- TM lookup, glossary hits, QA term checks, and pre-translation all honor the
|
|
122
|
+
document's effective resource scope.
|
|
123
|
+
|
|
124
|
+
## [1.1.4] - 2026-11-08
|
|
125
|
+
|
|
126
|
+
Brief and context: CAIT now carries a per-document translation brief and the
|
|
127
|
+
neighbouring source sentences into pre-translation and agent work, and lets a
|
|
128
|
+
reviewer undo a confirmation without losing the translation-memory record.
|
|
129
|
+
|
|
130
|
+
### Added
|
|
131
|
+
|
|
132
|
+
- **Document brief.** Six optional fields — domain, audience, tone, notes,
|
|
133
|
+
do-not-translate terms, and a style sample — are stored with the document,
|
|
134
|
+
editable from the workbench, and injected into single and batch MT prompts.
|
|
135
|
+
Agents read and write it with `cat_get_brief` and `cat_set_brief`.
|
|
136
|
+
- **Context for agents.** `cat_get_context` returns the brief, the current
|
|
137
|
+
segment, its previous/next source segments, and paragraph information, so an
|
|
138
|
+
agent can resolve pronouns and omitted subjects before translating.
|
|
139
|
+
- **Context-aware batch pre-translation.** Pre-translation now sends up to eight
|
|
140
|
+
segments per request with the brief and neighbouring source sentences, then
|
|
141
|
+
falls back to one-segment calls for anything the model omits. A partial batch
|
|
142
|
+
no longer aborts the document.
|
|
143
|
+
- **Terminology status.** Glossary entries can be marked `forbidden` (never use
|
|
144
|
+
this rendering) or `preferred` (must use it when the source term appears).
|
|
145
|
+
The flags survive CSV/JSON/TBX export, CSV import, the glossary UI, and
|
|
146
|
+
`cat_add_terms`.
|
|
147
|
+
- **Risk-graded QA.** Findings are graded high / medium / low; forbidden terms
|
|
148
|
+
and length drift are new checks. The report returns `risks` and `riskCounts`,
|
|
149
|
+
and the rail can filter to segments that need attention.
|
|
150
|
+
- **QA panel and fixes.** A QA tab lists risk counts and findings with jump,
|
|
151
|
+
copy-source, clear-target, and insert-term actions. A concordance tab and
|
|
152
|
+
`cat_concordance` search every mounted TM for a word or phrase.
|
|
153
|
+
- **Undo confirmation.** `cat_unconfirm_segment` and the editor button revoke a
|
|
154
|
+
confirmation, keep the text as a draft, and leave TM untouched. Editing a
|
|
155
|
+
confirmed segment now revokes its confirmation automatically; confirming it
|
|
156
|
+
again updates the same TM entry.
|
|
157
|
+
- **Stable segment identity.** Every segment gets a `uid`; the store schema moves
|
|
158
|
+
to version 5 and migrates version 4 snapshots in place.
|
|
159
|
+
- **Bulk pre-translation cleanup.** The rail can clear every unconfirmed
|
|
160
|
+
pre-translated or auto-propagated target in the document after a confirmation
|
|
161
|
+
dialog that states the count and the MT/TM/auto breakdown. Confirmed segments,
|
|
162
|
+
manual drafts, and saved TM entries are left untouched.
|
|
163
|
+
|
|
164
|
+
### Changed
|
|
165
|
+
|
|
166
|
+
- Pre-translation uses batched MT requests with per-segment fallback instead of
|
|
167
|
+
one request per segment.
|
|
168
|
+
- `getQaReport` also reports `risks` and `riskCounts`; `counts` includes
|
|
169
|
+
`TERM_FORBIDDEN` and `LENGTH_DRIFT`.
|
|
170
|
+
- `segmentView` includes `uid`; document summaries include `brief`; glossary CSV
|
|
171
|
+
exports use seven columns including `forbidden` and `preferred`.
|
|
172
|
+
|
|
173
|
+
### Fixed
|
|
174
|
+
|
|
175
|
+
- Batch pre-translation now asks for stable segment ids and rejects ambiguous
|
|
176
|
+
positional output; a dropped, merged, or renumbered entry falls back to
|
|
177
|
+
one-segment calls instead of shifting later translations onto the wrong
|
|
178
|
+
segment.
|
|
179
|
+
- `cat_concordance` renders the previous/next context of a match instead of
|
|
180
|
+
assuming an array.
|
|
181
|
+
- TM and glossary toolbars now use the import/export icon in the direction the
|
|
182
|
+
button actually moves data; the document toolbar follows the same convention.
|
|
183
|
+
- The library toolbar has an explicit **default write** selector again, and the
|
|
184
|
+
scope checkboxes no longer silently choose which library receives new entries,
|
|
185
|
+
imports, exports, or clears.
|
|
186
|
+
- Unconfirming a segment that was just auto-unconfirmed by saving an edit is
|
|
187
|
+
treated as idempotent instead of showing a `NOT_CONFIRMED` error.
|
|
188
|
+
|
|
7
189
|
## [1.1.3] - 2026-11-07
|
|
8
190
|
|
|
9
191
|
Alignment, repetition and terminology: CAIT can now build a translation memory
|
|
@@ -41,6 +223,10 @@ terminology with evidence instead of guessing.
|
|
|
41
223
|
and never block confirming or exporting.
|
|
42
224
|
- `proposeTranslation` writes only a `suggestion` plus its reason, never the
|
|
43
225
|
target: an agent can propose, the user keeps the last word.
|
|
226
|
+
- The fuzzy-match threshold now defaults to **70%** instead of 55%: below that a
|
|
227
|
+
match usually shares only function words, so showing it costs review time and
|
|
228
|
+
saves none. Settings explains this and offers a **Reset** button that appears
|
|
229
|
+
only while the slider sits away from the default.
|
|
44
230
|
|
|
45
231
|
### Fixed
|
|
46
232
|
|
package/README.ja.md
CHANGED
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
<p align="center">
|
|
18
18
|
<a href="https://www.npmjs.com/package/dsh-cait"><img alt="npm バージョン" src="https://img.shields.io/npm/v/dsh-cait.svg" /></a>
|
|
19
19
|
<img alt="DSH 0.2.x" src="https://img.shields.io/badge/DSH-0.2.x-4d6bfe.svg" />
|
|
20
|
-
<img alt="テスト
|
|
20
|
+
<img alt="テスト 45 スイート" src="https://img.shields.io/badge/tests-45%20suites-brightgreen.svg" />
|
|
21
21
|
<img alt="API キー不要" src="https://img.shields.io/badge/API%20key-not%20required-6b7280.svg" />
|
|
22
22
|
</p>
|
|
23
23
|
|
|
24
24
|
CAIT は DSH Web UI と DSH デスクトップに CAT ワークベンチを追加します。左サイドバーの
|
|
25
|
-
エントリから開き、ワークベンチと
|
|
25
|
+
エントリから開き、ワークベンチと 21 のエージェントツールが 1 つのストアを共有するため、
|
|
26
26
|
ソースファイルのインポートから訳文のエクスポートまでを一通りこなせます。
|
|
27
27
|
|
|
28
28
|
> **DSH `0.2.2-rc.1` で動作確認済み。** CAIT は DSH 自身のモデルルートと認証情報を
|
|
@@ -38,7 +38,7 @@ CAIT は DSH Web UI と DSH デスクトップに CAT ワークベンチを追
|
|
|
38
38
|
| **用語を意識した編集** | 複数の用語集、ソース言語による絞り込み、インライン強調、用語のクリック挿入、用語ごとの大文字小文字の区別。 |
|
|
39
39
|
| **文書ワークフロー** | タブ、閉じる / 開き直し、最近の文書の整理、同一内容の再インポート再利用、文書ごとの進捗。 |
|
|
40
40
|
| **実用的な形式対応** | TXT、Markdown、DOCX、EPUB、TMX、CSV、SRT/VTT、PO、XLIFF 1.2/2.0/SDLXLIFF、HTML、JSON、XLSX、PPTX、RTF。 |
|
|
41
|
-
| **エージェント対応** |
|
|
41
|
+
| **エージェント対応** | 21 のツールが開いている文書とストアを共有するので、エージェントと並行して翻訳できます。 |
|
|
42
42
|
|
|
43
43
|
## クイックスタート
|
|
44
44
|
|
|
@@ -56,6 +56,39 @@ Host のリビジョンをポーリングするため、エージェントによ
|
|
|
56
56
|
|
|
57
57
|
## 機能
|
|
58
58
|
|
|
59
|
+
### 1.1.7 の新機能
|
|
60
|
+
|
|
61
|
+
- **DOCX の深い構造**:表、ヘッダー、フッター、脚注、文末脚注の段落を通常のセグメントとして取り込み、元の part に書き戻します。
|
|
62
|
+
- **ローカライズ文字列**:Apple `.strings`/`.stringsdict`、Android `strings.xml`/複数形、`.resx`、`.arb`、ネストした YAML、Java `.properties` を往復でき、キー、コメント、複数形、ブロックスカラー、インラインタグを保持します。
|
|
63
|
+
- **スピーカーノートと複数シート**:PPTX のノートページを独立したセグメントにし、XLSX はシート名、順序、セル参照を保ったまま全シートを扱います。元ファイルを保持している場合は元のセルへ書き戻すため、スタイルと結合範囲も残ります。
|
|
64
|
+
- **字幕タイムライン**:隣接 cue の結合、時刻指定の分割、全 cue のシフトに対応。重なりは高リスクの QA として報告し、時間は自動変更しません。
|
|
65
|
+
|
|
66
|
+
### 1.1.6 の新機能
|
|
67
|
+
|
|
68
|
+
- **検索と置換**:原文/訳文のプレビュー、一括適用、直前の置換の取り消し。確定済みセグメントの訳文を変更すると校閲待ちに戻ります。
|
|
69
|
+
- **コマンドパレット**(`Ctrl/Cmd+K`)と `Ctrl/Cmd+F` の検索置換。
|
|
70
|
+
- **セグメントメモ**と、セグメント内の**ドラフト undo/redo**(`Ctrl/Cmd+Z`、`Ctrl/Cmd+Shift+Z`、`Ctrl/Cmd+Y`)。
|
|
71
|
+
- テキストセグメントの**マージ・分割・ロック**。マージ/分割は当面 TXT と Markdown のみで、Office の段落マッピングは安全に書き戻せません。
|
|
72
|
+
- **一度しか出ない固有名詞の用語発見**:引用符内の用語、文中の大文字名、中国語の人名/地名/造物名を候補に含め、種類・信頼度・原文の根拠を付けます。用語集への自動追加はしません。
|
|
73
|
+
- **AI 校閲**:QA タブから現在の DSH モデルに構造化された提案を求め、該当セグメントへ移動したり訳文へ反映したりできます。Agent は `cat_review` を呼べますが、どちらも文書を直接書き換えません。校閲は既定で翻訳モデルに従い、設定で専用のプロバイダーとモデルを指定できます。
|
|
74
|
+
|
|
75
|
+
### 1.1.5 の新機能
|
|
76
|
+
|
|
77
|
+
- 文書ごとに**グローバルな TM/用語集のマウントを継承するか、独自のライブラリをバインド**でき、既定の書き込み TM も指定できます。検索、用語ヒット、QA、事前翻訳、確定はすべてそのスコープに従います。
|
|
78
|
+
- **語数とレバレッジ分析**:セグメント、語数、文字数、重複、ICE/完全/ファジー/新規の内訳、マッチ率、レバレッジを表示し、CSV/JSON でダウンロードできます。
|
|
79
|
+
- CAIT を使わない校閲者向けに**バイリンガル校閲 DOCX**(原文/訳文/状態)を出力します。
|
|
80
|
+
- **XLIFF 1.2 校閲パッケージ**を出力・再取り込みできます。uid、XLIFF id、一意な原文で照合し、原文不一致は拒否、未一致件数を報告します。
|
|
81
|
+
- **TM メンテナンス**:マージ、重複排除、整理をプレビューしてから確定します。
|
|
82
|
+
|
|
83
|
+
### 1.1.4 の新機能
|
|
84
|
+
|
|
85
|
+
- 文書ごとに**翻訳ブリーフ**(領域、読者、トーン、メモ、訳禁用語、スタイル例)を持て、MT プロンプトに注入されます。Agent は `cat_get_brief` で読み取れます。
|
|
86
|
+
- 事前翻訳は**1 リクエスト最大 8 セグメント**のバッチになり、ブリーフと隣接原文を送ります。モデルが返さなかったセグメントは 1 件ずつフォールバックします。
|
|
87
|
+
- 用語集エントリに **forbidden**(使用禁止の訳)と **preferred**(必ず使う訳)を設定でき、CSV/JSON/TBX 出力と CSV 入力で保持されます。
|
|
88
|
+
- QA は **high / medium / low** に分類され、禁止用語と長さドリフトの検査が加わりました。QA タブからジャンプ、原文コピー、訳文クリア、必須用語の挿入ができます。Concordance はマウント中の全 TM を検索します。
|
|
89
|
+
- 確定済みセグメントを**確定解除**でき、訳文と TM エントリは残ります。確定済みセグメントを編集すると自動的に `translated` に戻り、再確定で同じ TM エントリを更新します。
|
|
90
|
+
- セグメントレールから**未確定の事前翻訳を一括クリア**できます。実行前に件数と MT/TM/自動伝播の内訳を示し、確定済み・手動下書き・保存済み TM は対象外であることを明示します。
|
|
91
|
+
|
|
59
92
|
### 翻訳メモリ
|
|
60
93
|
|
|
61
94
|
- id、名前、マウント状態、既定の書き込みライブラリを持つ複数の TM ライブラリ。
|
|
@@ -67,7 +100,7 @@ Host のリビジョンをポーリングするため、エージェントによ
|
|
|
67
100
|
- `near_exact` は数字・句読点・空白を無視したキーで比較し、スコアのしきい値には
|
|
68
101
|
依存しません。
|
|
69
102
|
- `high_fuzzy` は `>= 0.85`、`medium_fuzzy` は `0.75–0.85`、`low_fuzzy` は
|
|
70
|
-
`0.75` 未満(設定可能な下限、既定値 `0.
|
|
103
|
+
`0.75` 未満(設定可能な下限、既定値 `0.70` より上)です。
|
|
71
104
|
- ファジースコアは字句ベースです。文字バイグラムの Dice 72% + トークンの Jaccard 28%。
|
|
72
105
|
ラテン文字は単語単位、CJK は文字単位で扱います。ステミング、同義語、意味的マッチングは
|
|
73
106
|
行いません。
|
|
@@ -202,7 +235,7 @@ CAIT はエンドポイントもキーも持ちません。セレクタは DSH
|
|
|
202
235
|
| SDLXLIFF | ✅ | ✅ | XLIFF 1.2 の基本パス。SDL 固有の拡張はラウンドトリップしない |
|
|
203
236
|
| HTML | ✅ | ✅ | テキストブロックとインラインタグを保持。文書全体の CSS / レイアウトは再構築しない |
|
|
204
237
|
| JSON | ✅ | ✅ | 文字列パスのサブセット。オブジェクト / 配列構造はテンプレートで保持。キーと数値は翻訳しない |
|
|
205
|
-
| XLSX | ✅ | ✅ |
|
|
238
|
+
| XLSX | ✅ | ✅ | 全ワークシート。ソース / ターゲット列またはヘッダーを認識。元ファイルを保持している場合はセルへ書き戻し、スタイル、結合範囲、他のシートも保持。数式セルはスキップ |
|
|
206
239
|
| PPTX | ✅ | ✅* | ソース保持エクスポート。インポートした `.pptx` パッケージが必要。本文テキストのみで、ノート / グラフ / SmartArt はインポートしない |
|
|
207
240
|
| RTF | ✅ | ✅ | 基本的な段落、`\uN`、`\'hh`、制御語。元のスタイルはラウンドトリップしない |
|
|
208
241
|
|
|
@@ -247,7 +280,7 @@ DSH デスクトップ(または `plugin_manager` ツールがある任意の
|
|
|
247
280
|
plugin_manager install_bundle target: dsh-cait
|
|
248
281
|
```
|
|
249
282
|
|
|
250
|
-
バージョンを固定するときは `dsh-cait@1.1.
|
|
283
|
+
バージョンを固定するときは `dsh-cait@1.1.7`、最新版は `dsh-cait@latest` を指定します。
|
|
251
284
|
マネージャが registry のパッケージを解決し、bundle patch を適用してプラグインを有効化します。
|
|
252
285
|
|
|
253
286
|
CLI 管理のプロファイル:
|
|
@@ -349,6 +382,7 @@ dsh web --patch C:\absolute\path\to\dsh-CAIT\_dev\cait.patch.yml
|
|
|
349
382
|
| `cat_consistency_report` | 訳文が揺れている同一原文をグループ化して一覧 |
|
|
350
383
|
| `cat_term_candidates` | 用語候補の短いリスト: 頻度、例文、メモリにある既存の訳語 |
|
|
351
384
|
| `cat_add_terms` | 選んだ用語を用語集へまとめて登録 |
|
|
385
|
+
| `cat_review` | モデルに構造化された校閲提案を求める。文書は書き換えない |
|
|
352
386
|
|
|
353
387
|
そのためエージェントは UI を操作せずに文書全体を下書きできます: `cat_pre_translate` を
|
|
354
388
|
`from: next` で `next` が `null` になるまで繰り返し、`cat_get_segments` で確認し、
|
|
@@ -364,7 +398,7 @@ dsh web --patch C:\absolute\path\to\dsh-CAIT\_dev\cait.patch.yml
|
|
|
364
398
|
flowchart LR
|
|
365
399
|
UI["DSH Web UI<br/>(sidebar + workbench)"] --> Client["client.js<br/>generated Web bundle"]
|
|
366
400
|
Client --> API["/cait/api/rpc<br/>same-origin JSON"]
|
|
367
|
-
Tools["
|
|
401
|
+
Tools["21 agent tools"] --> Store["CatStore"]
|
|
368
402
|
API --> Store
|
|
369
403
|
Store --> Snapshot[("store.json<br/>+ sources/")]
|
|
370
404
|
```
|
|
@@ -451,7 +485,7 @@ node _dev/test-mt.mjs
|
|
|
451
485
|
|
|
452
486
|
インポート / エクスポートのフィクスチャは `_dev/sample.docx`、`_dev/sample-table.docx`、
|
|
453
487
|
`_dev/sample-format.docx` です。対応する `python _dev/make-*.py` スクリプトで再生成
|
|
454
|
-
できます。
|
|
488
|
+
できます。45 スイートすべてが通るはずです。
|
|
455
489
|
|
|
456
490
|
### リリース
|
|
457
491
|
|
|
@@ -497,12 +531,15 @@ npm publish
|
|
|
497
531
|
画像 OCR も未対応です。
|
|
498
532
|
- EPUB インポートは spine 内の本文 XHTML テキストブロックのみを対象とします。
|
|
499
533
|
DRM、固定レイアウト、スクリプト化、MathML を多用する書籍は非対応です。
|
|
500
|
-
- DOCX
|
|
501
|
-
|
|
534
|
+
- DOCX インポートは本文、表、ヘッダー、フッター、脚注、文末脚注を対象にします。
|
|
535
|
+
フィールド、代替テキスト、変更履歴の削除はソース言語のまま残ります。
|
|
502
536
|
- 複数の run が混在する DOCX/PPTX の段落は、先頭 run の書式を継承します。
|
|
503
|
-
- PPTX
|
|
504
|
-
- XLSX
|
|
505
|
-
|
|
537
|
+
- PPTX インポートは本文とスピーカーノートを対象にし、グラフと SmartArt は対象外です。
|
|
538
|
+
- XLSX エクスポートはターゲット列がある場合に書き戻します。数式セルはスキップされ、
|
|
539
|
+
1.1.7 より前にインポートした文書は元ワークブックを保持していないため再構築になります。
|
|
540
|
+
- ネストした YAML は mapping、sequence、scalar、ブロックスカラー、コメントに対応します。
|
|
541
|
+
アンカー、エイリアス、merge key、flow コレクションは
|
|
542
|
+
`LOCALIZATION_YAML_UNSUPPORTED` で拒否します。
|
|
506
543
|
- HTML/RTF のエクスポートは元のスタイルをラウンドトリップしません。JSON は文字列値だけを
|
|
507
544
|
翻訳します。
|
|
508
545
|
- TM のマッチングは意味ではなく字句に基づきます。ステミング、同義語、埋め込みはありません。
|
|
@@ -515,7 +552,7 @@ npm publish
|
|
|
515
552
|
README も英語・簡体字中国語・日本語の 3 版があり、英語版が正本です。
|
|
516
553
|
|
|
517
554
|
次に予定しているのは、マルチモーダルな DSH ルート経由の画像 / ビジョン入力、
|
|
518
|
-
|
|
555
|
+
Office 段落マッピング後の結合 / 分割、字幕の波形 / 再生ヘッドです。
|
|
519
556
|
|
|
520
557
|
## 変更履歴とバージョン
|
|
521
558
|
|
package/README.md
CHANGED
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
<p align="center">
|
|
17
17
|
<a href="https://www.npmjs.com/package/dsh-cait"><img alt="npm version" src="https://img.shields.io/npm/v/dsh-cait.svg" /></a>
|
|
18
18
|
<img alt="DSH 0.2.x" src="https://img.shields.io/badge/DSH-0.2.x-4d6bfe.svg" />
|
|
19
|
-
<img alt="Tests:
|
|
19
|
+
<img alt="Tests: 45 suites" src="https://img.shields.io/badge/tests-45%20suites-brightgreen.svg" />
|
|
20
20
|
<img alt="No API key required" src="https://img.shields.io/badge/API%20key-not%20required-6b7280.svg" />
|
|
21
21
|
</p>
|
|
22
22
|
|
|
23
23
|
CAIT adds a CAT workbench to the DSH Web UI and Desktop. It opens from a
|
|
24
|
-
left-sidebar entry, keeps one shared store behind the workbench and
|
|
24
|
+
left-sidebar entry, keeps one shared store behind the workbench and twenty agent
|
|
25
25
|
tools, and covers the practical path from importing a source file to exporting a
|
|
26
26
|
translated document.
|
|
27
27
|
|
|
@@ -38,7 +38,7 @@ translated document.
|
|
|
38
38
|
| **Glossary-aware editing** | Multiple term bases, source-language filtering, inline highlighting, click-to-insert terms, and per-term case sensitivity. |
|
|
39
39
|
| **A document workflow** | Tabs, close/reopen, recent-document cleanup, duplicate-import reuse, and progress per document. |
|
|
40
40
|
| **Real format coverage** | TXT, Markdown, DOCX, EPUB, TMX, CSV, SRT/VTT, PO, XLIFF 1.2/2.0/SDLXLIFF, HTML, JSON, XLSX, PPTX, and RTF. |
|
|
41
|
-
| **Agent-ready** |
|
|
41
|
+
| **Agent-ready** | Twenty-one tools share the open document and store, so an agent can translate alongside you. |
|
|
42
42
|
|
|
43
43
|
## Quick start
|
|
44
44
|
|
|
@@ -57,6 +57,74 @@ manual reload.
|
|
|
57
57
|
|
|
58
58
|
## Features
|
|
59
59
|
|
|
60
|
+
### New in 1.1.7
|
|
61
|
+
|
|
62
|
+
- **DOCX depth.** Table cells, headers, footers, footnotes, and endnotes are
|
|
63
|
+
imported as normal segments and written back to their original parts.
|
|
64
|
+
- **Localization catalogs.** Apple `.strings`/`.stringsdict`, Android
|
|
65
|
+
`strings.xml`/plurals, `.resx`, `.arb`, nested YAML, and Java `.properties`
|
|
66
|
+
round-trip with keys, comments, plural variants, block scalars, and inline
|
|
67
|
+
tags intact.
|
|
68
|
+
- **Speaker notes and multi-sheet workbooks.** PowerPoint notes pages become
|
|
69
|
+
separate units; every XLSX worksheet keeps its own name, order, and cell
|
|
70
|
+
references. When the source workbook is retained, export patches the original
|
|
71
|
+
cells so styles and merged ranges survive.
|
|
72
|
+
- **Subtitle timeline.** Merge adjacent cues, split at a time point, and shift
|
|
73
|
+
all cues; overlapping cues show up as a high-risk QA finding.
|
|
74
|
+
|
|
75
|
+
### New in 1.1.6
|
|
76
|
+
|
|
77
|
+
- **Find and replace** across source/target with a preview, one-step apply, and
|
|
78
|
+
undo; confirmed segments return to review when their target changes.
|
|
79
|
+
- **Command palette** (`Ctrl/Cmd+K`) and `Ctrl/Cmd+F` for find and replace.
|
|
80
|
+
- **Segment notes** for review comments, plus per-segment **draft undo/redo**.
|
|
81
|
+
- **Merge, split, and lock** text segments. Merge/split are limited to TXT and
|
|
82
|
+
Markdown until Office paragraph mapping can be written back safely.
|
|
83
|
+
- **Term discovery for one-off names.** Quoted terms, capitalized names, and
|
|
84
|
+
Chinese proper names that occur once are offered as candidates with evidence,
|
|
85
|
+
type, and confidence; nothing is added to the glossary automatically.
|
|
86
|
+
- **AI review.** The QA tab can ask the configured DSH route for structured
|
|
87
|
+
suggestions, jump to a segment, and fill a suggestion into the draft. Agents can
|
|
88
|
+
call `cat_review`; neither path writes the document. Review follows the
|
|
89
|
+
translation model by default, and Settings can give it a separate provider and
|
|
90
|
+
model.
|
|
91
|
+
|
|
92
|
+
### New in 1.1.5
|
|
93
|
+
|
|
94
|
+
- Each document can **inherit the global TM/glossary mounts or bind its own
|
|
95
|
+
libraries**, with a default write TM per document. Lookup, glossary hits, QA,
|
|
96
|
+
pre-translation, and confirmations all honor that scope.
|
|
97
|
+
- **Word count and leverage analysis** reports segments, words, characters,
|
|
98
|
+
duplicates, ICE/exact/fuzzy/new buckets, match rate, and leverage, with CSV and
|
|
99
|
+
JSON download.
|
|
100
|
+
- Export a **bilingual review DOCX** (Source/Target/Status) for reviewers who do
|
|
101
|
+
not use CAIT.
|
|
102
|
+
- Export and re-import an **XLIFF 1.2 review package**. Re-import matches by uid,
|
|
103
|
+
XLIFF id, or a unique source, refuses source mismatches, and reports unmatched
|
|
104
|
+
segments.
|
|
105
|
+
- **TM maintenance** previews and confirms merge, deduplicate, and prune actions.
|
|
106
|
+
|
|
107
|
+
### New in 1.1.4
|
|
108
|
+
|
|
109
|
+
- Each document can carry a **translation brief** — domain, audience, tone,
|
|
110
|
+
notes, do-not-translate terms, and a style sample — which is injected into MT
|
|
111
|
+
prompts and readable by agents through `cat_get_brief`.
|
|
112
|
+
- Pre-translation now sends **up to eight segments per request** with the brief
|
|
113
|
+
and neighbouring source sentences, then falls back to one segment at a time
|
|
114
|
+
for anything the model leaves out.
|
|
115
|
+
- Glossary entries can be **forbidden** (never use this rendering) or
|
|
116
|
+
**preferred** (must use it when the source term appears), and the flags survive
|
|
117
|
+
CSV/JSON/TBX export and CSV import.
|
|
118
|
+
- QA findings are graded **high / medium / low**, and the QA tab can jump to a
|
|
119
|
+
finding, copy the source, clear the target, or insert the required term. A
|
|
120
|
+
concordance tab searches every mounted TM for a word or phrase.
|
|
121
|
+
- A confirmed segment can be **unconfirmed** without deleting its text or its TM
|
|
122
|
+
entry; editing a confirmed segment revokes the confirmation automatically.
|
|
123
|
+
- The segment rail can **clear all unconfirmed pre-translated targets** in one
|
|
124
|
+
action. A confirmation dialog states the count and the MT/TM/auto breakdown,
|
|
125
|
+
and confirms that confirmed segments, manual drafts, and saved TM entries are
|
|
126
|
+
left untouched.
|
|
127
|
+
|
|
60
128
|
### Translation memory
|
|
61
129
|
|
|
62
130
|
- Multiple TM libraries with id, name, mount state, and a default write library.
|
|
@@ -68,7 +136,7 @@ manual reload.
|
|
|
68
136
|
- `near_exact` compares a key that ignores digits, punctuation, and whitespace;
|
|
69
137
|
it does not depend on a score cutoff.
|
|
70
138
|
- `high_fuzzy` is `>= 0.85`, `medium_fuzzy` is `0.75–0.85`, `low_fuzzy` is
|
|
71
|
-
below `0.75` (above the configurable floor, default `0.
|
|
139
|
+
below `0.75` (above the configurable floor, default `0.70`).
|
|
72
140
|
- Fuzzy scoring is lexical: 72% character-bigram Dice + 28% token Jaccard.
|
|
73
141
|
Latin text uses words; CJK text uses individual characters. There is no
|
|
74
142
|
stemming, synonym, or semantic matching.
|
|
@@ -92,9 +160,10 @@ manual reload.
|
|
|
92
160
|
only decides what the workbench searches and writes.
|
|
93
161
|
- **Terminology mining**: *Mine terms from the document* in the glossary toolbar
|
|
94
162
|
lists candidates with occurrence counts, sample wording from memory, and a
|
|
95
|
-
marker when the term is already known. Counting finds the candidates
|
|
96
|
-
|
|
97
|
-
|
|
163
|
+
marker when the term is already known. Counting finds and ranks the candidates
|
|
164
|
+
(Latin n-grams, repeated CJK substrings filtered by boundary entropy); you
|
|
165
|
+
confirm the wording and add them. A model-assisted shortlist that can include
|
|
166
|
+
single-occurrence proper nouns is included since 1.1.6.
|
|
98
167
|
|
|
99
168
|
### Library workspace
|
|
100
169
|
|
|
@@ -136,8 +205,13 @@ separate files in any supported format and any pair of languages.
|
|
|
136
205
|
size of 20/50/100/200 and a box to jump straight to a segment number. Jumping
|
|
137
206
|
clears the filter when the target segment would otherwise be hidden.
|
|
138
207
|
- **Pre-translate** fills the whole document from exact TM matches and machine
|
|
139
|
-
translation in
|
|
140
|
-
|
|
208
|
+
translation in batches of up to eight segments, carrying the document brief
|
|
209
|
+
and neighbouring source sentences, and falls back to one segment at a time
|
|
210
|
+
when a batch response is partial. It shows `done/total` and can be stopped
|
|
211
|
+
between blocks. Confirmed and already-translated segments are never overwritten.
|
|
212
|
+
- **Translation brief** lives beside the document: domain, audience, tone, notes,
|
|
213
|
+
do-not-translate terms, and a style sample. It is editable from the segment
|
|
214
|
+
header and used by both pre-translation and agent translation.
|
|
141
215
|
- **Stacked review**: source, the machine/agent baseline, and the editable target
|
|
142
216
|
are laid out top to bottom, so each block gets the full pane width.
|
|
143
217
|
**Confirm all** accepts every segment awaiting review after one confirmation
|
|
@@ -149,10 +223,16 @@ separate files in any supported format and any pair of languages.
|
|
|
149
223
|
unconfirmed copy with the same source (`origin: auto`), editing a draft keeps
|
|
150
224
|
them in sync, and *Fill repeated segments* does the whole document at once.
|
|
151
225
|
Confirmed segments are never touched.
|
|
152
|
-
- Advisory QA markers in the rail and an export-time summary
|
|
153
|
-
placeholders/tags, mismatched numbers, unused
|
|
154
|
-
an untouched copy of the source,
|
|
226
|
+
- Advisory QA markers in the rail and an export-time summary, graded **high /
|
|
227
|
+
medium / low**: missing placeholders/tags, mismatched numbers, unused or
|
|
228
|
+
forbidden glossary terms, empty targets, an untouched copy of the source,
|
|
229
|
+
length drift, and one source with several translations. The QA tab lists
|
|
230
|
+
findings and offers jump, copy-source, clear-target, and insert-term actions.
|
|
155
231
|
Nothing is blocked and nothing is stored.
|
|
232
|
+
- **Undo confirmation.** A confirmed segment can be unconfirmed back to
|
|
233
|
+
`translated`; its text and TM entry stay in place. Editing a confirmed segment
|
|
234
|
+
revokes the confirmation automatically, and confirming it again updates the
|
|
235
|
+
same TM entry.
|
|
156
236
|
- Document tabs; closing a tab does not delete the document.
|
|
157
237
|
- **Open existing document** reopens a closed document.
|
|
158
238
|
- Interface language switch in **Settings → Interface**: *Follow DSH language*
|
|
@@ -194,7 +274,10 @@ CAIT does not own an endpoint or key. The selector is built from DSH:
|
|
|
194
274
|
- `ctx.llm.listModels(provider)` supplies model ids; CAIT selects the first model
|
|
195
275
|
by default.
|
|
196
276
|
- `ctx.llm.stream({ provider, model, messages, temperature, purpose: 'cait-mt' })`
|
|
197
|
-
performs the call; CAIT concatenates `text-delta` chunks.
|
|
277
|
+
performs the call; CAIT concatenates `text-delta` chunks. Batch pre-translation
|
|
278
|
+
uses `purpose: 'cait-mt-batch'` and asks for a JSON array keyed by position;
|
|
279
|
+
both paths include the document brief, the neighbouring source sentences, and
|
|
280
|
+
the usable/forbidden glossary rules in the prompt.
|
|
198
281
|
|
|
199
282
|
If no usable route exists, the selected route disappears, or it has no models,
|
|
200
283
|
CAIT falls back to offline glossary substitution and says so in the UI and in the
|
|
@@ -217,8 +300,8 @@ provider/model/code/status; the client receives only `MT_PROVIDER_FAILED`.
|
|
|
217
300
|
| SDLXLIFF | ✅ | ✅ | Basic XLIFF 1.2 path; SDL-specific extensions are not round-tripped |
|
|
218
301
|
| HTML | ✅ | ✅ | Text blocks and inline tags preserved; document CSS/layout is not rebuilt |
|
|
219
302
|
| JSON | ✅ | ✅ | String-path subset; object/array structure preserved via a template; keys and numbers are not translated |
|
|
220
|
-
| XLSX | ✅ | ✅ |
|
|
221
|
-
| PPTX | ✅ |
|
|
303
|
+
| XLSX | ✅ | ✅ | All worksheets; source/target columns (or headers); source-preserving patch keeps styles, merges, and other sheets; formulas are skipped |
|
|
304
|
+
| PPTX | ✅ | ✅ | Source-preserving export; requires the imported `.pptx` package. Body text and speaker notes; charts/SmartArt not imported. |
|
|
222
305
|
| RTF | ✅ | ✅ | Basic paragraphs, `\uN`, `\'hh`, control words; original styling not round-tripped |
|
|
223
306
|
|
|
224
307
|
\* PPTX export fails with `PPTX_SOURCE_REQUIRED` when the retained source package
|
|
@@ -263,7 +346,7 @@ In DSH Desktop (or any profile with the `plugin_manager` tool):
|
|
|
263
346
|
plugin_manager install_bundle target: dsh-cait
|
|
264
347
|
```
|
|
265
348
|
|
|
266
|
-
Pin a release with `dsh-cait@1.1.
|
|
349
|
+
Pin a release with `dsh-cait@1.1.7`, or ask for the newest one with
|
|
267
350
|
`dsh-cait@latest`. The manager resolves the registry package, applies the bundle
|
|
268
351
|
patch, and activates the plugin — no hand-written profile rows.
|
|
269
352
|
|
|
@@ -365,8 +448,14 @@ confirmed becomes `translated` with `origin: manual`.
|
|
|
365
448
|
| `cat_propose_translation` | Leave a suggestion plus a reason without touching the confirmed target |
|
|
366
449
|
| `cat_align` | Align two texts and report high / to-review / doubtful pairs |
|
|
367
450
|
| `cat_consistency_report` | Group repeated sources that carry different translations |
|
|
368
|
-
| `cat_term_candidates` | Mining shortlist
|
|
451
|
+
| `cat_term_candidates` | Mining shortlist, including one-off proper names, with type/confidence and evidence |
|
|
452
|
+
| `cat_get_brief` | Read the document brief before translating |
|
|
453
|
+
| `cat_set_brief` | Update brief fields, or clear the whole brief |
|
|
454
|
+
| `cat_get_context` | Brief, current segment, previous/next sources, and paragraph around a segment |
|
|
455
|
+
| `cat_unconfirm_segment` | Revoke a confirmation without deleting the text or TM entry |
|
|
456
|
+
| `cat_concordance` | Search every mounted TM for a word or phrase in source or target |
|
|
369
457
|
| `cat_add_terms` | Add accepted terminology to a library in one batch |
|
|
458
|
+
| `cat_review` | Ask the model for structured review suggestions; never writes the document |
|
|
370
459
|
|
|
371
460
|
An agent can therefore draft a whole document without clicking in the UI:
|
|
372
461
|
`cat_pre_translate` with `from: next` until `next` is `null`, then
|
|
@@ -383,7 +472,7 @@ document the user has open.
|
|
|
383
472
|
flowchart LR
|
|
384
473
|
UI["DSH Web UI<br/>(sidebar + workbench)"] --> Client["client.js<br/>generated Web bundle"]
|
|
385
474
|
Client --> API["/cait/api/rpc<br/>same-origin JSON"]
|
|
386
|
-
Tools["
|
|
475
|
+
Tools["21 agent tools"] --> Store["CatStore"]
|
|
387
476
|
API --> Store
|
|
388
477
|
Store --> Snapshot[("store.json<br/>+ sources/")]
|
|
389
478
|
```
|
|
@@ -477,13 +566,18 @@ node _dev/test-qa.mjs
|
|
|
477
566
|
node _dev/test-library-crud.mjs
|
|
478
567
|
node _dev/test-library-view.mjs
|
|
479
568
|
node _dev/test-pagination.mjs
|
|
569
|
+
node _dev/test-replace.mjs
|
|
570
|
+
node _dev/test-notes.mjs
|
|
571
|
+
node _dev/test-lock.mjs
|
|
572
|
+
node _dev/test-segment-edit.mjs
|
|
573
|
+
node _dev/test-review.mjs
|
|
480
574
|
node _dev/test-theme-tokens.mjs
|
|
481
575
|
node _dev/test-e2e-1.1.mjs
|
|
482
576
|
```
|
|
483
577
|
|
|
484
578
|
The import/export fixtures are `_dev/sample.docx`, `_dev/sample-table.docx`, and
|
|
485
579
|
`_dev/sample-format.docx`; regenerate them with the matching
|
|
486
|
-
`python _dev/make-*.py` scripts. All
|
|
580
|
+
`python _dev/make-*.py` scripts. All 36 suites should pass.
|
|
487
581
|
|
|
488
582
|
### Releasing
|
|
489
583
|
|
|
@@ -531,27 +625,35 @@ GitHub with a release.
|
|
|
531
625
|
[PDF is not supported](#pdf-is-not-supported)). No image OCR yet.
|
|
532
626
|
- EPUB import follows the spine and body XHTML text blocks; DRM-protected,
|
|
533
627
|
fixed-layout, scripted, and MathML-heavy books are not supported.
|
|
534
|
-
- DOCX import
|
|
535
|
-
|
|
628
|
+
- DOCX import covers body, tables, headers, footers, footnotes, and endnotes;
|
|
629
|
+
fields, alt text, and tracked deletions still stay in the source language.
|
|
536
630
|
- Mixed-run DOCX/PPTX paragraphs inherit the first run's formatting.
|
|
537
|
-
- PPTX import covers body text
|
|
538
|
-
- XLSX
|
|
539
|
-
|
|
631
|
+
- PPTX import covers body text and speaker notes, not charts or SmartArt.
|
|
632
|
+
- XLSX export needs a target column to patch; formula cells are skipped, and a
|
|
633
|
+
workbook imported before 1.1.7 has no retained source to patch.
|
|
634
|
+
- Nested YAML supports mappings, sequences, scalars, block scalars, and
|
|
635
|
+
comments; anchors, aliases, merge keys, and flow collections are rejected
|
|
636
|
+
with `LOCALIZATION_YAML_UNSUPPORTED`.
|
|
540
637
|
- HTML/RTF export does not round-trip original styling; JSON translates string
|
|
541
638
|
values only.
|
|
542
639
|
- TM matching is lexical, not semantic; no stemming, synonyms, or embeddings.
|
|
543
640
|
- One translation per source text per context: a repeated sentence keeps a
|
|
544
641
|
separate variant for each surrounding pair, capped at 8 variants per key, and
|
|
545
642
|
reuses the generic entry when the neighbours differ.
|
|
546
|
-
-
|
|
547
|
-
project metadata
|
|
643
|
+
- TM context is the two neighbouring source sentences only; the document brief
|
|
644
|
+
and project metadata are used by MT prompts but are not part of TM scoring.
|
|
548
645
|
- TBX and JSON glossary exports are one-way; only TMX and CSV import back.
|
|
549
646
|
- The workbench UI ships in Chinese, English, and Japanese, switchable in
|
|
550
647
|
Settings; this README ships in English, Simplified Chinese, and Japanese, and
|
|
551
648
|
the English version is the source of truth.
|
|
552
649
|
|
|
553
|
-
|
|
554
|
-
|
|
650
|
+
Shipped since 1.1.5: per-document TM/glossary binding, word-count and leverage
|
|
651
|
+
analysis, bilingual DOCX review output, and an XLIFF review package. 1.1.6 added
|
|
652
|
+
find/replace, segment merge/split/lock, comments, local undo, and an optional LLM
|
|
653
|
+
review pass. 1.1.7 added DOCX tables/headers/footnotes, nested localization
|
|
654
|
+
catalogs, source-preserving multi-sheet XLSX, speaker notes, and subtitle
|
|
655
|
+
timeline controls. Next candidates: Office paragraph mapping for merge/split
|
|
656
|
+
and a subtitle waveform.
|
|
555
657
|
|
|
556
658
|
## Changelog and versioning
|
|
557
659
|
|
|
@@ -564,8 +666,13 @@ and the PDF policy, `v1.1.0` adds agent-driven pre-translation, the
|
|
|
564
666
|
three-state segment model, stacked review, and advisory QA, `v1.1.1` adds
|
|
565
667
|
the library workspace with TMX/TBX/CSV/JSON export, segment paging, and the
|
|
566
668
|
panel-to-library jump, `v1.1.2` adds context-aware memory with 101% (ICE)
|
|
567
|
-
matches,
|
|
568
|
-
|
|
669
|
+
matches, `v1.1.3` adds two-file alignment, automatic propagation of repeated
|
|
670
|
+
segments, terminology mining, and the proposal primitive agents use, and
|
|
671
|
+
`v1.1.4` adds the document brief, context-aware batch pre-translation,
|
|
672
|
+
forbidden/preferred terminology, risk-graded QA with one-click fixes,
|
|
673
|
+
concordance, and undo confirmation, and `v1.1.5` adds per-document TM/glossary
|
|
674
|
+
scopes, word-count and leverage analysis, bilingual DOCX and XLIFF review
|
|
675
|
+
packages, and TM maintenance.
|
|
569
676
|
The project
|
|
570
677
|
was developed as `0.1.0` and renumbered for the GitHub release.
|
|
571
678
|
|