@katerynakhar/i18n-keeper 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -1
- package/dist/check.js +74 -4
- package/dist/check.js.map +1 -1
- package/dist/placeholders.d.ts +8 -2
- package/dist/placeholders.js +60 -4
- package/dist/placeholders.js.map +1 -1
- package/dist/plurals.d.ts +10 -0
- package/dist/plurals.js +47 -0
- package/dist/plurals.js.map +1 -1
- package/dist/translate.js +2 -1
- package/dist/translate.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -1
- package/package.json +3 -2
- package/src/check.ts +101 -3
- package/src/placeholders.ts +63 -4
- package/src/plurals.ts +54 -0
- package/src/translate.ts +3 -2
- package/src/types.ts +6 -0
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# i18n-keeper
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@katerynakhar/i18n-keeper)
|
|
3
4
|
[](https://github.com/katerynaKhar/i18n-keeper/actions/workflows/ci.yml)
|
|
5
|
+
[](https://nodejs.org)
|
|
4
6
|
|
|
5
7
|
Deterministic linter for JSON, Laravel PHP, gettext and YAML locale files, as a
|
|
6
8
|
CLI and an MCP server. No LLM, no network, no API key — every finding is mechanically
|
|
@@ -42,6 +44,7 @@ errors
|
|
|
42
44
|
| `icu_syntax_error` | error | Malformed ICU message — throws at format time |
|
|
43
45
|
| `plural_missing_category` | warning | Plural lacks a form the target language requires |
|
|
44
46
|
| `plural_extra_category` | warning | Plural branch the target language never selects |
|
|
47
|
+
| `plural_needs_placeholder` | warning | Source form names its quantity in words; the target's category covers more numbers than that |
|
|
45
48
|
| `plural_selector_lost` | warning | Laravel `a|b` selection flattened to one form |
|
|
46
49
|
| `dnt_violation` | warning | A do-not-translate token did not survive |
|
|
47
50
|
| `glossary_violation` | warning | A glossary term rendered with an unapproved word |
|
|
@@ -268,6 +271,36 @@ CLDR, so it is not judged against CLDR categories. The one unambiguous failure
|
|
|
268
271
|
a source that selects between forms translated as a single form — is reported as
|
|
269
272
|
`plural_selector_lost`.
|
|
270
273
|
|
|
274
|
+
### When the source itself is not enough
|
|
275
|
+
|
|
276
|
+
`one` does not mean one everywhere. English `one` is exactly 1, so English can
|
|
277
|
+
write
|
|
278
|
+
|
|
279
|
+
```yaml
|
|
280
|
+
less_than_x_minutes:
|
|
281
|
+
one: less than a minute
|
|
282
|
+
other: less than %{count} minutes
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
and be complete. Bosnian `one` also covers 21, 31 and 41; Slovenian `one` also
|
|
286
|
+
covers 101; Scottish Gaelic `one` also covers 11. A translation that copies the
|
|
287
|
+
English shape — *manje od minute*, *manj kot ena minuta* — then tells a Bosnian
|
|
288
|
+
reader that twenty-one minutes is less than one.
|
|
289
|
+
|
|
290
|
+
No comparison against the source can find this, because nothing is missing
|
|
291
|
+
relative to the source: the source form is correct for its own language and
|
|
292
|
+
insufficient for another. `plural_needs_placeholder` reports it, naming the
|
|
293
|
+
numbers that break:
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
bs ….less_than_x_minutes.one %{count} dropped, but one in bs also covers 21, 31, 41
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Only quantities above one count. Several languages — French, Hindi, Persian —
|
|
300
|
+
put 0 in `one` as well, but that is a fact about agreement rather than about
|
|
301
|
+
quantity: zero minutes really is less than a minute. Requiring a count there
|
|
302
|
+
would report a dozen locales for nothing.
|
|
303
|
+
|
|
271
304
|
## Placeholder syntaxes
|
|
272
305
|
|
|
273
306
|
Detected by default: `{{name}}` (mustache/i18next), `{name}` and
|
|
@@ -283,6 +316,34 @@ language files, a `composer.json`, or a `lang/` directory — because Laravel
|
|
|
283
316
|
keeps string-keyed translations in `lang/xx.json`, placeholders and all, so the
|
|
284
317
|
file extension alone would miss them. `--syntax` overrides the choice.
|
|
285
318
|
|
|
319
|
+
### Compared the way the framework substitutes
|
|
320
|
+
|
|
321
|
+
A placeholder is judged against how it will actually be replaced at runtime,
|
|
322
|
+
not against how it looks.
|
|
323
|
+
|
|
324
|
+
Laravel substitutes with `strtr()`, which needs no word boundary on either
|
|
325
|
+
side. Somali writes `:attributeka` and Shona writes `ne:terms_of_service`; both
|
|
326
|
+
render correctly, because `strtr` replaces the name it finds and leaves the rest
|
|
327
|
+
of the word alone. Read as plain tokens, each of those is reported twice — once
|
|
328
|
+
as a lost `:attribute` and once as an invented `:attributeka`. So when the names
|
|
329
|
+
the source offers are known, a match is cut back to the longest of them it
|
|
330
|
+
contains, exactly as `strtr` would. A name the source never offers still has to
|
|
331
|
+
stand on its own, or it is prose rather than a placeholder.
|
|
332
|
+
|
|
333
|
+
Laravel's pipe segments are alternatives: one of them is rendered, never all
|
|
334
|
+
three. A locale that collapses `one|few|other` into a single form has not lost
|
|
335
|
+
two copies of `:count`, so for those strings the names are compared without
|
|
336
|
+
their multiplicity.
|
|
337
|
+
|
|
338
|
+
Every form of one plural message is rendered from the same arguments, so a
|
|
339
|
+
placeholder used anywhere in the group can be used in any form of it. English
|
|
340
|
+
writes `less_than_x_minutes.one` as "less than a minute" — English `one` means
|
|
341
|
+
exactly 1 — while Scottish Gaelic `one` also covers 11 and has to keep the
|
|
342
|
+
count. That is a requirement of the language, not an invention.
|
|
343
|
+
|
|
344
|
+
Each of these was found by running the linter over a real project and reading
|
|
345
|
+
what it said, which is the only way any of them could have been found.
|
|
346
|
+
|
|
286
347
|
## Formats and layouts
|
|
287
348
|
|
|
288
349
|
JSON, Laravel PHP, gettext and YAML, in either layout, auto-detected:
|
|
@@ -482,7 +543,10 @@ those findings are left for a human. That single rule picks the set:
|
|
|
482
543
|
It leaves out `identical_to_source` — often correct, since "Email" really is
|
|
483
544
|
"Email" in French, and forcing a change would make it worse — along with
|
|
484
545
|
`plural_extra_category` and `plural_selector_lost`, which the single-string
|
|
485
|
-
validator does not check and therefore could not confirm.
|
|
546
|
+
validator does not check and therefore could not confirm. It also leaves out
|
|
547
|
+
`plural_needs_placeholder` for the same reason turned inside out: the validator
|
|
548
|
+
compares a proposal against the source, and there the source is the thing that
|
|
549
|
+
falls short.
|
|
486
550
|
|
|
487
551
|
A repair is sent with the wording someone already chose and the exact findings
|
|
488
552
|
against it, and asked to change only what those require:
|
package/dist/check.js
CHANGED
|
@@ -2,7 +2,7 @@ import { containsTerm, expectationsFor, missingVerbatim, } from './glossary.js';
|
|
|
2
2
|
import { allowanceFor, limitFor, measurable, renderedWidth, } from './lengths.js';
|
|
3
3
|
import { judge } from './memory.js';
|
|
4
4
|
import { diffPlaceholders, extractPlaceholders } from './placeholders.js';
|
|
5
|
-
import { categoriesFor, pipeSegments, pluralGroups, scanIcu, splitPluralSuffix, } from './plurals.js';
|
|
5
|
+
import { CATEGORY_NAMES, categoriesFor, categoryReachesFurther, pipeSegments, pluralGroups, scanIcu, splitPluralSuffix, } from './plurals.js';
|
|
6
6
|
import { loadBundle, sourceIsMsgid } from './scan.js';
|
|
7
7
|
const HAS_LETTER = /\p{L}/u;
|
|
8
8
|
/** gettext plural forms are indexed, not named: base.0, base.1, base.2. */
|
|
@@ -20,6 +20,13 @@ function push(findings, config, rule, locale, key, file, detail) {
|
|
|
20
20
|
function list(categories) {
|
|
21
21
|
return [...categories].join('/');
|
|
22
22
|
}
|
|
23
|
+
/** Drops the multiplicity, leaving which names were used but not how often. */
|
|
24
|
+
function distinct(counts) {
|
|
25
|
+
const out = new Map();
|
|
26
|
+
for (const label of counts.keys())
|
|
27
|
+
out.set(label, 1);
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
23
30
|
/** ICU plural branches must cover the categories the target language actually has. */
|
|
24
31
|
function checkIcuCategories(config, findings, locale, categories, key, file, value) {
|
|
25
32
|
const scan = scanIcu(value);
|
|
@@ -59,6 +66,45 @@ function pluralExpansion(target, key, categories) {
|
|
|
59
66
|
}
|
|
60
67
|
return used.size > 0 ? used : null;
|
|
61
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Whether a target plural form is entitled to a placeholder its own source form
|
|
71
|
+
* does without.
|
|
72
|
+
*
|
|
73
|
+
* Every form of one message is rendered from the same arguments, so a
|
|
74
|
+
* placeholder the source uses in any form of the group will be substituted in
|
|
75
|
+
* all of them. English writes `less_than_x_minutes.one` as "less than a minute"
|
|
76
|
+
* because English `one` means exactly 1; Scottish Gaelic `one` also covers 11
|
|
77
|
+
* and has to keep the count, and Afrikaans may keep it simply because "less
|
|
78
|
+
* than 1 minute" reads better. Neither is an invented placeholder.
|
|
79
|
+
*
|
|
80
|
+
* What this does not excuse is a name the source never uses anywhere in the
|
|
81
|
+
* group — that one really would render as literal text.
|
|
82
|
+
*/
|
|
83
|
+
function pluralNeedsPlaceholder(config, source, key, extra) {
|
|
84
|
+
const split = splitPluralSuffix(key);
|
|
85
|
+
if (!split)
|
|
86
|
+
return false;
|
|
87
|
+
const elsewhere = groupPlaceholders(config, source, split);
|
|
88
|
+
if (elsewhere.size === 0)
|
|
89
|
+
return false;
|
|
90
|
+
// `extra` labels carry a ` x2` suffix when a placeholder repeats.
|
|
91
|
+
return extra.every((label) => elsewhere.has(label.replace(/ x\d+$/, '')));
|
|
92
|
+
}
|
|
93
|
+
/** What the source interpolates in the other forms of the same plural group. */
|
|
94
|
+
function groupPlaceholders(config, source, split) {
|
|
95
|
+
const elsewhere = new Set();
|
|
96
|
+
for (const category of CATEGORY_NAMES) {
|
|
97
|
+
if (category === split.category)
|
|
98
|
+
continue;
|
|
99
|
+
const leaf = source.leaves.get(`${split.base}${split.separator}${category}`);
|
|
100
|
+
if (!leaf)
|
|
101
|
+
continue;
|
|
102
|
+
for (const label of extractPlaceholders(leaf.value, config.placeholderSyntaxes).keys()) {
|
|
103
|
+
elsewhere.add(label);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return elsewhere;
|
|
107
|
+
}
|
|
62
108
|
function checkLocale(config, source, target, findings, memory, glossary, limits) {
|
|
63
109
|
const before = findings.length;
|
|
64
110
|
for (const bad of target.unreadable) {
|
|
@@ -136,14 +182,38 @@ function checkLocale(config, source, target, findings, memory, glossary, limits)
|
|
|
136
182
|
push(findings, config, 'identical_to_source', target.locale, key, targetLeaf.file, `identical to source: "${truncate(sourceLeaf.value)}"`);
|
|
137
183
|
}
|
|
138
184
|
const sourcePlaceholders = extractPlaceholders(sourceLeaf.value, config.placeholderSyntaxes);
|
|
139
|
-
const targetPlaceholders = extractPlaceholders(targetLeaf.value, config.placeholderSyntaxes);
|
|
140
|
-
|
|
185
|
+
const targetPlaceholders = extractPlaceholders(targetLeaf.value, config.placeholderSyntaxes, sourcePlaceholders.keys());
|
|
186
|
+
// Laravel's pipe segments are alternatives: exactly one of them is ever
|
|
187
|
+
// rendered. Japanese collapsing three English segments into one has not
|
|
188
|
+
// lost two copies of :count, so the names are compared without their
|
|
189
|
+
// counts — losing the name altogether is still reported.
|
|
190
|
+
const alternatives = laravel && pipeSegments(sourceLeaf.value) > 1;
|
|
191
|
+
const { missing: lost, extra } = diffPlaceholders(alternatives ? distinct(sourcePlaceholders) : sourcePlaceholders, alternatives ? distinct(targetPlaceholders) : targetPlaceholders);
|
|
141
192
|
if (lost.length > 0) {
|
|
142
193
|
push(findings, config, 'placeholder_missing', target.locale, key, targetLeaf.file, `${lost.join(', ')} lost`);
|
|
143
194
|
}
|
|
144
|
-
if (extra.length > 0
|
|
195
|
+
if (extra.length > 0 &&
|
|
196
|
+
!pluralNeedsPlaceholder(config, source, key, extra)) {
|
|
145
197
|
push(findings, config, 'placeholder_extra', target.locale, key, targetLeaf.file, `${extra.join(', ')} not in source`);
|
|
146
198
|
}
|
|
199
|
+
// Nothing is missing relative to the source here, which is exactly why no
|
|
200
|
+
// other rule looks: the source form is complete for its own language and
|
|
201
|
+
// incomplete for this one.
|
|
202
|
+
const pluralForm = splitPluralSuffix(key);
|
|
203
|
+
if (pluralForm) {
|
|
204
|
+
const beyond = categoryReachesFurther(config.sourceLocale, target.locale, pluralForm.category);
|
|
205
|
+
// Only quantities above one. A category that additionally takes 0 —
|
|
206
|
+
// French, Hindi, Persian all put it in `one` — is a fact about agreement,
|
|
207
|
+
// not about quantity: zero minutes really is less than a minute. Eleven
|
|
208
|
+
// of them is not.
|
|
209
|
+
const quantities = beyond?.filter((n) => n > 1) ?? [];
|
|
210
|
+
if (quantities.length > 0) {
|
|
211
|
+
const needed = [...groupPlaceholders(config, source, pluralForm)].filter((label) => !sourcePlaceholders.has(label) && !targetPlaceholders.has(label));
|
|
212
|
+
if (needed.length > 0) {
|
|
213
|
+
push(findings, config, 'plural_needs_placeholder', target.locale, key, targetLeaf.file, `${needed.join(', ')} dropped, but ${pluralForm.category} in ${target.locale} also covers ${quantities.slice(0, 3).join(', ')}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
147
217
|
if (glossary) {
|
|
148
218
|
const lost = missingVerbatim(glossary, sourceLeaf.value, targetLeaf.value);
|
|
149
219
|
if (lost.length > 0) {
|
package/dist/check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
|
package/dist/placeholders.d.ts
CHANGED
|
@@ -5,8 +5,14 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export declare const DEFAULT_SYNTAXES: string[];
|
|
7
7
|
export declare const ALL_SYNTAXES: string[];
|
|
8
|
-
/**
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Returns a multiset of placeholder labels: `{name}` twice is not the same as once.
|
|
10
|
+
*
|
|
11
|
+
* `known` carries the labels found in the source string. It only affects the
|
|
12
|
+
* Laravel syntax, where the boundary of a name cannot be read off the target
|
|
13
|
+
* text alone.
|
|
14
|
+
*/
|
|
15
|
+
export declare function extractPlaceholders(text: string, syntaxes: string[], known?: Iterable<string>): Map<string, number>;
|
|
10
16
|
export interface PlaceholderDiff {
|
|
11
17
|
missing: string[];
|
|
12
18
|
extra: string[];
|
package/dist/placeholders.js
CHANGED
|
@@ -57,9 +57,53 @@ function maskSpans(text, spans) {
|
|
|
57
57
|
}
|
|
58
58
|
return chars.join('');
|
|
59
59
|
}
|
|
60
|
-
/**
|
|
61
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Laravel substitutes with `strtr()`, which needs no word boundary, so a
|
|
62
|
+
* translation may glue a suffix straight onto the token and still render: the
|
|
63
|
+
* Somali definite article in `:attributeka`, the Amharic one in `:attributeቱ`.
|
|
64
|
+
* The greedy pattern above reads the whole run as the name, which reports one
|
|
65
|
+
* correct string as both a lost `:attribute` and an invented `:attributeka`.
|
|
66
|
+
*
|
|
67
|
+
* When the names the source actually offers are known, the match is cut back to
|
|
68
|
+
* the longest of them it starts with — the same choice `strtr` makes.
|
|
69
|
+
*/
|
|
70
|
+
function knownNames(known) {
|
|
71
|
+
if (!known)
|
|
72
|
+
return null;
|
|
73
|
+
const names = new Set();
|
|
74
|
+
for (const label of known) {
|
|
75
|
+
const name = label.replace(/^:/, '').toLowerCase();
|
|
76
|
+
if (/^[a-z][\w]*$/.test(name))
|
|
77
|
+
names.add(name);
|
|
78
|
+
}
|
|
79
|
+
return names.size > 0 ? names : null;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* `strtr` needs no boundary on either side, so Shona's `ne:terms_of_service`
|
|
83
|
+
* substitutes just as well as a token standing alone. The guarded pattern above
|
|
84
|
+
* cannot see it. This one is used only when the source names are known, so that
|
|
85
|
+
* anything it turns up can still be required to be one of them.
|
|
86
|
+
*/
|
|
87
|
+
const LARAVEL_ANYWHERE = /:([a-zA-Z][\w]*)/g;
|
|
88
|
+
function longestKnownPrefix(identifier, names) {
|
|
89
|
+
const lower = identifier.toLowerCase();
|
|
90
|
+
let best = null;
|
|
91
|
+
for (const name of names) {
|
|
92
|
+
if (lower.startsWith(name) && (best === null || name.length > best.length))
|
|
93
|
+
best = name;
|
|
94
|
+
}
|
|
95
|
+
return best;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Returns a multiset of placeholder labels: `{name}` twice is not the same as once.
|
|
99
|
+
*
|
|
100
|
+
* `known` carries the labels found in the source string. It only affects the
|
|
101
|
+
* Laravel syntax, where the boundary of a name cannot be read off the target
|
|
102
|
+
* text alone.
|
|
103
|
+
*/
|
|
104
|
+
export function extractPlaceholders(text, syntaxes, known) {
|
|
62
105
|
const counts = new Map();
|
|
106
|
+
const laravelNames = knownNames(known);
|
|
63
107
|
let masked = text;
|
|
64
108
|
for (const id of ORDER) {
|
|
65
109
|
if (!syntaxes.includes(id))
|
|
@@ -67,7 +111,8 @@ export function extractPlaceholders(text, syntaxes) {
|
|
|
67
111
|
const spec = PATTERNS[id];
|
|
68
112
|
if (!spec)
|
|
69
113
|
continue;
|
|
70
|
-
const
|
|
114
|
+
const permissive = id === 'laravel' && laravelNames !== null;
|
|
115
|
+
const re = new RegExp(permissive ? LARAVEL_ANYWHERE.source : spec.re.source, spec.re.flags);
|
|
71
116
|
const spans = [];
|
|
72
117
|
let m;
|
|
73
118
|
while ((m = re.exec(masked)) !== null) {
|
|
@@ -75,7 +120,18 @@ export function extractPlaceholders(text, syntaxes) {
|
|
|
75
120
|
re.lastIndex++;
|
|
76
121
|
continue;
|
|
77
122
|
}
|
|
78
|
-
|
|
123
|
+
let label = spec.label(m);
|
|
124
|
+
if (permissive) {
|
|
125
|
+
const name = longestKnownPrefix(m[1], laravelNames);
|
|
126
|
+
if (name !== null) {
|
|
127
|
+
label = `:${name}`;
|
|
128
|
+
}
|
|
129
|
+
else if (/[\w:]/.test(masked[m.index - 1] ?? '')) {
|
|
130
|
+
// Not a name the source offers, and glued to the word before it:
|
|
131
|
+
// prose like "Warning:Important", not a placeholder.
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
79
135
|
counts.set(label, (counts.get(label) ?? 0) + 1);
|
|
80
136
|
spans.push([m.index, m.index + m[0].length]);
|
|
81
137
|
}
|
package/dist/placeholders.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placeholders.js","sourceRoot":"","sources":["../src/placeholders.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,QAAQ,GAAgC;IAC5C,0CAA0C;IAC1C,QAAQ,EAAE;QACR,EAAE,EAAE,qCAAqC;QACzC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;KAC5B;IACD,sBAAsB;IACtB,IAAI,EAAE;QACJ,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;KAC3B;IACD,2EAA2E;IAC3E,mEAAmE;IACnE,WAAW,EAAE;QACX,EAAE,EAAE,yEAAyE;QAC7E,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;KAClC;IACD,+BAA+B;IAC/B,GAAG,EAAE;QACH,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;KAC1B;IACD,wBAAwB;IACxB,MAAM,EAAE;QACN,EAAE,EAAE,0BAA0B;QAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD;IACD,6CAA6C;IAC7C,GAAG,EAAE;QACH,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACnB;IACD,oEAAoE;IACpE,mEAAmE;IACnE,yEAAyE;IACzE,iEAAiE;IACjE,OAAO,EAAE;QACP,EAAE,EAAE,6BAA6B;QACjC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,EAAE;KACxC;CACF,CAAC;AAEF,gEAAgE;AAChE,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC5F,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC;AAElC,MAAM,IAAI,GAAG,QAAQ,CAAC;AAEtB,SAAS,SAAS,CAAC,IAAY,EAAE,KAA8B;IAC7D,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"placeholders.js","sourceRoot":"","sources":["../src/placeholders.ts"],"names":[],"mappings":"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"}
|
package/dist/plurals.d.ts
CHANGED
|
@@ -15,6 +15,16 @@ export declare function isCategory(name: string): name is Category;
|
|
|
15
15
|
* rather than a wrong answer.
|
|
16
16
|
*/
|
|
17
17
|
export declare function categoriesFor(locale: string): Set<string> | null;
|
|
18
|
+
/**
|
|
19
|
+
* The numbers `category` covers in `target` but not in `source`, or null when
|
|
20
|
+
* either locale is unknown.
|
|
21
|
+
*
|
|
22
|
+
* This is the difference between a phrase that can name its quantity in words
|
|
23
|
+
* and one that cannot. English `one` is exactly 1, so "less than a minute"
|
|
24
|
+
* says everything; Scottish Gaelic `one` also covers 11, where the same
|
|
25
|
+
* sentence would claim eleven minutes is less than one.
|
|
26
|
+
*/
|
|
27
|
+
export declare function categoryReachesFurther(source: string, target: string, category: string): number[] | null;
|
|
18
28
|
export interface PluralBlock {
|
|
19
29
|
arg: string;
|
|
20
30
|
type: 'plural' | 'selectordinal';
|
package/dist/plurals.js
CHANGED
|
@@ -37,6 +37,53 @@ export function categoriesFor(locale) {
|
|
|
37
37
|
cache.set(locale, result);
|
|
38
38
|
return result;
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Which integers a locale assigns to each plural category.
|
|
42
|
+
*
|
|
43
|
+
* 0..200 is enough to separate the cases that matter: Scottish Gaelic `one`
|
|
44
|
+
* picks up 11, Russian `one` picks up 21 and 31, Welsh `zero` takes 0 while its
|
|
45
|
+
* `one` is only 1. Further out the patterns repeat.
|
|
46
|
+
*/
|
|
47
|
+
const members = new Map();
|
|
48
|
+
function membersFor(locale) {
|
|
49
|
+
const cached = members.get(locale);
|
|
50
|
+
if (cached !== undefined)
|
|
51
|
+
return cached;
|
|
52
|
+
let result = null;
|
|
53
|
+
// categoriesFor already refuses locales Intl silently substitutes for.
|
|
54
|
+
if (categoriesFor(locale) !== null) {
|
|
55
|
+
const rules = new Intl.PluralRules(locale.replace(/_/g, '-'), { type: 'cardinal' });
|
|
56
|
+
result = new Map();
|
|
57
|
+
for (let n = 0; n <= 200; n++) {
|
|
58
|
+
const category = rules.select(n);
|
|
59
|
+
let set = result.get(category);
|
|
60
|
+
if (!set) {
|
|
61
|
+
set = new Set();
|
|
62
|
+
result.set(category, set);
|
|
63
|
+
}
|
|
64
|
+
set.add(n);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
members.set(locale, result);
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The numbers `category` covers in `target` but not in `source`, or null when
|
|
72
|
+
* either locale is unknown.
|
|
73
|
+
*
|
|
74
|
+
* This is the difference between a phrase that can name its quantity in words
|
|
75
|
+
* and one that cannot. English `one` is exactly 1, so "less than a minute"
|
|
76
|
+
* says everything; Scottish Gaelic `one` also covers 11, where the same
|
|
77
|
+
* sentence would claim eleven minutes is less than one.
|
|
78
|
+
*/
|
|
79
|
+
export function categoryReachesFurther(source, target, category) {
|
|
80
|
+
const from = membersFor(source)?.get(category);
|
|
81
|
+
const to = membersFor(target)?.get(category);
|
|
82
|
+
if (!from || !to)
|
|
83
|
+
return null;
|
|
84
|
+
const beyond = [...to].filter((n) => !from.has(n));
|
|
85
|
+
return beyond.length > 0 ? beyond : null;
|
|
86
|
+
}
|
|
40
87
|
const PLURAL_INTENT = /\{\s*[\w.$-]+\s*,\s*(?:plural|selectordinal)\b/;
|
|
41
88
|
/** Whether the string is trying to be an ICU plural at all. */
|
|
42
89
|
export function looksLikeIcuPlural(text) {
|
package/dist/plurals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plurals.js","sourceRoot":"","sources":["../src/plurals.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plurals.js","sourceRoot":"","sources":["../src/plurals.ts"],"names":[],"mappings":"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"}
|
package/dist/translate.js
CHANGED
|
@@ -127,7 +127,8 @@ export function validate(config, job, proposed, glossary) {
|
|
|
127
127
|
const problems = [];
|
|
128
128
|
if (proposed.trim() === '')
|
|
129
129
|
return ['empty translation'];
|
|
130
|
-
const
|
|
130
|
+
const sourcePlaceholders = extractPlaceholders(job.source, config.placeholderSyntaxes);
|
|
131
|
+
const lost = diffPlaceholders(sourcePlaceholders, extractPlaceholders(proposed, config.placeholderSyntaxes, sourcePlaceholders.keys()));
|
|
131
132
|
if (lost.missing.length > 0)
|
|
132
133
|
problems.push(`placeholders lost: ${lost.missing.join(', ')}`);
|
|
133
134
|
if (lost.extra.length > 0)
|
package/dist/translate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,GAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAe,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAI9B,MAAM,CAAC,MAAM,SAAS,GAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE3E,oCAAoC;AACpC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IACtC,qBAAqB;IACrB,mBAAmB;IACnB,kBAAkB;IAClB,yBAAyB;IACzB,oBAAoB;IACpB,eAAe;IACf,iBAAiB;CAClB,CAAC,CAAC;AAEH,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AA8BzE,4CAA4C;AAC5C,MAAM,UAAU,WAAW,CACzB,MAAc,EACd,QAAmB,EACnB,MAAoB,EACpB,QAAyB,EACzB,MAAqB,EACrB,OAAkB,EAClB,KAAiB;IAEjB,MAAM,YAAY,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,MAAM,UAAU,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAQrE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;IAExC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,4EAA4E;QAC5E,mEAAmE;QACnE,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,YAAY;YAAE,SAAS;QACrD,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,SAAS;QAEhE,IAAI,IAAI,GAAmB,IAAI,CAAC;QAChC,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,IAAI,GAAG,MAAM,CAAC;aAC3C,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,IAAI,GAAG,QAAQ,CAAC;aACxD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;YAAE,IAAI,GAAG,SAAS,CAAC;QACpD,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAErD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE;gBACb,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI;gBACJ,QAAQ,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;aAC7C,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,oEAAoE;QACpE,IAAI,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,wEAAwE;QACxE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IACvD,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAChD,MAAM,SAAS,GAAG,CAAC,MAAc,EAAgB,EAAE;QACjD,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QAExD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QAE5D,2EAA2E;QAC3E,kEAAkE;QAClE,MAAM,QAAQ,GACZ,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC;QAEhG,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,MAAM,EAAE,UAAU,CAAC,KAAK;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;YAC3C,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,YAAY,EAAE,CAAC,GAAG,mBAAmB,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3F,QAAQ,EAAE,QAAQ;gBAChB,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACpE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;oBACnB,QAAQ,EAAE,CAAC,CAAC,QAAQ;iBACrB,CAAC,CAAC;gBACL,CAAC,CAAC,EAAE;YACN,cAAc,EAAE,QAAQ;gBACtB,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACvC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CACrD;gBACH,CAAC,CAAC,EAAE;YACN,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;YACrD,WAAW,EAAE,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC;SAClD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAKD,0EAA0E;AAC1E,MAAM,UAAU,QAAQ,CACtB,MAAc,EACd,GAAgB,EAChB,QAAgB,EAChB,QAAyB;IAEzB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEzD,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACvF,MAAM,IAAI,GAAG,gBAAgB,CAC3B,kBAAkB,EAClB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,IAAI,EAAE,CAAC,CACrF,CAAC;IACF,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5F,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE5F,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;SAAM,IAAI,UAAU,EAAE,CAAC;QACtB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,QAAQ,CAAC,IAAI,CAAC,4BAA4B,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAErF,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACnF,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAChC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAC7D,CAAC;YACF,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,yBAAyB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACtF,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,mBAAmB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;sDAmBuC,CAAC;AAEvD,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,YAAY,EAAE,CAAC,CAAC,KAAK,CACnB,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACvE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KACpD,CAAC,CACH;CACF,CAAC,CAAC;AAEH,SAAS,WAAW,CAAC,GAAQ,EAAE,KAAa;IAC1C,MAAM,IAAI,GAA4B;QACpC,EAAE,EAAE,KAAK;QACT,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC;IACF,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,gCAAgC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;IAC3F,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QAC1B,IAAI,UAAU;YAAE,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;IACjF,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI;QAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;IACtE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9F,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,oFAAoF;AACpF,MAAM,OAAO,kBAAmB,SAAQ,KAAK;CAAG;AAEhD,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAW,EACX,MAAc,EACd,OAAyB,EACzB,QAAgC;IAEhC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;IAEjD,MAAM,OAAO,GAAG;QACd,aAAa,EAAE,MAAM;QACrB,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,QAAQ;gBAAE,IAAI,CAAC,uCAAuC,CAAC,GAAG,QAAQ,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;KACH,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAC9B,aAAa,EAAE;YACb,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC;SACxC;QACD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KACxE,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,QAAQ,IAAI,aAAa,CAAC;QAClE,MAAM,IAAI,kBAAkB,CAAC,kCAAkC,QAAQ,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC;IACtC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAE7E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAmBD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,IAAW,EACX,QAAyB,EACzB,OAAmB;IAEnB,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YACpB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1E,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAEjE,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC3C,IAAI,OAA4B,CAAC;YACjC,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,CAAC,GAAG,YAAY,kBAAkB,CAAC,EAAE,CAAC;oBACzC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClF,CAAC;gBACD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;oBACxB,SAAS,CAAC,IAAI,CAAC;wBACb,MAAM;wBACN,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,KAAK,EAAE,EAAE;wBACT,QAAQ,EAAE,KAAK;wBACf,UAAU,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;wBACzB,QAAQ,EAAE,CAAC;qBACZ,CAAC,CAAC;gBACL,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBACxC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACvC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC;YACvH,CAAC,CAAC,CAAC;YAEH,qEAAqE;YACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;gBAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAEpE,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACzE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;wBAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACpC,IAAI,CAAC,KAAK;4BAAE,OAAO;wBACnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;wBAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAC1B,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;4BAChB,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;wBAClB,CAAC;6BAAM,CAAC;4BACN,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;4BAChB,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;wBACxB,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,CAAC,GAAG,YAAY,kBAAkB,CAAC,EAAE,CAAC;wBACzC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;4BAC/B,SAAS,CAAC,IAAI,CAAC;gCACb,MAAM;gCACN,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG;gCACpB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;gCACtB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM;gCAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gCACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;gCACvC,UAAU,EAAE,OAAO,CAAC,QAAQ;gCAC5B,QAAQ,EAAE,CAAC;6BACZ,CAAC,CAAC;wBACL,CAAC;wBACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClF,CAAC;oBACD,mEAAmE;oBACnE,8BAA8B;gBAChC,CAAC;YACH,CAAC;YAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,SAAS,CAAC,IAAI,CAAC;oBACb,MAAM;oBACN,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG;oBACpB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;oBACtB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM;oBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;oBACvC,UAAU,EAAE,OAAO,CAAC,QAAQ;oBAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACtC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type Severity = 'error' | 'warning';
|
|
2
2
|
export type RuleSetting = Severity | 'off';
|
|
3
|
-
export declare const RULE_IDS: readonly ["missing_key", "orphan_key", "structure_mismatch", "placeholder_missing", "placeholder_extra", "identical_to_source", "stale", "untracked", "icu_syntax_error", "plural_missing_category", "plural_extra_category", "plural_selector_lost", "dnt_violation", "glossary_violation", "inconsistent_translation", "length_over_max", "length_overflow", "unreadable_file"];
|
|
3
|
+
export declare const RULE_IDS: readonly ["missing_key", "orphan_key", "structure_mismatch", "placeholder_missing", "placeholder_extra", "identical_to_source", "stale", "untracked", "icu_syntax_error", "plural_missing_category", "plural_extra_category", "plural_selector_lost", "plural_needs_placeholder", "dnt_violation", "glossary_violation", "inconsistent_translation", "length_over_max", "length_overflow", "unreadable_file"];
|
|
4
4
|
export type RuleId = (typeof RULE_IDS)[number];
|
|
5
5
|
/** Default severities. Anything that breaks at runtime is an error. */
|
|
6
6
|
export declare const DEFAULT_RULES: Record<RuleId, RuleSetting>;
|
package/dist/types.js
CHANGED
|
@@ -11,6 +11,7 @@ export const RULE_IDS = [
|
|
|
11
11
|
'plural_missing_category',
|
|
12
12
|
'plural_extra_category',
|
|
13
13
|
'plural_selector_lost',
|
|
14
|
+
'plural_needs_placeholder',
|
|
14
15
|
'dnt_violation',
|
|
15
16
|
'glossary_violation',
|
|
16
17
|
'inconsistent_translation',
|
|
@@ -37,6 +38,11 @@ export const DEFAULT_RULES = {
|
|
|
37
38
|
plural_missing_category: 'warning',
|
|
38
39
|
plural_extra_category: 'warning',
|
|
39
40
|
plural_selector_lost: 'warning',
|
|
41
|
+
// The source form can drop a placeholder its own language does not need —
|
|
42
|
+
// English `one` means exactly 1, so "less than a minute" is complete. A
|
|
43
|
+
// target whose `one` also covers 11 cannot copy that, and no other rule looks
|
|
44
|
+
// for it, because nothing is missing relative to the source.
|
|
45
|
+
plural_needs_placeholder: 'warning',
|
|
40
46
|
dnt_violation: 'warning',
|
|
41
47
|
glossary_violation: 'warning',
|
|
42
48
|
// Reusing one wording for a repeated source string is often deliberate, so
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,aAAa;IACb,YAAY;IACZ,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,qBAAqB;IACrB,OAAO;IACP,WAAW;IACX,kBAAkB;IAClB,yBAAyB;IACzB,uBAAuB;IACvB,sBAAsB;IACtB,eAAe;IACf,oBAAoB;IACpB,0BAA0B;IAC1B,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;CACT,CAAC;AAIX,uEAAuE;AACvE,MAAM,CAAC,MAAM,aAAa,GAAgC;IACxD,WAAW,EAAE,OAAO;IACpB,UAAU,EAAE,SAAS;IACrB,kBAAkB,EAAE,OAAO;IAC3B,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,OAAO;IAC1B,wEAAwE;IACxE,kEAAkE;IAClE,mBAAmB,EAAE,KAAK;IAC1B,KAAK,EAAE,SAAS;IAChB,sEAAsE;IACtE,SAAS,EAAE,KAAK;IAChB,2EAA2E;IAC3E,6CAA6C;IAC7C,gBAAgB,EAAE,OAAO;IACzB,uBAAuB,EAAE,SAAS;IAClC,qBAAqB,EAAE,SAAS;IAChC,oBAAoB,EAAE,SAAS;IAC/B,aAAa,EAAE,SAAS;IACxB,kBAAkB,EAAE,SAAS;IAC7B,2EAA2E;IAC3E,+CAA+C;IAC/C,wBAAwB,EAAE,KAAK;IAC/B,eAAe,EAAE,SAAS;IAC1B,wEAAwE;IACxE,eAAe,EAAE,KAAK;IACtB,eAAe,EAAE,OAAO;CACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,aAAa;IACb,YAAY;IACZ,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,qBAAqB;IACrB,OAAO;IACP,WAAW;IACX,kBAAkB;IAClB,yBAAyB;IACzB,uBAAuB;IACvB,sBAAsB;IACtB,0BAA0B;IAC1B,eAAe;IACf,oBAAoB;IACpB,0BAA0B;IAC1B,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;CACT,CAAC;AAIX,uEAAuE;AACvE,MAAM,CAAC,MAAM,aAAa,GAAgC;IACxD,WAAW,EAAE,OAAO;IACpB,UAAU,EAAE,SAAS;IACrB,kBAAkB,EAAE,OAAO;IAC3B,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,OAAO;IAC1B,wEAAwE;IACxE,kEAAkE;IAClE,mBAAmB,EAAE,KAAK;IAC1B,KAAK,EAAE,SAAS;IAChB,sEAAsE;IACtE,SAAS,EAAE,KAAK;IAChB,2EAA2E;IAC3E,6CAA6C;IAC7C,gBAAgB,EAAE,OAAO;IACzB,uBAAuB,EAAE,SAAS;IAClC,qBAAqB,EAAE,SAAS;IAChC,oBAAoB,EAAE,SAAS;IAC/B,0EAA0E;IAC1E,wEAAwE;IACxE,8EAA8E;IAC9E,6DAA6D;IAC7D,wBAAwB,EAAE,SAAS;IACnC,aAAa,EAAE,SAAS;IACxB,kBAAkB,EAAE,SAAS;IAC7B,2EAA2E;IAC3E,+CAA+C;IAC/C,wBAAwB,EAAE,KAAK;IAC/B,eAAe,EAAE,SAAS;IAC1B,wEAAwE;IACxE,eAAe,EAAE,KAAK;IACtB,eAAe,EAAE,OAAO;CACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@katerynakhar/i18n-keeper",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"description": "Deterministic i18n linter for JSON, Laravel PHP, gettext and YAML locale files, as a CLI and an MCP server.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -54,12 +54,13 @@
|
|
|
54
54
|
"test:glossary": "node scripts/glossary-checks.mjs",
|
|
55
55
|
"test:lengths": "node scripts/length-checks.mjs",
|
|
56
56
|
"test:formats": "node scripts/format-checks.mjs",
|
|
57
|
+
"test:placeholders": "node scripts/placeholder-checks.mjs",
|
|
57
58
|
"test:translate": "node scripts/translate-checks.mjs && node scripts/repair-checks.mjs",
|
|
58
59
|
"test:apply": "node scripts/apply-checks.mjs",
|
|
59
60
|
"test:writers": "node scripts/writer-checks.mjs",
|
|
60
61
|
"test:review": "node scripts/review-checks.mjs",
|
|
61
62
|
"test:fixtures": "node scripts/fixture-checks.mjs",
|
|
62
|
-
"test": "npm run build && npm run test:version && npm run test:fixtures && npm run test:detection && npm run test:php && npm run test:laravel && npm run test:plurals && npm run test:glossary && npm run test:lengths && npm run test:formats && npm run test:translate && npm run test:apply && npm run test:writers && npm run test:review && npm run smoke && npm run walkthrough",
|
|
63
|
+
"test": "npm run build && npm run test:version && npm run test:fixtures && npm run test:detection && npm run test:php && npm run test:laravel && npm run test:plurals && npm run test:glossary && npm run test:lengths && npm run test:formats && npm run test:placeholders && npm run test:translate && npm run test:apply && npm run test:writers && npm run test:review && npm run smoke && npm run walkthrough",
|
|
63
64
|
"test:version": "node scripts/version-checks.mjs",
|
|
64
65
|
"test:detection": "node scripts/detection-checks.mjs",
|
|
65
66
|
"prepublishOnly": "npm test"
|
package/src/check.ts
CHANGED
|
@@ -14,7 +14,9 @@ import {
|
|
|
14
14
|
import { judge, type Memory } from './memory.js';
|
|
15
15
|
import { diffPlaceholders, extractPlaceholders } from './placeholders.js';
|
|
16
16
|
import {
|
|
17
|
+
CATEGORY_NAMES,
|
|
17
18
|
categoriesFor,
|
|
19
|
+
categoryReachesFurther,
|
|
18
20
|
pipeSegments,
|
|
19
21
|
pluralGroups,
|
|
20
22
|
scanIcu,
|
|
@@ -52,6 +54,13 @@ function list(categories: Iterable<string>): string {
|
|
|
52
54
|
return [...categories].join('/');
|
|
53
55
|
}
|
|
54
56
|
|
|
57
|
+
/** Drops the multiplicity, leaving which names were used but not how often. */
|
|
58
|
+
function distinct(counts: Map<string, number>): Map<string, number> {
|
|
59
|
+
const out = new Map<string, number>();
|
|
60
|
+
for (const label of counts.keys()) out.set(label, 1);
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
|
|
55
64
|
/** ICU plural branches must cover the categories the target language actually has. */
|
|
56
65
|
function checkIcuCategories(
|
|
57
66
|
config: Config,
|
|
@@ -107,6 +116,54 @@ function pluralExpansion(
|
|
|
107
116
|
return used.size > 0 ? used : null;
|
|
108
117
|
}
|
|
109
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Whether a target plural form is entitled to a placeholder its own source form
|
|
121
|
+
* does without.
|
|
122
|
+
*
|
|
123
|
+
* Every form of one message is rendered from the same arguments, so a
|
|
124
|
+
* placeholder the source uses in any form of the group will be substituted in
|
|
125
|
+
* all of them. English writes `less_than_x_minutes.one` as "less than a minute"
|
|
126
|
+
* because English `one` means exactly 1; Scottish Gaelic `one` also covers 11
|
|
127
|
+
* and has to keep the count, and Afrikaans may keep it simply because "less
|
|
128
|
+
* than 1 minute" reads better. Neither is an invented placeholder.
|
|
129
|
+
*
|
|
130
|
+
* What this does not excuse is a name the source never uses anywhere in the
|
|
131
|
+
* group — that one really would render as literal text.
|
|
132
|
+
*/
|
|
133
|
+
function pluralNeedsPlaceholder(
|
|
134
|
+
config: Config,
|
|
135
|
+
source: LocaleBundle,
|
|
136
|
+
key: string,
|
|
137
|
+
extra: string[],
|
|
138
|
+
): boolean {
|
|
139
|
+
const split = splitPluralSuffix(key);
|
|
140
|
+
if (!split) return false;
|
|
141
|
+
|
|
142
|
+
const elsewhere = groupPlaceholders(config, source, split);
|
|
143
|
+
if (elsewhere.size === 0) return false;
|
|
144
|
+
|
|
145
|
+
// `extra` labels carry a ` x2` suffix when a placeholder repeats.
|
|
146
|
+
return extra.every((label) => elsewhere.has(label.replace(/ x\d+$/, '')));
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/** What the source interpolates in the other forms of the same plural group. */
|
|
150
|
+
function groupPlaceholders(
|
|
151
|
+
config: Config,
|
|
152
|
+
source: LocaleBundle,
|
|
153
|
+
split: { base: string; category: string; separator: '_' | '.' },
|
|
154
|
+
): Set<string> {
|
|
155
|
+
const elsewhere = new Set<string>();
|
|
156
|
+
for (const category of CATEGORY_NAMES) {
|
|
157
|
+
if (category === split.category) continue;
|
|
158
|
+
const leaf = source.leaves.get(`${split.base}${split.separator}${category}`);
|
|
159
|
+
if (!leaf) continue;
|
|
160
|
+
for (const label of extractPlaceholders(leaf.value, config.placeholderSyntaxes).keys()) {
|
|
161
|
+
elsewhere.add(label);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return elsewhere;
|
|
165
|
+
}
|
|
166
|
+
|
|
110
167
|
function checkLocale(
|
|
111
168
|
config: Config,
|
|
112
169
|
source: LocaleBundle,
|
|
@@ -207,18 +264,59 @@ function checkLocale(
|
|
|
207
264
|
}
|
|
208
265
|
|
|
209
266
|
const sourcePlaceholders = extractPlaceholders(sourceLeaf.value, config.placeholderSyntaxes);
|
|
210
|
-
const targetPlaceholders = extractPlaceholders(
|
|
211
|
-
|
|
267
|
+
const targetPlaceholders = extractPlaceholders(
|
|
268
|
+
targetLeaf.value,
|
|
269
|
+
config.placeholderSyntaxes,
|
|
270
|
+
sourcePlaceholders.keys(),
|
|
271
|
+
);
|
|
272
|
+
// Laravel's pipe segments are alternatives: exactly one of them is ever
|
|
273
|
+
// rendered. Japanese collapsing three English segments into one has not
|
|
274
|
+
// lost two copies of :count, so the names are compared without their
|
|
275
|
+
// counts — losing the name altogether is still reported.
|
|
276
|
+
const alternatives = laravel && pipeSegments(sourceLeaf.value) > 1;
|
|
277
|
+
const { missing: lost, extra } = diffPlaceholders(
|
|
278
|
+
alternatives ? distinct(sourcePlaceholders) : sourcePlaceholders,
|
|
279
|
+
alternatives ? distinct(targetPlaceholders) : targetPlaceholders,
|
|
280
|
+
);
|
|
212
281
|
|
|
213
282
|
if (lost.length > 0) {
|
|
214
283
|
push(findings, config, 'placeholder_missing', target.locale, key, targetLeaf.file,
|
|
215
284
|
`${lost.join(', ')} lost`);
|
|
216
285
|
}
|
|
217
|
-
if (
|
|
286
|
+
if (
|
|
287
|
+
extra.length > 0 &&
|
|
288
|
+
!pluralNeedsPlaceholder(config, source, key, extra)
|
|
289
|
+
) {
|
|
218
290
|
push(findings, config, 'placeholder_extra', target.locale, key, targetLeaf.file,
|
|
219
291
|
`${extra.join(', ')} not in source`);
|
|
220
292
|
}
|
|
221
293
|
|
|
294
|
+
// Nothing is missing relative to the source here, which is exactly why no
|
|
295
|
+
// other rule looks: the source form is complete for its own language and
|
|
296
|
+
// incomplete for this one.
|
|
297
|
+
const pluralForm = splitPluralSuffix(key);
|
|
298
|
+
if (pluralForm) {
|
|
299
|
+
const beyond = categoryReachesFurther(
|
|
300
|
+
config.sourceLocale,
|
|
301
|
+
target.locale,
|
|
302
|
+
pluralForm.category,
|
|
303
|
+
);
|
|
304
|
+
// Only quantities above one. A category that additionally takes 0 —
|
|
305
|
+
// French, Hindi, Persian all put it in `one` — is a fact about agreement,
|
|
306
|
+
// not about quantity: zero minutes really is less than a minute. Eleven
|
|
307
|
+
// of them is not.
|
|
308
|
+
const quantities = beyond?.filter((n) => n > 1) ?? [];
|
|
309
|
+
if (quantities.length > 0) {
|
|
310
|
+
const needed = [...groupPlaceholders(config, source, pluralForm)].filter(
|
|
311
|
+
(label) => !sourcePlaceholders.has(label) && !targetPlaceholders.has(label),
|
|
312
|
+
);
|
|
313
|
+
if (needed.length > 0) {
|
|
314
|
+
push(findings, config, 'plural_needs_placeholder', target.locale, key, targetLeaf.file,
|
|
315
|
+
`${needed.join(', ')} dropped, but ${pluralForm.category} in ${target.locale} also covers ${quantities.slice(0, 3).join(', ')}`);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
222
320
|
if (glossary) {
|
|
223
321
|
const lost = missingVerbatim(glossary, sourceLeaf.value, targetLeaf.value);
|
|
224
322
|
if (lost.length > 0) {
|
package/src/placeholders.ts
CHANGED
|
@@ -67,9 +67,57 @@ function maskSpans(text: string, spans: Array<[number, number]>): string {
|
|
|
67
67
|
return chars.join('');
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
/**
|
|
71
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Laravel substitutes with `strtr()`, which needs no word boundary, so a
|
|
72
|
+
* translation may glue a suffix straight onto the token and still render: the
|
|
73
|
+
* Somali definite article in `:attributeka`, the Amharic one in `:attributeቱ`.
|
|
74
|
+
* The greedy pattern above reads the whole run as the name, which reports one
|
|
75
|
+
* correct string as both a lost `:attribute` and an invented `:attributeka`.
|
|
76
|
+
*
|
|
77
|
+
* When the names the source actually offers are known, the match is cut back to
|
|
78
|
+
* the longest of them it starts with — the same choice `strtr` makes.
|
|
79
|
+
*/
|
|
80
|
+
function knownNames(known: Iterable<string> | undefined): Set<string> | null {
|
|
81
|
+
if (!known) return null;
|
|
82
|
+
const names = new Set<string>();
|
|
83
|
+
for (const label of known) {
|
|
84
|
+
const name = label.replace(/^:/, '').toLowerCase();
|
|
85
|
+
if (/^[a-z][\w]*$/.test(name)) names.add(name);
|
|
86
|
+
}
|
|
87
|
+
return names.size > 0 ? names : null;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* `strtr` needs no boundary on either side, so Shona's `ne:terms_of_service`
|
|
92
|
+
* substitutes just as well as a token standing alone. The guarded pattern above
|
|
93
|
+
* cannot see it. This one is used only when the source names are known, so that
|
|
94
|
+
* anything it turns up can still be required to be one of them.
|
|
95
|
+
*/
|
|
96
|
+
const LARAVEL_ANYWHERE = /:([a-zA-Z][\w]*)/g;
|
|
97
|
+
|
|
98
|
+
function longestKnownPrefix(identifier: string, names: Set<string>): string | null {
|
|
99
|
+
const lower = identifier.toLowerCase();
|
|
100
|
+
let best: string | null = null;
|
|
101
|
+
for (const name of names) {
|
|
102
|
+
if (lower.startsWith(name) && (best === null || name.length > best.length)) best = name;
|
|
103
|
+
}
|
|
104
|
+
return best;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Returns a multiset of placeholder labels: `{name}` twice is not the same as once.
|
|
109
|
+
*
|
|
110
|
+
* `known` carries the labels found in the source string. It only affects the
|
|
111
|
+
* Laravel syntax, where the boundary of a name cannot be read off the target
|
|
112
|
+
* text alone.
|
|
113
|
+
*/
|
|
114
|
+
export function extractPlaceholders(
|
|
115
|
+
text: string,
|
|
116
|
+
syntaxes: string[],
|
|
117
|
+
known?: Iterable<string>,
|
|
118
|
+
): Map<string, number> {
|
|
72
119
|
const counts = new Map<string, number>();
|
|
120
|
+
const laravelNames = knownNames(known);
|
|
73
121
|
let masked = text;
|
|
74
122
|
|
|
75
123
|
for (const id of ORDER) {
|
|
@@ -77,7 +125,8 @@ export function extractPlaceholders(text: string, syntaxes: string[]): Map<strin
|
|
|
77
125
|
const spec = PATTERNS[id];
|
|
78
126
|
if (!spec) continue;
|
|
79
127
|
|
|
80
|
-
const
|
|
128
|
+
const permissive = id === 'laravel' && laravelNames !== null;
|
|
129
|
+
const re = new RegExp(permissive ? LARAVEL_ANYWHERE.source : spec.re.source, spec.re.flags);
|
|
81
130
|
const spans: Array<[number, number]> = [];
|
|
82
131
|
let m: RegExpExecArray | null;
|
|
83
132
|
|
|
@@ -86,7 +135,17 @@ export function extractPlaceholders(text: string, syntaxes: string[]): Map<strin
|
|
|
86
135
|
re.lastIndex++;
|
|
87
136
|
continue;
|
|
88
137
|
}
|
|
89
|
-
|
|
138
|
+
let label = spec.label(m);
|
|
139
|
+
if (permissive) {
|
|
140
|
+
const name = longestKnownPrefix(m[1]!, laravelNames!);
|
|
141
|
+
if (name !== null) {
|
|
142
|
+
label = `:${name}`;
|
|
143
|
+
} else if (/[\w:]/.test(masked[m.index - 1] ?? '')) {
|
|
144
|
+
// Not a name the source offers, and glued to the word before it:
|
|
145
|
+
// prose like "Warning:Important", not a placeholder.
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
90
149
|
counts.set(label, (counts.get(label) ?? 0) + 1);
|
|
91
150
|
spans.push([m.index, m.index + m[0].length]);
|
|
92
151
|
}
|
package/src/plurals.ts
CHANGED
|
@@ -44,6 +44,60 @@ export function categoriesFor(locale: string): Set<string> | null {
|
|
|
44
44
|
return result;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
/**
|
|
48
|
+
* Which integers a locale assigns to each plural category.
|
|
49
|
+
*
|
|
50
|
+
* 0..200 is enough to separate the cases that matter: Scottish Gaelic `one`
|
|
51
|
+
* picks up 11, Russian `one` picks up 21 and 31, Welsh `zero` takes 0 while its
|
|
52
|
+
* `one` is only 1. Further out the patterns repeat.
|
|
53
|
+
*/
|
|
54
|
+
const members = new Map<string, Map<string, Set<number>> | null>();
|
|
55
|
+
|
|
56
|
+
function membersFor(locale: string): Map<string, Set<number>> | null {
|
|
57
|
+
const cached = members.get(locale);
|
|
58
|
+
if (cached !== undefined) return cached;
|
|
59
|
+
|
|
60
|
+
let result: Map<string, Set<number>> | null = null;
|
|
61
|
+
// categoriesFor already refuses locales Intl silently substitutes for.
|
|
62
|
+
if (categoriesFor(locale) !== null) {
|
|
63
|
+
const rules = new Intl.PluralRules(locale.replace(/_/g, '-'), { type: 'cardinal' });
|
|
64
|
+
result = new Map();
|
|
65
|
+
for (let n = 0; n <= 200; n++) {
|
|
66
|
+
const category = rules.select(n);
|
|
67
|
+
let set = result.get(category);
|
|
68
|
+
if (!set) {
|
|
69
|
+
set = new Set();
|
|
70
|
+
result.set(category, set);
|
|
71
|
+
}
|
|
72
|
+
set.add(n);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
members.set(locale, result);
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* The numbers `category` covers in `target` but not in `source`, or null when
|
|
82
|
+
* either locale is unknown.
|
|
83
|
+
*
|
|
84
|
+
* This is the difference between a phrase that can name its quantity in words
|
|
85
|
+
* and one that cannot. English `one` is exactly 1, so "less than a minute"
|
|
86
|
+
* says everything; Scottish Gaelic `one` also covers 11, where the same
|
|
87
|
+
* sentence would claim eleven minutes is less than one.
|
|
88
|
+
*/
|
|
89
|
+
export function categoryReachesFurther(
|
|
90
|
+
source: string,
|
|
91
|
+
target: string,
|
|
92
|
+
category: string,
|
|
93
|
+
): number[] | null {
|
|
94
|
+
const from = membersFor(source)?.get(category);
|
|
95
|
+
const to = membersFor(target)?.get(category);
|
|
96
|
+
if (!from || !to) return null;
|
|
97
|
+
const beyond = [...to].filter((n) => !from.has(n));
|
|
98
|
+
return beyond.length > 0 ? beyond : null;
|
|
99
|
+
}
|
|
100
|
+
|
|
47
101
|
// ---------------------------------------------------------------------------
|
|
48
102
|
// ICU MessageFormat
|
|
49
103
|
// ---------------------------------------------------------------------------
|
package/src/translate.ts
CHANGED
|
@@ -199,9 +199,10 @@ export function validate(
|
|
|
199
199
|
|
|
200
200
|
if (proposed.trim() === '') return ['empty translation'];
|
|
201
201
|
|
|
202
|
+
const sourcePlaceholders = extractPlaceholders(job.source, config.placeholderSyntaxes);
|
|
202
203
|
const lost = diffPlaceholders(
|
|
203
|
-
|
|
204
|
-
extractPlaceholders(proposed, config.placeholderSyntaxes),
|
|
204
|
+
sourcePlaceholders,
|
|
205
|
+
extractPlaceholders(proposed, config.placeholderSyntaxes, sourcePlaceholders.keys()),
|
|
205
206
|
);
|
|
206
207
|
if (lost.missing.length > 0) problems.push(`placeholders lost: ${lost.missing.join(', ')}`);
|
|
207
208
|
if (lost.extra.length > 0) problems.push(`placeholders invented: ${lost.extra.join(', ')}`);
|
package/src/types.ts
CHANGED
|
@@ -14,6 +14,7 @@ export const RULE_IDS = [
|
|
|
14
14
|
'plural_missing_category',
|
|
15
15
|
'plural_extra_category',
|
|
16
16
|
'plural_selector_lost',
|
|
17
|
+
'plural_needs_placeholder',
|
|
17
18
|
'dnt_violation',
|
|
18
19
|
'glossary_violation',
|
|
19
20
|
'inconsistent_translation',
|
|
@@ -43,6 +44,11 @@ export const DEFAULT_RULES: Record<RuleId, RuleSetting> = {
|
|
|
43
44
|
plural_missing_category: 'warning',
|
|
44
45
|
plural_extra_category: 'warning',
|
|
45
46
|
plural_selector_lost: 'warning',
|
|
47
|
+
// The source form can drop a placeholder its own language does not need —
|
|
48
|
+
// English `one` means exactly 1, so "less than a minute" is complete. A
|
|
49
|
+
// target whose `one` also covers 11 cannot copy that, and no other rule looks
|
|
50
|
+
// for it, because nothing is missing relative to the source.
|
|
51
|
+
plural_needs_placeholder: 'warning',
|
|
46
52
|
dnt_violation: 'warning',
|
|
47
53
|
glossary_violation: 'warning',
|
|
48
54
|
// Reusing one wording for a repeated source string is often deliberate, so
|