@_linked/translation 0.2.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.
- package/README.md +102 -0
- package/lib/cjs/data/translation.json +8 -0
- package/lib/esm/archive.d.ts +133 -0
- package/lib/esm/archive.js +567 -0
- package/lib/esm/archive.js.map +1 -0
- package/lib/esm/authorization.d.ts +12 -0
- package/lib/esm/authorization.js +10 -0
- package/lib/esm/authorization.js.map +1 -0
- package/lib/esm/backend.d.ts +1 -0
- package/lib/esm/backend.js +3 -0
- package/lib/esm/backend.js.map +1 -0
- package/lib/esm/cdn-loader.d.ts +40 -0
- package/lib/esm/cdn-loader.js +200 -0
- package/lib/esm/cdn-loader.js.map +1 -0
- package/lib/esm/checks.d.ts +56 -0
- package/lib/esm/checks.js +288 -0
- package/lib/esm/checks.js.map +1 -0
- package/lib/esm/compile.d.ts +64 -0
- package/lib/esm/compile.js +99 -0
- package/lib/esm/compile.js.map +1 -0
- package/lib/esm/core/messages.d.ts +25 -0
- package/lib/esm/core/messages.js +76 -0
- package/lib/esm/core/messages.js.map +1 -0
- package/lib/esm/data/translation.json +8 -0
- package/lib/esm/discovery.d.ts +97 -0
- package/lib/esm/discovery.js +365 -0
- package/lib/esm/discovery.js.map +1 -0
- package/lib/esm/exchange.d.ts +100 -0
- package/lib/esm/exchange.js +223 -0
- package/lib/esm/exchange.js.map +1 -0
- package/lib/esm/export.d.ts +28 -0
- package/lib/esm/export.js +92 -0
- package/lib/esm/export.js.map +1 -0
- package/lib/esm/formats/csv.d.ts +8 -0
- package/lib/esm/formats/csv.js +397 -0
- package/lib/esm/formats/csv.js.map +1 -0
- package/lib/esm/formats/json.d.ts +30 -0
- package/lib/esm/formats/json.js +459 -0
- package/lib/esm/formats/json.js.map +1 -0
- package/lib/esm/formats/xliff.d.ts +12 -0
- package/lib/esm/formats/xliff.js +577 -0
- package/lib/esm/formats/xliff.js.map +1 -0
- package/lib/esm/import.d.ts +197 -0
- package/lib/esm/import.js +391 -0
- package/lib/esm/import.js.map +1 -0
- package/lib/esm/index.d.ts +42 -0
- package/lib/esm/index.js +34 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/key-sync-node.d.ts +29 -0
- package/lib/esm/key-sync-node.js +174 -0
- package/lib/esm/key-sync-node.js.map +1 -0
- package/lib/esm/key-sync.d.ts +46 -0
- package/lib/esm/key-sync.js +114 -0
- package/lib/esm/key-sync.js.map +1 -0
- package/lib/esm/key-version.d.ts +50 -0
- package/lib/esm/key-version.js +134 -0
- package/lib/esm/key-version.js.map +1 -0
- package/lib/esm/languages.d.ts +18 -0
- package/lib/esm/languages.js +74 -0
- package/lib/esm/languages.js.map +1 -0
- package/lib/esm/linked-discovery.d.ts +44 -0
- package/lib/esm/linked-discovery.js +267 -0
- package/lib/esm/linked-discovery.js.map +1 -0
- package/lib/esm/message-format.d.ts +41 -0
- package/lib/esm/message-format.js +133 -0
- package/lib/esm/message-format.js.map +1 -0
- package/lib/esm/mt.d.ts +111 -0
- package/lib/esm/mt.js +142 -0
- package/lib/esm/mt.js.map +1 -0
- package/lib/esm/ontologies/translation.d.ts +203 -0
- package/lib/esm/ontologies/translation.js +219 -0
- package/lib/esm/ontologies/translation.js.map +1 -0
- package/lib/esm/package.d.ts +4 -0
- package/lib/esm/package.js +11 -0
- package/lib/esm/package.js.map +1 -0
- package/lib/esm/react.d.ts +55 -0
- package/lib/esm/react.js +127 -0
- package/lib/esm/react.js.map +1 -0
- package/lib/esm/records.d.ts +151 -0
- package/lib/esm/records.js +2 -0
- package/lib/esm/records.js.map +1 -0
- package/lib/esm/release.d.ts +198 -0
- package/lib/esm/release.js +435 -0
- package/lib/esm/release.js.map +1 -0
- package/lib/esm/shape-catalog.d.ts +79 -0
- package/lib/esm/shape-catalog.js +118 -0
- package/lib/esm/shape-catalog.js.map +1 -0
- package/lib/esm/shapes/GlossaryTerm.d.ts +28 -0
- package/lib/esm/shapes/GlossaryTerm.js +94 -0
- package/lib/esm/shapes/GlossaryTerm.js.map +1 -0
- package/lib/esm/shapes/TranslationInventoryOrigin.d.ts +33 -0
- package/lib/esm/shapes/TranslationInventoryOrigin.js +209 -0
- package/lib/esm/shapes/TranslationInventoryOrigin.js.map +1 -0
- package/lib/esm/shapes/TranslationKey.d.ts +92 -0
- package/lib/esm/shapes/TranslationKey.js +194 -0
- package/lib/esm/shapes/TranslationKey.js.map +1 -0
- package/lib/esm/shapes/TranslationKeyVersion.d.ts +19 -0
- package/lib/esm/shapes/TranslationKeyVersion.js +125 -0
- package/lib/esm/shapes/TranslationKeyVersion.js.map +1 -0
- package/lib/esm/shapes/TranslationLanguage.d.ts +15 -0
- package/lib/esm/shapes/TranslationLanguage.js +102 -0
- package/lib/esm/shapes/TranslationLanguage.js.map +1 -0
- package/lib/esm/shapes/TranslationProvider.d.ts +409 -0
- package/lib/esm/shapes/TranslationProvider.js +1376 -0
- package/lib/esm/shapes/TranslationProvider.js.map +1 -0
- package/lib/esm/shapes/TranslationRelease.d.ts +36 -0
- package/lib/esm/shapes/TranslationRelease.js +149 -0
- package/lib/esm/shapes/TranslationRelease.js.map +1 -0
- package/lib/esm/shapes/TranslationRevision.d.ts +39 -0
- package/lib/esm/shapes/TranslationRevision.js +159 -0
- package/lib/esm/shapes/TranslationRevision.js.map +1 -0
- package/lib/esm/shapes/TranslationUnit.d.ts +26 -0
- package/lib/esm/shapes/TranslationUnit.js +111 -0
- package/lib/esm/shapes/TranslationUnit.js.map +1 -0
- package/package.json +134 -0
- package/src/archive.ts +894 -0
- package/src/authorization.ts +33 -0
- package/src/backend.ts +2 -0
- package/src/cdn-loader.ts +264 -0
- package/src/checks.ts +413 -0
- package/src/compile.ts +168 -0
- package/src/core/messages.ts +106 -0
- package/src/data/translation.json +8 -0
- package/src/discovery.ts +594 -0
- package/src/exchange.ts +428 -0
- package/src/export.ts +135 -0
- package/src/formats/csv.ts +459 -0
- package/src/formats/json.ts +587 -0
- package/src/formats/xliff.ts +708 -0
- package/src/import.ts +648 -0
- package/src/index.ts +207 -0
- package/src/key-sync-node.ts +269 -0
- package/src/key-sync.ts +168 -0
- package/src/key-version.ts +206 -0
- package/src/languages.ts +102 -0
- package/src/linked-discovery.ts +385 -0
- package/src/message-format.ts +214 -0
- package/src/mt.ts +248 -0
- package/src/ontologies/translation.ts +234 -0
- package/src/package.ts +19 -0
- package/src/react.tsx +250 -0
- package/src/records.ts +180 -0
- package/src/release.ts +726 -0
- package/src/shape-catalog.ts +198 -0
- package/src/shapes/GlossaryTerm.ts +61 -0
- package/src/shapes/TranslationInventoryOrigin.ts +131 -0
- package/src/shapes/TranslationKey.ts +174 -0
- package/src/shapes/TranslationKeyVersion.ts +77 -0
- package/src/shapes/TranslationLanguage.ts +51 -0
- package/src/shapes/TranslationProvider.ts +1755 -0
- package/src/shapes/TranslationRelease.ts +114 -0
- package/src/shapes/TranslationRevision.ts +105 -0
- package/src/shapes/TranslationUnit.ts +72 -0
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
import { normalizeParsedTranslationExchangeDocument, validateTranslationExchangeDocument, } from '../exchange.js';
|
|
2
|
+
const ESCAPING_VERSION = 'apostrophe-v1';
|
|
3
|
+
/**
|
|
4
|
+
* One row represents one key/language pair. Document and key-version metadata
|
|
5
|
+
* are repeated deliberately so a CSV remains useful after spreadsheet tools
|
|
6
|
+
* reorder or filter its rows.
|
|
7
|
+
*/
|
|
8
|
+
export const TRANSLATION_CSV_COLUMNS = [
|
|
9
|
+
'schemaVersion',
|
|
10
|
+
'appId',
|
|
11
|
+
'branchId',
|
|
12
|
+
'sourceLanguage',
|
|
13
|
+
'targetLanguage',
|
|
14
|
+
'key',
|
|
15
|
+
'namespace',
|
|
16
|
+
'kind',
|
|
17
|
+
'sourceText',
|
|
18
|
+
'targetText',
|
|
19
|
+
'state',
|
|
20
|
+
'note',
|
|
21
|
+
'description',
|
|
22
|
+
'format',
|
|
23
|
+
'keyVersionId',
|
|
24
|
+
'sourceHash',
|
|
25
|
+
'contractHash',
|
|
26
|
+
'argumentSignature',
|
|
27
|
+
'exportedAt',
|
|
28
|
+
'revisionWatermark',
|
|
29
|
+
'contractSetHash',
|
|
30
|
+
'createNowEscaping',
|
|
31
|
+
];
|
|
32
|
+
const REQUIRED_COLUMNS = [
|
|
33
|
+
'sourceLanguage',
|
|
34
|
+
'targetLanguage',
|
|
35
|
+
'key',
|
|
36
|
+
'targetText',
|
|
37
|
+
];
|
|
38
|
+
const DOCUMENT_COLUMNS = [
|
|
39
|
+
'appId',
|
|
40
|
+
'branchId',
|
|
41
|
+
'sourceLanguage',
|
|
42
|
+
'exportedAt',
|
|
43
|
+
'revisionWatermark',
|
|
44
|
+
'contractSetHash',
|
|
45
|
+
];
|
|
46
|
+
const ENTRY_COLUMNS = [
|
|
47
|
+
'kind',
|
|
48
|
+
'sourceText',
|
|
49
|
+
'description',
|
|
50
|
+
'format',
|
|
51
|
+
'keyVersionId',
|
|
52
|
+
'sourceHash',
|
|
53
|
+
'contractHash',
|
|
54
|
+
'argumentSignature',
|
|
55
|
+
];
|
|
56
|
+
function compareText(left, right) {
|
|
57
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
58
|
+
}
|
|
59
|
+
function isSpreadsheetDangerous(value) {
|
|
60
|
+
return /^[=+\-@\t\r]/u.test(value);
|
|
61
|
+
}
|
|
62
|
+
function protectSpreadsheetCell(value) {
|
|
63
|
+
return isSpreadsheetDangerous(value) ? `'${value}` : value;
|
|
64
|
+
}
|
|
65
|
+
function restoreSpreadsheetCell(value, escaping, column) {
|
|
66
|
+
var _a;
|
|
67
|
+
const [version, columns = ''] = (_a = escaping === null || escaping === void 0 ? void 0 : escaping.split(':', 2)) !== null && _a !== void 0 ? _a : [];
|
|
68
|
+
if (version === ESCAPING_VERSION &&
|
|
69
|
+
columns.split('|').includes(column) &&
|
|
70
|
+
value.startsWith("'") &&
|
|
71
|
+
isSpreadsheetDangerous(value.slice(1))) {
|
|
72
|
+
return value.slice(1);
|
|
73
|
+
}
|
|
74
|
+
return value;
|
|
75
|
+
}
|
|
76
|
+
function encodeCsvCell(value) {
|
|
77
|
+
const protectedValue = protectSpreadsheetCell(value);
|
|
78
|
+
return /[",\r\n]/u.test(protectedValue)
|
|
79
|
+
? `"${protectedValue.replace(/"/gu, '""')}"`
|
|
80
|
+
: protectedValue;
|
|
81
|
+
}
|
|
82
|
+
function parseCsvRows(text) {
|
|
83
|
+
const rows = [];
|
|
84
|
+
let row = [];
|
|
85
|
+
let field = '';
|
|
86
|
+
let quoted = false;
|
|
87
|
+
for (let index = 0; index < text.length; index += 1) {
|
|
88
|
+
const character = text[index];
|
|
89
|
+
if (quoted) {
|
|
90
|
+
if (character === '"') {
|
|
91
|
+
if (text[index + 1] === '"') {
|
|
92
|
+
field += '"';
|
|
93
|
+
index += 1;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
quoted = false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
field += character;
|
|
101
|
+
}
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (character === '"') {
|
|
105
|
+
if (field.length > 0) {
|
|
106
|
+
throw new Error('Malformed CSV: quote must begin an empty field.');
|
|
107
|
+
}
|
|
108
|
+
quoted = true;
|
|
109
|
+
}
|
|
110
|
+
else if (character === ',') {
|
|
111
|
+
row.push(field);
|
|
112
|
+
field = '';
|
|
113
|
+
}
|
|
114
|
+
else if (character === '\n' || character === '\r') {
|
|
115
|
+
row.push(field);
|
|
116
|
+
rows.push(row);
|
|
117
|
+
row = [];
|
|
118
|
+
field = '';
|
|
119
|
+
if (character === '\r' && text[index + 1] === '\n')
|
|
120
|
+
index += 1;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
field += character;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (quoted)
|
|
127
|
+
throw new Error('Malformed CSV: unterminated quoted field.');
|
|
128
|
+
if (row.length > 0 || field.length > 0) {
|
|
129
|
+
row.push(field);
|
|
130
|
+
rows.push(row);
|
|
131
|
+
}
|
|
132
|
+
return rows;
|
|
133
|
+
}
|
|
134
|
+
function decodeUtf8(input) {
|
|
135
|
+
try {
|
|
136
|
+
return new TextDecoder('utf-8', { fatal: true })
|
|
137
|
+
.decode(input)
|
|
138
|
+
.replace(/^\uFEFF/u, '');
|
|
139
|
+
}
|
|
140
|
+
catch (_a) {
|
|
141
|
+
throw new Error('Translation CSV must be valid UTF-8.');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function optional(value) {
|
|
145
|
+
return value === undefined || value === '' ? undefined : value;
|
|
146
|
+
}
|
|
147
|
+
function entryKind(value) {
|
|
148
|
+
if (value === undefined || value === '' || value === 'ui')
|
|
149
|
+
return 'ui';
|
|
150
|
+
if (value === 'semantic')
|
|
151
|
+
return 'semantic';
|
|
152
|
+
throw new Error(`Translation CSV kind "${value}" is invalid.`);
|
|
153
|
+
}
|
|
154
|
+
function entryFormat(value) {
|
|
155
|
+
if (value === undefined || value === '' || value === 'simple')
|
|
156
|
+
return 'simple';
|
|
157
|
+
if (value === 'icu')
|
|
158
|
+
return 'icu';
|
|
159
|
+
throw new Error(`Translation CSV format "${value}" is invalid.`);
|
|
160
|
+
}
|
|
161
|
+
function rowsToRecords(rows) {
|
|
162
|
+
if (rows.length === 0)
|
|
163
|
+
throw new Error('Translation CSV is empty.');
|
|
164
|
+
const header = rows[0];
|
|
165
|
+
const knownColumns = new Set(TRANSLATION_CSV_COLUMNS);
|
|
166
|
+
const seen = new Set();
|
|
167
|
+
for (const column of header) {
|
|
168
|
+
if (seen.has(column)) {
|
|
169
|
+
throw new Error(`Translation CSV has duplicate column "${column}".`);
|
|
170
|
+
}
|
|
171
|
+
seen.add(column);
|
|
172
|
+
}
|
|
173
|
+
for (const required of REQUIRED_COLUMNS) {
|
|
174
|
+
if (!seen.has(required)) {
|
|
175
|
+
throw new Error(`Translation CSV is missing required column "${required}".`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const records = [];
|
|
179
|
+
for (let rowIndex = 1; rowIndex < rows.length; rowIndex += 1) {
|
|
180
|
+
const values = rows[rowIndex];
|
|
181
|
+
if (values.every((value) => value === ''))
|
|
182
|
+
continue;
|
|
183
|
+
if (values.length > header.length) {
|
|
184
|
+
throw new Error(`Translation CSV row ${rowIndex + 1} has more values than its header.`);
|
|
185
|
+
}
|
|
186
|
+
const raw = {};
|
|
187
|
+
header.forEach((column, index) => {
|
|
188
|
+
var _a;
|
|
189
|
+
if (knownColumns.has(column))
|
|
190
|
+
raw[column] = (_a = values[index]) !== null && _a !== void 0 ? _a : '';
|
|
191
|
+
});
|
|
192
|
+
const escaping = raw.createNowEscaping;
|
|
193
|
+
const record = {};
|
|
194
|
+
for (const column of TRANSLATION_CSV_COLUMNS) {
|
|
195
|
+
if (raw[column] !== undefined) {
|
|
196
|
+
record[column] = restoreSpreadsheetCell(raw[column], escaping, column);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
records.push(record);
|
|
200
|
+
}
|
|
201
|
+
if (records.length === 0) {
|
|
202
|
+
throw new Error('Translation CSV does not contain any translation rows.');
|
|
203
|
+
}
|
|
204
|
+
return records;
|
|
205
|
+
}
|
|
206
|
+
function assertConsistent(label, column, expected, actual) {
|
|
207
|
+
if (expected !== actual) {
|
|
208
|
+
throw new Error(`Translation CSV conflict for ${label}: column "${column}" is inconsistent.`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function parseDocument(records) {
|
|
212
|
+
const first = records[0];
|
|
213
|
+
if (optional(first.schemaVersion) !== undefined && first.schemaVersion !== '1') {
|
|
214
|
+
throw new Error('Translation CSV schemaVersion must be 1.');
|
|
215
|
+
}
|
|
216
|
+
const sourceLanguage = optional(first.sourceLanguage);
|
|
217
|
+
if (!sourceLanguage) {
|
|
218
|
+
throw new Error('Translation CSV sourceLanguage is required.');
|
|
219
|
+
}
|
|
220
|
+
for (const record of records.slice(1)) {
|
|
221
|
+
if (optional(record.schemaVersion) !== undefined &&
|
|
222
|
+
record.schemaVersion !== '1') {
|
|
223
|
+
throw new Error('Translation CSV schemaVersion must be 1.');
|
|
224
|
+
}
|
|
225
|
+
for (const column of DOCUMENT_COLUMNS) {
|
|
226
|
+
assertConsistent('document metadata', column, optional(first[column]), optional(record[column]));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
const targetLanguages = [...new Set(records.map((record) => {
|
|
230
|
+
const language = optional(record.targetLanguage);
|
|
231
|
+
if (!language)
|
|
232
|
+
throw new Error('Translation CSV targetLanguage is required.');
|
|
233
|
+
return language;
|
|
234
|
+
}))].sort(compareText);
|
|
235
|
+
const grouped = new Map();
|
|
236
|
+
records.forEach((record, index) => {
|
|
237
|
+
const key = optional(record.key);
|
|
238
|
+
if (!key)
|
|
239
|
+
throw new Error(`Translation CSV row ${index + 2} key is required.`);
|
|
240
|
+
const targetLanguage = optional(record.targetLanguage);
|
|
241
|
+
const namespace = optional(record.namespace);
|
|
242
|
+
const identity = `${namespace !== null && namespace !== void 0 ? namespace : ''}\u0000${key}`;
|
|
243
|
+
const existing = grouped.get(identity);
|
|
244
|
+
if (existing) {
|
|
245
|
+
for (const column of ENTRY_COLUMNS) {
|
|
246
|
+
assertConsistent(`key "${key}"`, column, optional(existing.evidence[column]), optional(record[column]));
|
|
247
|
+
}
|
|
248
|
+
if (existing.entry.translations[targetLanguage]) {
|
|
249
|
+
throw new Error(`Duplicate translation entry for "${key}" in ${targetLanguage}.`);
|
|
250
|
+
}
|
|
251
|
+
existing.entry.translations[targetLanguage] = translationValue(record);
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
const entry = {
|
|
255
|
+
key,
|
|
256
|
+
...(namespace ? { namespace } : {}),
|
|
257
|
+
kind: entryKind(record.kind),
|
|
258
|
+
format: entryFormat(record.format),
|
|
259
|
+
...(record.sourceText === undefined
|
|
260
|
+
? {}
|
|
261
|
+
: { sourceText: record.sourceText }),
|
|
262
|
+
...(optional(record.keyVersionId)
|
|
263
|
+
? { keyVersionId: record.keyVersionId }
|
|
264
|
+
: {}),
|
|
265
|
+
...(optional(record.sourceHash) ? { sourceHash: record.sourceHash } : {}),
|
|
266
|
+
...(optional(record.contractHash)
|
|
267
|
+
? { contractHash: record.contractHash }
|
|
268
|
+
: {}),
|
|
269
|
+
...(optional(record.argumentSignature)
|
|
270
|
+
? { argumentSignature: record.argumentSignature }
|
|
271
|
+
: {}),
|
|
272
|
+
...(optional(record.description)
|
|
273
|
+
? { description: record.description }
|
|
274
|
+
: {}),
|
|
275
|
+
translations: {
|
|
276
|
+
[targetLanguage]: translationValue(record),
|
|
277
|
+
},
|
|
278
|
+
};
|
|
279
|
+
grouped.set(identity, { entry, evidence: record });
|
|
280
|
+
});
|
|
281
|
+
return normalizeParsedTranslationExchangeDocument({
|
|
282
|
+
schemaVersion: 1,
|
|
283
|
+
...(optional(first.appId) ? { appId: first.appId } : {}),
|
|
284
|
+
...(optional(first.branchId) ? { branchId: first.branchId } : {}),
|
|
285
|
+
sourceLanguage,
|
|
286
|
+
targetLanguages,
|
|
287
|
+
...(optional(first.exportedAt) ? { exportedAt: first.exportedAt } : {}),
|
|
288
|
+
...(optional(first.revisionWatermark)
|
|
289
|
+
? { revisionWatermark: first.revisionWatermark }
|
|
290
|
+
: {}),
|
|
291
|
+
...(optional(first.contractSetHash)
|
|
292
|
+
? { contractSetHash: first.contractSetHash }
|
|
293
|
+
: {}),
|
|
294
|
+
entries: [...grouped.values()]
|
|
295
|
+
.map(({ entry }) => entry)
|
|
296
|
+
.sort((left, right) => {
|
|
297
|
+
var _a, _b;
|
|
298
|
+
return compareText((_a = left.namespace) !== null && _a !== void 0 ? _a : '', (_b = right.namespace) !== null && _b !== void 0 ? _b : '') ||
|
|
299
|
+
compareText(left.key, right.key);
|
|
300
|
+
}),
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
function translationValue(record) {
|
|
304
|
+
var _a;
|
|
305
|
+
return {
|
|
306
|
+
text: (_a = record.targetText) !== null && _a !== void 0 ? _a : '',
|
|
307
|
+
...(optional(record.state)
|
|
308
|
+
? { state: record.state }
|
|
309
|
+
: {}),
|
|
310
|
+
...(optional(record.note) ? { note: record.note } : {}),
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
function formulaEscapingMarker(record) {
|
|
314
|
+
const escapedColumns = TRANSLATION_CSV_COLUMNS.filter((column) => {
|
|
315
|
+
var _a;
|
|
316
|
+
return column !== 'createNowEscaping' &&
|
|
317
|
+
isSpreadsheetDangerous((_a = record[column]) !== null && _a !== void 0 ? _a : '');
|
|
318
|
+
});
|
|
319
|
+
return `${ESCAPING_VERSION}:${escapedColumns.join('|')}`;
|
|
320
|
+
}
|
|
321
|
+
function serializeRows(document) {
|
|
322
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
323
|
+
const normalized = validateTranslationExchangeDocument(document);
|
|
324
|
+
const languages = [...new Set([
|
|
325
|
+
...normalized.targetLanguages,
|
|
326
|
+
...normalized.entries.flatMap((entry) => Object.keys(entry.translations)),
|
|
327
|
+
])].sort(compareText);
|
|
328
|
+
if (languages.length === 0 && normalized.entries.length > 0) {
|
|
329
|
+
throw new Error('Translation CSV export requires a target language.');
|
|
330
|
+
}
|
|
331
|
+
const records = [];
|
|
332
|
+
const entries = [...normalized.entries].sort((left, right) => {
|
|
333
|
+
var _a, _b;
|
|
334
|
+
return compareText((_a = left.namespace) !== null && _a !== void 0 ? _a : '', (_b = right.namespace) !== null && _b !== void 0 ? _b : '') ||
|
|
335
|
+
compareText(left.key, right.key);
|
|
336
|
+
});
|
|
337
|
+
for (const entry of entries) {
|
|
338
|
+
for (const targetLanguage of languages) {
|
|
339
|
+
const translation = entry.translations[targetLanguage];
|
|
340
|
+
const record = {
|
|
341
|
+
schemaVersion: '1',
|
|
342
|
+
appId: (_a = normalized.appId) !== null && _a !== void 0 ? _a : '',
|
|
343
|
+
branchId: (_b = normalized.branchId) !== null && _b !== void 0 ? _b : '',
|
|
344
|
+
sourceLanguage: normalized.sourceLanguage,
|
|
345
|
+
targetLanguage,
|
|
346
|
+
key: entry.key,
|
|
347
|
+
namespace: (_c = entry.namespace) !== null && _c !== void 0 ? _c : '',
|
|
348
|
+
kind: entry.kind,
|
|
349
|
+
sourceText: entry.sourceText,
|
|
350
|
+
targetText: (_d = translation === null || translation === void 0 ? void 0 : translation.text) !== null && _d !== void 0 ? _d : '',
|
|
351
|
+
state: (_e = translation === null || translation === void 0 ? void 0 : translation.state) !== null && _e !== void 0 ? _e : '',
|
|
352
|
+
note: (_f = translation === null || translation === void 0 ? void 0 : translation.note) !== null && _f !== void 0 ? _f : '',
|
|
353
|
+
description: (_g = entry.description) !== null && _g !== void 0 ? _g : '',
|
|
354
|
+
format: entry.format,
|
|
355
|
+
keyVersionId: entry.keyVersionId,
|
|
356
|
+
sourceHash: entry.sourceHash,
|
|
357
|
+
contractHash: entry.contractHash,
|
|
358
|
+
argumentSignature: entry.argumentSignature,
|
|
359
|
+
exportedAt: (_h = normalized.exportedAt) !== null && _h !== void 0 ? _h : '',
|
|
360
|
+
revisionWatermark: (_j = normalized.revisionWatermark) !== null && _j !== void 0 ? _j : '',
|
|
361
|
+
contractSetHash: (_k = normalized.contractSetHash) !== null && _k !== void 0 ? _k : '',
|
|
362
|
+
};
|
|
363
|
+
record.createNowEscaping = formulaEscapingMarker(record);
|
|
364
|
+
records.push(record);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
return [
|
|
368
|
+
TRANSLATION_CSV_COLUMNS.join(','),
|
|
369
|
+
...records.map((record) => TRANSLATION_CSV_COLUMNS.map((column) => { var _a; return encodeCsvCell((_a = record[column]) !== null && _a !== void 0 ? _a : ''); }).join(',')),
|
|
370
|
+
].join('\r\n');
|
|
371
|
+
}
|
|
372
|
+
export const translationCsvAdapter = {
|
|
373
|
+
format: 'csv',
|
|
374
|
+
sniff(input, fileName) {
|
|
375
|
+
var _a;
|
|
376
|
+
if (fileName === null || fileName === void 0 ? void 0 : fileName.toLowerCase().endsWith('.csv'))
|
|
377
|
+
return true;
|
|
378
|
+
try {
|
|
379
|
+
const header = (_a = parseCsvRows(decodeUtf8(input))[0]) !== null && _a !== void 0 ? _a : [];
|
|
380
|
+
return REQUIRED_COLUMNS.every((column) => header.includes(column));
|
|
381
|
+
}
|
|
382
|
+
catch (_b) {
|
|
383
|
+
return false;
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
async parse(input) {
|
|
387
|
+
return parseDocument(rowsToRecords(parseCsvRows(decodeUtf8(input))));
|
|
388
|
+
},
|
|
389
|
+
async serialize(document) {
|
|
390
|
+
return {
|
|
391
|
+
fileName: 'translations.csv',
|
|
392
|
+
mediaType: 'text/csv;charset=utf-8',
|
|
393
|
+
body: new TextEncoder().encode(serializeRows(document)),
|
|
394
|
+
};
|
|
395
|
+
},
|
|
396
|
+
};
|
|
397
|
+
//# sourceMappingURL=csv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../../../src/formats/csv.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type ParsedTranslationExchangeDocument, type SerializedTranslationDocument, type TranslationExchangeDocument, type TranslationFormatAdapter } from '../exchange.js';
|
|
2
|
+
export type I18nextJsonLayout = 'flat' | 'nested';
|
|
3
|
+
export interface TranslationJsonArchiveLimits {
|
|
4
|
+
maxEntries: number;
|
|
5
|
+
maxArchiveBytes: number;
|
|
6
|
+
maxEntryCompressedBytes: number;
|
|
7
|
+
maxEntryUncompressedBytes: number;
|
|
8
|
+
maxTotalUncompressedBytes: number;
|
|
9
|
+
maxCompressionRatio: number;
|
|
10
|
+
}
|
|
11
|
+
export declare const DEFAULT_TRANSLATION_JSON_ARCHIVE_LIMITS: TranslationJsonArchiveLimits;
|
|
12
|
+
export interface TranslationJsonParseOptions {
|
|
13
|
+
/** Required when a standalone filename does not begin with a BCP-47 tag. */
|
|
14
|
+
language?: string;
|
|
15
|
+
/** Standalone JSON has no source evidence, so this defaults to `und`. */
|
|
16
|
+
sourceLanguage?: string;
|
|
17
|
+
/** Tolgee's default namespace is exposed as unprefixed runtime keys. */
|
|
18
|
+
defaultNamespace?: string;
|
|
19
|
+
fileName?: string;
|
|
20
|
+
limits?: Partial<TranslationJsonArchiveLimits>;
|
|
21
|
+
}
|
|
22
|
+
export interface TranslationJsonSerializeOptions {
|
|
23
|
+
layout?: I18nextJsonLayout;
|
|
24
|
+
limits?: Partial<TranslationJsonArchiveLimits>;
|
|
25
|
+
}
|
|
26
|
+
export declare function translationZipLimits(overrides?: Partial<TranslationJsonArchiveLimits>): TranslationJsonArchiveLimits;
|
|
27
|
+
export declare function safeUnzipTranslationZip(input: Uint8Array, overrides?: Partial<TranslationJsonArchiveLimits>): Record<string, Uint8Array>;
|
|
28
|
+
export declare function parseI18nextJson(input: Uint8Array, options?: TranslationJsonParseOptions): ParsedTranslationExchangeDocument;
|
|
29
|
+
export declare function serializeI18nextJsonZip(document: TranslationExchangeDocument, options?: TranslationJsonSerializeOptions): SerializedTranslationDocument;
|
|
30
|
+
export declare const i18nextJsonFormatAdapter: TranslationFormatAdapter;
|