@mdn/fred 2.6.1 → 2.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/components/compat-table/element.js +1 -6
  3. package/components/content-section/server.css +16 -0
  4. package/l10n/fluent.js +35 -5
  5. package/l10n/locales/de.ftl +17 -17
  6. package/l10n/locales/en-US.ftl +15 -15
  7. package/l10n/locales/fr.ftl +17 -17
  8. package/l10n/locales/zh-CN.ftl +17 -17
  9. package/l10n/template.ftl +17 -17
  10. package/out/service-worker.js +1 -1
  11. package/out/static/client/{1111.53dba753dc3eb961.js → 1111.c87a899e1dfa66e2.js} +3 -3
  12. package/out/static/client/{1111.53dba753dc3eb961.js.map → 1111.c87a899e1dfa66e2.js.map} +1 -1
  13. package/out/static/client/{1550.c301ea407e875fce.js → 1550.28c1604f8ddeb85d.js} +19 -19
  14. package/out/static/client/1550.28c1604f8ddeb85d.js.map +1 -0
  15. package/out/static/client/{6002.a03e92074fe12303.js → 6002.b8ee179b783a6ed9.js} +7 -8
  16. package/out/static/client/6002.b8ee179b783a6ed9.js.map +1 -0
  17. package/out/static/client/6216.96bf25a9941b1705.js +2 -0
  18. package/out/static/client/6216.96bf25a9941b1705.js.map +1 -0
  19. package/out/static/client/{6333.530138f4b30df5a7.js → 6333.d2c9af5b65988046.js} +18 -18
  20. package/out/static/client/6333.d2c9af5b65988046.js.map +1 -0
  21. package/out/static/client/6703.19836388dfba3a26.js +3 -0
  22. package/out/static/client/6703.19836388dfba3a26.js.map +1 -0
  23. package/out/static/client/{9456.a17794342ff9086a.js → 9456.c664136cffa5c45c.js} +18 -18
  24. package/out/static/client/9456.c664136cffa5c45c.js.map +1 -0
  25. package/out/static/client/{index.1aa902f2877f6169.js → index.8d9d3fc7007ac6c9.js} +24 -24
  26. package/out/static/client/index.8d9d3fc7007ac6c9.js.map +1 -0
  27. package/out/static/client/{runtime.dc0d40fc704cab38.js → runtime.b626b01b6203a207.js} +2 -2
  28. package/out/static/client/{runtime.dc0d40fc704cab38.js.map → runtime.b626b01b6203a207.js.map} +1 -1
  29. package/out/static/client/stats.json +197 -197
  30. package/out/static/client/{styles-content-section.447b2154ef6d091d.css → styles-content-section.64d82cff4db3bf61.css} +2 -2
  31. package/out/static/client/styles-content-section.64d82cff4db3bf61.css.map +1 -0
  32. package/out/static/client/{styles-global.64aa0c760d2688b4.js → styles-global.bbe62c66bfdbcd4d.js} +1 -1
  33. package/out/static/client/styles-global.e9f66980fd6d9827.css +2 -0
  34. package/out/static/client/styles-global.e9f66980fd6d9827.css.map +1 -0
  35. package/out/static/legacy/{1689.9711944d8ca293fe.js → 1689.c0b991fb10a9e7cb.js} +3 -3
  36. package/out/static/legacy/{1689.9711944d8ca293fe.js.map → 1689.c0b991fb10a9e7cb.js.map} +1 -1
  37. package/out/static/legacy/{1745.98ac3d247214830b.js → 1745.82a1f10c1503c733.js} +3 -3
  38. package/out/static/legacy/{1745.98ac3d247214830b.js.map → 1745.82a1f10c1503c733.js.map} +1 -1
  39. package/out/static/legacy/{6186.d28521fe744f5fce.js → 6186.b6bdcd96fbe2e1b9.js} +3 -3
  40. package/out/static/legacy/{6186.d28521fe744f5fce.js.map → 6186.b6bdcd96fbe2e1b9.js.map} +1 -1
  41. package/out/static/legacy/6753.b8ce73a4530c7c97.js +27 -0
  42. package/out/static/legacy/6753.b8ce73a4530c7c97.js.map +1 -0
  43. package/out/static/legacy/asset-manifest.json +13 -13
  44. package/out/static/legacy/{index.9dc3c2419a5a39a3.js → index.3434d57e71ba6934.js} +4 -4
  45. package/out/static/legacy/{index.9dc3c2419a5a39a3.js.map → index.3434d57e71ba6934.js.map} +1 -1
  46. package/out/static/legacy/{index.e64d272f9892581a.html → index.c93dd3065fbda85c.html} +1 -1
  47. package/out/static/legacy/stats.json +10 -10
  48. package/out/static/legacy/{yari.c83cdb7dea1873d5.js → yari.04fc2a81492d16ef.js} +4 -4
  49. package/out/static/legacy/{yari.c83cdb7dea1873d5.js.map → yari.04fc2a81492d16ef.js.map} +1 -1
  50. package/out/static/ssr/1550.js +18 -18
  51. package/out/static/ssr/1550.js.map +1 -1
  52. package/out/static/ssr/6333.js +17 -17
  53. package/out/static/ssr/6333.js.map +1 -1
  54. package/out/static/ssr/9456.js +17 -17
  55. package/out/static/ssr/9456.js.map +1 -1
  56. package/out/static/ssr/index.js +31 -32
  57. package/out/static/ssr/index.js.map +1 -1
  58. package/out/static/ssr/stats.json +4 -4
  59. package/package.json +18 -18
  60. package/scripts/tests.js +90 -113
  61. package/test/README.md +7 -9
  62. package/out/static/client/1550.c301ea407e875fce.js.map +0 -1
  63. package/out/static/client/6002.a03e92074fe12303.js.map +0 -1
  64. package/out/static/client/6216.78a5cbef9a158ef8.js +0 -2
  65. package/out/static/client/6216.78a5cbef9a158ef8.js.map +0 -1
  66. package/out/static/client/6333.530138f4b30df5a7.js.map +0 -1
  67. package/out/static/client/6703.145548dea2dbb16d.js +0 -3
  68. package/out/static/client/6703.145548dea2dbb16d.js.map +0 -1
  69. package/out/static/client/9456.a17794342ff9086a.js.map +0 -1
  70. package/out/static/client/index.1aa902f2877f6169.js.map +0 -1
  71. package/out/static/client/styles-content-section.447b2154ef6d091d.css.map +0 -1
  72. package/out/static/client/styles-global.653c021fe5dca598.css +0 -2
  73. package/out/static/client/styles-global.653c021fe5dca598.css.map +0 -1
  74. package/out/static/legacy/6753.c3e5bc5b6a088f28.js +0 -27
  75. package/out/static/legacy/6753.c3e5bc5b6a088f28.js.map +0 -1
  76. /package/out/static/client/{1111.53dba753dc3eb961.js.LICENSE.txt → 1111.c87a899e1dfa66e2.js.LICENSE.txt} +0 -0
  77. /package/out/static/client/{6703.145548dea2dbb16d.js.LICENSE.txt → 6703.19836388dfba3a26.js.LICENSE.txt} +0 -0
  78. /package/out/static/client/{index.1aa902f2877f6169.js.LICENSE.txt → index.8d9d3fc7007ac6c9.js.LICENSE.txt} +0 -0
  79. /package/out/static/legacy/{1689.9711944d8ca293fe.js.LICENSE.txt → 1689.c0b991fb10a9e7cb.js.LICENSE.txt} +0 -0
  80. /package/out/static/legacy/{1745.98ac3d247214830b.js.LICENSE.txt → 1745.82a1f10c1503c733.js.LICENSE.txt} +0 -0
  81. /package/out/static/legacy/{6186.d28521fe744f5fce.js.LICENSE.txt → 6186.b6bdcd96fbe2e1b9.js.LICENSE.txt} +0 -0
  82. /package/out/static/legacy/{6753.c3e5bc5b6a088f28.js.LICENSE.txt → 6753.b8ce73a4530c7c97.js.LICENSE.txt} +0 -0
  83. /package/out/static/legacy/{index.9dc3c2419a5a39a3.js.LICENSE.txt → index.3434d57e71ba6934.js.LICENSE.txt} +0 -0
  84. /package/out/static/legacy/{yari.c83cdb7dea1873d5.js.LICENSE.txt → yari.04fc2a81492d16ef.js.LICENSE.txt} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,53 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.6.4](https://github.com/mdn/fred/compare/v2.6.3...v2.6.4) (2026-05-22)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **l10n:** correct compat-support-flags rendering across locales ([#1562](https://github.com/mdn/fred/issues/1562)) ([2f5b04f](https://github.com/mdn/fred/commit/2f5b04fa8ea970c839102d211aa8efd06a585880))
9
+
10
+
11
+ ### Miscellaneous
12
+
13
+ * **deps:** bump @mdn/rari from 0.2.24 to 0.2.25 ([#1597](https://github.com/mdn/fred/issues/1597)) ([ed147d1](https://github.com/mdn/fred/commit/ed147d19d49fdb3e1d6b8b3e222a492f86844bcd))
14
+
15
+ ## [2.6.3](https://github.com/mdn/fred/compare/v2.6.2...v2.6.3) (2026-05-21)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **content-section:** display index in multiple columns ([#1563](https://github.com/mdn/fred/issues/1563)) ([77cb0d0](https://github.com/mdn/fred/commit/77cb0d07f9b322e6e9d118932280193cfba5984e))
21
+
22
+
23
+ ### Miscellaneous
24
+
25
+ * **deps:** bump @mdn/rari from 0.2.23 to 0.2.24 ([#1594](https://github.com/mdn/fred/issues/1594)) ([f7a9855](https://github.com/mdn/fred/commit/f7a985549bfc357d6b565ca0f17488a4c954d951))
26
+ * **tests:** move from args to commands in cli ([#1590](https://github.com/mdn/fred/issues/1590)) ([f3afadc](https://github.com/mdn/fred/commit/f3afadc5f64d6f02e9cf923d70673adf545b6cc1))
27
+
28
+ ## [2.6.2](https://github.com/mdn/fred/compare/v2.6.1...v2.6.2) (2026-05-15)
29
+
30
+
31
+ ### Bug Fixes
32
+
33
+ * **compat-table:** revert report action to plain link ([#1549](https://github.com/mdn/fred/issues/1549)) ([7049e96](https://github.com/mdn/fred/commit/7049e96232e40a9b098dc1e5bd24ff411beabc73))
34
+ * **content-section:** decrease code paddings for headings ([#1561](https://github.com/mdn/fred/issues/1561)) ([99801fc](https://github.com/mdn/fred/commit/99801fcc75d6a8eddaa8540958c91fa27e8471ec))
35
+
36
+
37
+ ### Miscellaneous
38
+
39
+ * **deps-dev:** bump @babel/plugin-transform-modules-systemjs ([94036c4](https://github.com/mdn/fred/commit/94036c43829bedf39fd9c6690df68b281c33ae9e))
40
+ * **deps-dev:** bump @babel/plugin-transform-modules-systemjs from 7.27.1 to 7.29.4 ([#1555](https://github.com/mdn/fred/issues/1555)) ([94036c4](https://github.com/mdn/fred/commit/94036c43829bedf39fd9c6690df68b281c33ae9e))
41
+ * **deps-dev:** bump @codemirror/view from 6.42.0 to 6.42.1 in the npm-dev group ([#1551](https://github.com/mdn/fred/issues/1551)) ([33ec989](https://github.com/mdn/fred/commit/33ec9891f6e578437576c06d50e188857cd86b6d))
42
+ * **deps-dev:** bump @codemirror/view in the npm-dev group ([33ec989](https://github.com/mdn/fred/commit/33ec9891f6e578437576c06d50e188857cd86b6d))
43
+ * **deps-dev:** bump @mdn/browser-compat-data from 7.3.14 to 7.3.15 ([#1559](https://github.com/mdn/fred/issues/1559)) ([e2aaef0](https://github.com/mdn/fred/commit/e2aaef0f21f8ad1e30d89358cffe608b15c670f2))
44
+ * **deps-dev:** bump fast-uri from 3.0.6 to 3.1.2 ([#1554](https://github.com/mdn/fred/issues/1554)) ([94640e6](https://github.com/mdn/fred/commit/94640e6fce665828d72e2753ce888c3c95f5a4bd))
45
+ * **deps-dev:** bump fast-xml-builder from 1.1.4 to 1.2.0 ([#1553](https://github.com/mdn/fred/issues/1553)) ([4d8ce05](https://github.com/mdn/fred/commit/4d8ce05989093857a140729e940736528ef2d028))
46
+ * **deps-dev:** bump the npm-dev group across 1 directory with 5 updates ([#1569](https://github.com/mdn/fred/issues/1569)) ([2450d74](https://github.com/mdn/fred/commit/2450d7473647fd8b7195c846a04ad6ab5edda902))
47
+ * **deps-dev:** bump the npm-dev group with 2 updates ([#1558](https://github.com/mdn/fred/issues/1558)) ([4b5a6fc](https://github.com/mdn/fred/commit/4b5a6fc9483e903249ab46d91889f699275a1ff6))
48
+ * **deps:** bump @mdn/rari from 0.2.22 to 0.2.23 ([#1570](https://github.com/mdn/fred/issues/1570)) ([c2dc03e](https://github.com/mdn/fred/commit/c2dc03ef21c895bc05175e967f10a36a182fecef))
49
+ * **deps:** bump the npm-prod group with 3 updates ([#1568](https://github.com/mdn/fred/issues/1568)) ([99b7e89](https://github.com/mdn/fred/commit/99b7e89d58cc772df3acbcc56b9f10088b4afc96))
50
+
3
51
  ## [2.6.1](https://github.com/mdn/fred/compare/v2.6.0...v2.6.1) (2026-05-07)
4
52
 
5
53
 
@@ -224,16 +224,11 @@ export class MDNCompatTable extends L10nMixin(LitElement) {
224
224
  }
225
225
 
226
226
  _renderIssueLink() {
227
- const onClick = (/** @type {MouseEvent} */ event) => {
228
- event.preventDefault();
229
- window.open(this._issueUrl, "_blank", "noopener,noreferrer");
230
- };
231
227
  const source_file = this.data.__compat?.source_file;
232
228
  return html`<div class="bc-on-github">
233
229
  <a
234
230
  class="bc-github-link external external-icon"
235
- href="#"
236
- @click=${onClick}
231
+ href=${this._issueUrl}
237
232
  target="_blank"
238
233
  rel="noopener noreferrer"
239
234
  title=${this.l10n(
@@ -18,6 +18,10 @@
18
18
  margin: 1rem 0 0;
19
19
  font-weight: var(--font-weight-normal);
20
20
  line-height: var(--font-line-header);
21
+
22
+ code {
23
+ padding: 0 0.125em;
24
+ }
21
25
  }
22
26
 
23
27
  h2 {
@@ -380,6 +384,18 @@
380
384
  }
381
385
  }
382
386
 
387
+ /* Alphabetical/grouped indexes (rari `CSS_Ref`, `ListGroups`, `APIListAlpha`, `css_ref_list`) */
388
+ .index {
389
+ ul {
390
+ columns: 18rem;
391
+ column-gap: 2rem;
392
+ }
393
+
394
+ li {
395
+ break-inside: avoid;
396
+ }
397
+ }
398
+
383
399
  /* Article footer */
384
400
  &.article-footer {
385
401
  margin: 2rem 0;
package/l10n/fluent.js CHANGED
@@ -5,7 +5,8 @@ import { unsafeHTML } from "lit/directives/unsafe-html.js";
5
5
  import enUS_ftl from "./locales/en-US.ftl";
6
6
 
7
7
  /**
8
- * @import { AllowedTags } from "insane";
8
+ * @import { FluentVariable } from "@fluent/bundle"
9
+ * @import { AllowedTags } from "insane"
9
10
  */
10
11
 
11
12
  /** @type {Record<string, string>} */
@@ -56,7 +57,7 @@ export class Fluent {
56
57
  /**
57
58
  * @param {string} id
58
59
  * @param {string} [attr]
59
- * @param {Record<string, any>} [args]
60
+ * @param {Record<string, FluentVariable | undefined>} [args]
60
61
  * @param {Record<string, import("../types/fluent.js").Element>} [elements]
61
62
  * @returns {string | ReturnType<typeof unsafeHTML> | undefined}
62
63
  */
@@ -123,7 +124,7 @@ export class Fluent {
123
124
  /**
124
125
  * @param {string} id
125
126
  * @param {string} [attr]
126
- * @param {Record<string, any>} [args]
127
+ * @param {Record<string, FluentVariable | undefined>} [args]
127
128
  * @param {FluentBundle | undefined} [bundle]
128
129
  * @param {boolean} [us]
129
130
  * @returns {string | undefined}
@@ -165,7 +166,7 @@ export class Fluent {
165
166
 
166
167
  /** @type {Error[]} */
167
168
  const errors = [];
168
- const formatted = bundle?.formatPattern(message, args, errors);
169
+ const formatted = bundle?.formatPattern(message, escapeArgs(args), errors);
169
170
  if (errors.length > 0) {
170
171
  console.error(errors);
171
172
  }
@@ -173,6 +174,35 @@ export class Fluent {
173
174
  }
174
175
  }
175
176
 
177
+ /**
178
+ * HTML-escape string-valued args so that variable substitution can't inject
179
+ * tags that confuse the downstream sanitizer. Only string values are touched
180
+ * so that Number/Date selectors keep working.
181
+ *
182
+ * @param {Record<string, FluentVariable | undefined>} args
183
+ * @returns {Record<string, FluentVariable>}
184
+ */
185
+ function escapeArgs(args) {
186
+ /** @type {Record<string, FluentVariable>} */
187
+ const out = {};
188
+ for (const [k, v] of Object.entries(args)) {
189
+ if (v !== undefined) {
190
+ out[k] = typeof v === "string" ? escapeHtml(v) : v;
191
+ }
192
+ }
193
+ return out;
194
+ }
195
+
196
+ /**
197
+ * @param {string} s
198
+ */
199
+ function escapeHtml(s) {
200
+ return s
201
+ .replaceAll("&", "&amp;")
202
+ .replaceAll("<", "&lt;")
203
+ .replaceAll(">", "&gt;");
204
+ }
205
+
176
206
  /** @type {Map<string, Fluent>} */
177
207
  const fluent = new Map();
178
208
 
@@ -245,7 +275,7 @@ export default function getFluentContext(locale) {
245
275
  }
246
276
 
247
277
  /**
248
- * @param {{ id: string, attr?: string, args?: Record<string, any>, elements?: Record<string, import("../types/fluent.js").Element> }} param0
278
+ * @param {{ id: string, attr?: string, args?: Record<string, FluentVariable | undefined>, elements?: Record<string, import("../types/fluent.js").Element> }} param0
249
279
  */
250
280
  l10n.raw = function ({ id, attr, args, elements }) {
251
281
  const fluent = getLocale(locale);
@@ -58,19 +58,19 @@ compat-support-altname = Alternativer Name: { $altname }
58
58
  compat-support-removed = Ab { $version } entfernt
59
59
  compat-support-see-impl-url = Siehe <a data-l10n-name="impl_url">{ $label }</a>
60
60
  compat-support-flags =
61
- { NUMBER($has_added) ->
62
- [one] Ab Version { $version_added }
63
- *[other] { "" }
61
+ { $has_added ->
62
+ [1] Ab Version { $version_added }
63
+ *[0] { "" }
64
64
  }{ $has_last ->
65
- [one]
66
- { NUMBER($has_added) ->
67
- *[zero] Bis { $versionLast } muss
68
- [one] { " " }bis { $versionLast } muss
65
+ [1]
66
+ { $has_added ->
67
+ *[0] Bis { $versionLast } muss
68
+ [1] { " " }bis { $versionLast } muss
69
69
  }
70
- *[zero]
71
- { NUMBER($has_added) ->
72
- *[zero] muss
73
- [one] { " " }muss
70
+ *[0]
71
+ { $has_added ->
72
+ *[0] muss
73
+ [1] { " " }muss
74
74
  }
75
75
  }
76
76
  { " " }die Einstellung <code data-l10n-name="name">{ $flag_name }</code>{ " " }
@@ -78,17 +78,17 @@ compat-support-flags =
78
78
  *[preference] explizit festgelegt werden
79
79
  [runtime_flag] als Laufzeit-Flag explizit festgelegt werden
80
80
 
81
- }{ NUMBER($has_value) ->
82
- [one] { " " }auf <code data-l10n-name="value">{ $flag_value }</code>
83
- *[other] { "" }
81
+ }{ $has_value ->
82
+ [1] { " " }auf <code data-l10n-name="value">{ $flag_value }</code>
83
+ *[0] { "" }
84
84
  }{ "." }
85
- { NUMBER($has_pref_url) ->
86
- [one]
85
+ { $has_pref_url ->
86
+ [1]
87
87
  { $flag_type ->
88
88
  [preference] Um die Einstellungen in { $browser_name } zu ändern, besuchen Sie { $browser_pref_url }.
89
89
  *[other] { "" }
90
90
  }
91
- *[other] { "" }
91
+ *[0] { "" }
92
92
  }
93
93
  compat-legend-yes = { compat-support-full }
94
94
  compat-legend-partial = { compat-support-partial }
@@ -91,33 +91,33 @@ compat-support-altname = Alternate name: { $altname }
91
91
  compat-support-removed = Removed in { $version } and later
92
92
  compat-support-see-impl-url = See <a data-l10n-name="impl_url">{ $label }</a>
93
93
  compat-support-flags =
94
- { NUMBER($has_added) ->
95
- [one] From version { $version_added }
96
- *[other] {""}
94
+ { $has_added ->
95
+ [1] From version { $version_added }
96
+ *[0] {""}
97
97
  }{ $has_last ->
98
- [one] { NUMBER($has_added) ->
99
- *[zero] Until { $versionLast } users
100
- [one] {" "}until { $versionLast } users
98
+ [1] { $has_added ->
99
+ *[0] Until { $versionLast } users
100
+ [1] {" "}until { $versionLast } users
101
101
  }
102
- *[zero] { NUMBER($has_added) ->
103
- *[zero] Users
104
- [one] {" "}users
102
+ *[0] { $has_added ->
103
+ *[0] Users
104
+ [1] {" "}users
105
105
  }
106
106
  }
107
107
  {" "}must explicitly set the <code data-l10n-name="name">{ $flag_name }</code>{" "}
108
108
  { $flag_type ->
109
109
  *[preference] preference
110
110
  [runtime_flag] runtime flag
111
- }{ NUMBER($has_value) ->
112
- [one] {" "}to <code data-l10n-name="value">{ $flag_value }</code>
113
- *[other] {""}
111
+ }{ $has_value ->
112
+ [1] {" "}to <code data-l10n-name="value">{ $flag_value }</code>
113
+ *[0] {""}
114
114
  }{"."}
115
- { NUMBER($has_pref_url) ->
116
- [one] { $flag_type ->
115
+ { $has_pref_url ->
116
+ [1] { $flag_type ->
117
117
  [preference] To change preferences in { $browser_name }, visit { $browser_pref_url }.
118
118
  *[other] {""}
119
119
  }
120
- *[other] {""}
120
+ *[0] {""}
121
121
  }
122
122
 
123
123
  compat-legend = Legend
@@ -52,19 +52,19 @@ compat-support-altname = Nom alternatif : { $altname }
52
52
  compat-support-removed = Supprimé en version { $version } et supérieure
53
53
  compat-support-see-impl-url = Voir <a data-l10n-name="impl_url">{ $label }</a>
54
54
  compat-support-flags =
55
- { NUMBER($has_added) ->
56
- [one] De la version { $version_added }
57
- *[other] { "" }
55
+ { $has_added ->
56
+ [1] De la version { $version_added }
57
+ *[0] { "" }
58
58
  }{ $has_last ->
59
- [one]
60
- { NUMBER($has_added) ->
61
- *[zero] Jusqu'à la version { $versionLast }, les utilisateur·ice·s
62
- [one] { " " }jusqu'à { $versionLast }, les utilisateur·ice·s
59
+ [1]
60
+ { $has_added ->
61
+ *[0] Jusqu'à la version { $versionLast }, les utilisateur·ice·s
62
+ [1] { " " }jusqu'à { $versionLast }, les utilisateur·ice·s
63
63
  }
64
- *[zero]
65
- { NUMBER($has_added) ->
66
- *[zero] Les utilisateur·ice·s
67
- [one] {" "}les utilisateur·ice·s
64
+ *[0]
65
+ { $has_added ->
66
+ *[0] Les utilisateur·ice·s
67
+ [1] {" "}les utilisateur·ice·s
68
68
  }
69
69
  }
70
70
  { " " }doivent explicitement définir
@@ -73,17 +73,17 @@ compat-support-flags =
73
73
  [runtime_flag] l'indicateur d'exécution
74
74
  }
75
75
  { " " }<code data-l10n-name="name">{ $flag_name }</code>
76
- { NUMBER($has_value) ->
77
- [one] { " " }à <code data-l10n-name="value">{ $flag_value }</code>
78
- *[other] { "" }
76
+ { $has_value ->
77
+ [1] { " " }à <code data-l10n-name="value">{ $flag_value }</code>
78
+ *[0] { "" }
79
79
  }{"."}
80
- { NUMBER($has_pref_url) ->
81
- [one]
80
+ { $has_pref_url ->
81
+ [1]
82
82
  { $flag_type ->
83
83
  [preference] Pour changer vos préférences sur le navigateur { $browser_name }, visitez { $browser_pref_url }.
84
84
  *[other] { "" }
85
85
  }
86
- *[other] { "" }
86
+ *[0] { "" }
87
87
  }
88
88
  compat-legend-yes = { compat-support-full }
89
89
  compat-legend-partial = { compat-support-partial }
@@ -52,36 +52,36 @@ compat-support-altname = 备用名称:{ $altname }
52
52
  compat-support-removed = 已在 { $version } 及更高版本中移除
53
53
  compat-support-see-impl-url = 参见 <a data-l10n-name="impl_url">{ $label }</a>
54
54
  compat-support-flags =
55
- { NUMBER($has_added) ->
56
- [one] 自版本 { $version_added } 起
57
- *[other] { "" }
55
+ { $has_added ->
56
+ [1] 自版本 { $version_added } 起
57
+ *[0] { "" }
58
58
  }{ $has_last ->
59
- [one]
60
- { NUMBER($has_added) ->
61
- *[zero] 截至 { $versionLast },用户
62
- [one] { " " }截至 { $versionLast },用户
59
+ [1]
60
+ { $has_added ->
61
+ *[0] 截至 { $versionLast },用户
62
+ [1] { " " }截至 { $versionLast },用户
63
63
  }
64
- *[zero]
65
- { NUMBER($has_added) ->
66
- *[zero] 用户
67
- [one] { " " }用户
64
+ *[0]
65
+ { $has_added ->
66
+ *[0] 用户
67
+ [1] { " " }用户
68
68
  }
69
69
  }
70
70
  { " " }必须显式将 <code data-l10n-name="name">{ $flag_name }</code>{ " " }
71
71
  { $flag_type ->
72
72
  *[preference] 首选项
73
73
  [runtime_flag] 运行时标志
74
- }{ NUMBER($has_value) ->
75
- [one] { " " }设置为 <code data-l10n-name="value">{ $flag_value }</code>
76
- *[other] { "" }
74
+ }{ $has_value ->
75
+ [1] { " " }设置为 <code data-l10n-name="value">{ $flag_value }</code>
76
+ *[0] { "" }
77
77
  }{ "。" }
78
- { NUMBER($has_pref_url) ->
79
- [one]
78
+ { $has_pref_url ->
79
+ [1]
80
80
  { $flag_type ->
81
81
  [preference] 要更改 { $browser_name } 中的首选项,请访问 { $browser_pref_url }。
82
82
  *[other] { "" }
83
83
  }
84
- *[other] { "" }
84
+ *[0] { "" }
85
85
  }
86
86
  compat-legend-yes = { compat-support-full }
87
87
  compat-legend-partial = { compat-support-partial }
package/l10n/template.ftl CHANGED
@@ -56,36 +56,36 @@ compat-support-altname = Alternate name: { $altname }
56
56
  compat-support-removed = Removed in { $version } and later
57
57
  compat-support-see-impl-url = See <a data-l10n-name="impl_url">{ $label }</a>
58
58
  compat-support-flags =
59
- { NUMBER($has_added) ->
60
- [one] From version { $version_added }
61
- *[other] { "" }
59
+ { $has_added ->
60
+ [1] From version { $version_added }
61
+ *[0] { "" }
62
62
  }{ $has_last ->
63
- [one]
64
- { NUMBER($has_added) ->
65
- *[zero] Until { $versionLast } users
66
- [one] { " " }until { $versionLast } users
63
+ [1]
64
+ { $has_added ->
65
+ *[0] Until { $versionLast } users
66
+ [1] { " " }until { $versionLast } users
67
67
  }
68
- *[zero]
69
- { NUMBER($has_added) ->
70
- *[zero] Users
71
- [one] { " " }users
68
+ *[0]
69
+ { $has_added ->
70
+ *[0] Users
71
+ [1] { " " }users
72
72
  }
73
73
  }
74
74
  { " " }must explicitly set the <code data-l10n-name="name">{ $flag_name }</code>{ " " }
75
75
  { $flag_type ->
76
76
  *[preference] preference
77
77
  [runtime_flag] runtime flag
78
- }{ NUMBER($has_value) ->
79
- [one] { " " }to <code data-l10n-name="value">{ $flag_value }</code>
80
- *[other] { "" }
78
+ }{ $has_value ->
79
+ [1] { " " }to <code data-l10n-name="value">{ $flag_value }</code>
80
+ *[0] { "" }
81
81
  }{ "." }
82
- { NUMBER($has_pref_url) ->
83
- [one]
82
+ { $has_pref_url ->
83
+ [1]
84
84
  { $flag_type ->
85
85
  [preference] To change preferences in { $browser_name }, visit { $browser_pref_url }.
86
86
  *[other] { "" }
87
87
  }
88
- *[other] { "" }
88
+ *[0] { "" }
89
89
  }
90
90
  compat-legend-yes = { compat-support-full }
91
91
  compat-legend-partial = { compat-support-partial }