@prezly/theme-kit-intl 10.13.0 → 10.15.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.
Files changed (53) hide show
  1. package/build/i18n/af.json +90 -0
  2. package/build/i18n/ar.json +125 -0
  3. package/build/i18n/az.json +90 -0
  4. package/build/i18n/be.json +112 -0
  5. package/build/i18n/bg.json +90 -0
  6. package/build/i18n/ca.json +90 -0
  7. package/build/i18n/cs.json +112 -0
  8. package/build/i18n/da.json +90 -0
  9. package/build/i18n/de.json +90 -0
  10. package/build/i18n/el.json +90 -0
  11. package/build/i18n/en.json +57 -1
  12. package/build/i18n/es.json +90 -0
  13. package/build/i18n/et.json +90 -0
  14. package/build/i18n/fi.json +90 -0
  15. package/build/i18n/fil.json +90 -0
  16. package/build/i18n/fr.json +90 -0
  17. package/build/i18n/ga.json +123 -0
  18. package/build/i18n/he.json +98 -0
  19. package/build/i18n/hi.json +90 -0
  20. package/build/i18n/hr.json +101 -0
  21. package/build/i18n/hu.json +90 -0
  22. package/build/i18n/id.json +79 -0
  23. package/build/i18n/it.json +90 -0
  24. package/build/i18n/ja.json +83 -0
  25. package/build/i18n/kk.json +90 -0
  26. package/build/i18n/ko.json +83 -0
  27. package/build/i18n/lt.json +112 -0
  28. package/build/i18n/lv.json +101 -0
  29. package/build/i18n/mt.json +112 -0
  30. package/build/i18n/nb.json +90 -0
  31. package/build/i18n/nl.json +90 -0
  32. package/build/i18n/pl.json +112 -0
  33. package/build/i18n/pt-BR.json +90 -0
  34. package/build/i18n/pt.json +90 -0
  35. package/build/i18n/ro.json +101 -0
  36. package/build/i18n/ru.json +112 -0
  37. package/build/i18n/sk.json +112 -0
  38. package/build/i18n/sl.json +112 -0
  39. package/build/i18n/sr.json +101 -0
  40. package/build/i18n/sv.json +90 -0
  41. package/build/i18n/sw.json +98 -0
  42. package/build/i18n/th.json +83 -0
  43. package/build/i18n/tr.json +90 -0
  44. package/build/i18n/uk.json +112 -0
  45. package/build/i18n/ur.json +90 -0
  46. package/build/i18n/uz.json +90 -0
  47. package/build/i18n/vi.json +79 -0
  48. package/build/i18n/zh-CN.json +79 -0
  49. package/build/i18n/zh-TW.json +79 -0
  50. package/build/messages/content.cjs +26 -1
  51. package/build/messages/content.d.ts +25 -0
  52. package/build/messages/content.mjs +26 -1
  53. package/package.json +72 -73
@@ -267,6 +267,96 @@
267
267
  "value": "Oxirgi hikoyalar"
268
268
  }
269
269
  ],
270
+ "liveEvent.badge": [
271
+ {
272
+ "type": 0,
273
+ "value": "Jonli"
274
+ }
275
+ ],
276
+ "liveEvent.ended": [
277
+ {
278
+ "type": 0,
279
+ "value": "Bu voqea yakunlandi"
280
+ }
281
+ ],
282
+ "liveEvent.lastUpdated": [
283
+ {
284
+ "type": 0,
285
+ "value": "Oxirgi yangilanish: "
286
+ },
287
+ {
288
+ "type": 1,
289
+ "value": "time"
290
+ }
291
+ ],
292
+ "liveEvent.latestNews": [
293
+ {
294
+ "type": 0,
295
+ "value": "So‘nggi yangiliklar"
296
+ }
297
+ ],
298
+ "liveEvent.newUpdates": [
299
+ {
300
+ "offset": 0,
301
+ "options": {
302
+ "one": {
303
+ "value": [
304
+ {
305
+ "type": 7
306
+ },
307
+ {
308
+ "type": 0,
309
+ "value": " ta yangi yangilanish"
310
+ }
311
+ ]
312
+ },
313
+ "other": {
314
+ "value": [
315
+ {
316
+ "type": 7
317
+ },
318
+ {
319
+ "type": 0,
320
+ "value": " ta yangi yangilanish"
321
+ }
322
+ ]
323
+ }
324
+ },
325
+ "pluralType": "cardinal",
326
+ "type": 6,
327
+ "value": "count"
328
+ }
329
+ ],
330
+ "liveEvent.noLiveEvents": [
331
+ {
332
+ "type": 0,
333
+ "value": "Hozircha jonli yangilanishlar yo‘q"
334
+ }
335
+ ],
336
+ "liveEvent.noLiveEventsText": [
337
+ {
338
+ "type": 0,
339
+ "value": "Yangilik bo‘lishi bilan yangilanishlar shu yerda paydo bo‘ladi."
340
+ }
341
+ ],
342
+ "liveEvent.previousEvents": [
343
+ {
344
+ "type": 0,
345
+ "value": "Oldingi voqealar"
346
+ }
347
+ ],
348
+ "liveEvent.subscribeTitle": [
349
+ {
350
+ "type": 0,
351
+ "value": "Yangilanishlarni e-pochta orqali oling"
352
+ }
353
+ ],
354
+ "liveEvent.updates": [
355
+ {
356
+ "type": 0,
357
+ "value": "Jonli yangiliklar"
358
+ }
359
+ ],
270
360
  "mediaGallery.imagesCount": [
271
361
  {
272
362
  "offset": 0,
@@ -267,6 +267,85 @@
267
267
  "value": "Câu chuyện mới nhất"
268
268
  }
269
269
  ],
270
+ "liveEvent.badge": [
271
+ {
272
+ "type": 0,
273
+ "value": "Trực tiếp"
274
+ }
275
+ ],
276
+ "liveEvent.ended": [
277
+ {
278
+ "type": 0,
279
+ "value": "Sự kiện này đã kết thúc"
280
+ }
281
+ ],
282
+ "liveEvent.lastUpdated": [
283
+ {
284
+ "type": 0,
285
+ "value": "Cập nhật lần cuối lúc "
286
+ },
287
+ {
288
+ "type": 1,
289
+ "value": "time"
290
+ }
291
+ ],
292
+ "liveEvent.latestNews": [
293
+ {
294
+ "type": 0,
295
+ "value": "Tin mới nhất"
296
+ }
297
+ ],
298
+ "liveEvent.newUpdates": [
299
+ {
300
+ "offset": 0,
301
+ "options": {
302
+ "other": {
303
+ "value": [
304
+ {
305
+ "type": 7
306
+ },
307
+ {
308
+ "type": 0,
309
+ "value": " cập nhật mới"
310
+ }
311
+ ]
312
+ }
313
+ },
314
+ "pluralType": "cardinal",
315
+ "type": 6,
316
+ "value": "count"
317
+ }
318
+ ],
319
+ "liveEvent.noLiveEvents": [
320
+ {
321
+ "type": 0,
322
+ "value": "Hiện không có cập nhật trực tiếp"
323
+ }
324
+ ],
325
+ "liveEvent.noLiveEventsText": [
326
+ {
327
+ "type": 0,
328
+ "value": "Các cập nhật sẽ xuất hiện tại đây ngay khi có tin mới."
329
+ }
330
+ ],
331
+ "liveEvent.previousEvents": [
332
+ {
333
+ "type": 0,
334
+ "value": "Các sự kiện trước"
335
+ }
336
+ ],
337
+ "liveEvent.subscribeTitle": [
338
+ {
339
+ "type": 0,
340
+ "value": "Nhận cập nhật qua email"
341
+ }
342
+ ],
343
+ "liveEvent.updates": [
344
+ {
345
+ "type": 0,
346
+ "value": "Cập nhật trực tiếp"
347
+ }
348
+ ],
270
349
  "mediaGallery.imagesCount": [
271
350
  {
272
351
  "offset": 0,
@@ -267,6 +267,85 @@
267
267
  "value": "最新故事"
268
268
  }
269
269
  ],
270
+ "liveEvent.badge": [
271
+ {
272
+ "type": 0,
273
+ "value": "实时"
274
+ }
275
+ ],
276
+ "liveEvent.ended": [
277
+ {
278
+ "type": 0,
279
+ "value": "此事件已结束"
280
+ }
281
+ ],
282
+ "liveEvent.lastUpdated": [
283
+ {
284
+ "type": 0,
285
+ "value": "最后更新于 "
286
+ },
287
+ {
288
+ "type": 1,
289
+ "value": "time"
290
+ }
291
+ ],
292
+ "liveEvent.latestNews": [
293
+ {
294
+ "type": 0,
295
+ "value": "最新消息"
296
+ }
297
+ ],
298
+ "liveEvent.newUpdates": [
299
+ {
300
+ "offset": 0,
301
+ "options": {
302
+ "other": {
303
+ "value": [
304
+ {
305
+ "type": 7
306
+ },
307
+ {
308
+ "type": 0,
309
+ "value": " 条新动态"
310
+ }
311
+ ]
312
+ }
313
+ },
314
+ "pluralType": "cardinal",
315
+ "type": 6,
316
+ "value": "count"
317
+ }
318
+ ],
319
+ "liveEvent.noLiveEvents": [
320
+ {
321
+ "type": 0,
322
+ "value": "目前没有实时更新"
323
+ }
324
+ ],
325
+ "liveEvent.noLiveEventsText": [
326
+ {
327
+ "type": 0,
328
+ "value": "一有消息,更新就会显示在这里。"
329
+ }
330
+ ],
331
+ "liveEvent.previousEvents": [
332
+ {
333
+ "type": 0,
334
+ "value": "往期事件"
335
+ }
336
+ ],
337
+ "liveEvent.subscribeTitle": [
338
+ {
339
+ "type": 0,
340
+ "value": "通过电子邮件接收更新"
341
+ }
342
+ ],
343
+ "liveEvent.updates": [
344
+ {
345
+ "type": 0,
346
+ "value": "实时动态"
347
+ }
348
+ ],
270
349
  "mediaGallery.imagesCount": [
271
350
  {
272
351
  "offset": 0,
@@ -267,6 +267,85 @@
267
267
  "value": "最新故事"
268
268
  }
269
269
  ],
270
+ "liveEvent.badge": [
271
+ {
272
+ "type": 0,
273
+ "value": "即時"
274
+ }
275
+ ],
276
+ "liveEvent.ended": [
277
+ {
278
+ "type": 0,
279
+ "value": "此事件已結束"
280
+ }
281
+ ],
282
+ "liveEvent.lastUpdated": [
283
+ {
284
+ "type": 0,
285
+ "value": "最後更新於 "
286
+ },
287
+ {
288
+ "type": 1,
289
+ "value": "time"
290
+ }
291
+ ],
292
+ "liveEvent.latestNews": [
293
+ {
294
+ "type": 0,
295
+ "value": "最新消息"
296
+ }
297
+ ],
298
+ "liveEvent.newUpdates": [
299
+ {
300
+ "offset": 0,
301
+ "options": {
302
+ "other": {
303
+ "value": [
304
+ {
305
+ "type": 7
306
+ },
307
+ {
308
+ "type": 0,
309
+ "value": " 則新動態"
310
+ }
311
+ ]
312
+ }
313
+ },
314
+ "pluralType": "cardinal",
315
+ "type": 6,
316
+ "value": "count"
317
+ }
318
+ ],
319
+ "liveEvent.noLiveEvents": [
320
+ {
321
+ "type": 0,
322
+ "value": "目前沒有即時更新"
323
+ }
324
+ ],
325
+ "liveEvent.noLiveEventsText": [
326
+ {
327
+ "type": 0,
328
+ "value": "一有消息,更新就會顯示在這裡。"
329
+ }
330
+ ],
331
+ "liveEvent.previousEvents": [
332
+ {
333
+ "type": 0,
334
+ "value": "過往事件"
335
+ }
336
+ ],
337
+ "liveEvent.subscribeTitle": [
338
+ {
339
+ "type": 0,
340
+ "value": "透過電子郵件接收更新"
341
+ }
342
+ ],
343
+ "liveEvent.updates": [
344
+ {
345
+ "type": 0,
346
+ "value": "即時動態"
347
+ }
348
+ ],
270
349
  "mediaGallery.imagesCount": [
271
350
  {
272
351
  "offset": 0,
@@ -89,13 +89,38 @@ var liveEvent = exports.liveEvent = (0, _dsl.defineMessages)({
89
89
  },
90
90
  noLiveEvents: {
91
91
  id: 'liveEvent.noLiveEvents',
92
- defaultMessage: 'No live events',
92
+ defaultMessage: 'No live updates right now',
93
93
  description: 'Shown when there is no ongoing event covered with live updates'
94
94
  },
95
+ noLiveEventsText: {
96
+ id: 'liveEvent.noLiveEventsText',
97
+ defaultMessage: 'Updates will appear here as soon as there is news.',
98
+ description: 'Shown below "No live updates right now", when there is no ongoing event'
99
+ },
100
+ latestNews: {
101
+ id: 'liveEvent.latestNews',
102
+ defaultMessage: 'Latest news',
103
+ description: 'Label in the top bar of a live news site, and the footer link to its homepage'
104
+ },
105
+ subscribeTitle: {
106
+ id: 'liveEvent.subscribeTitle',
107
+ defaultMessage: 'Get updates by email',
108
+ description: 'Title of the form to get an email each time a live news site is updated'
109
+ },
95
110
  previousEvents: {
96
111
  id: 'liveEvent.previousEvents',
97
112
  defaultMessage: 'Previous events',
98
113
  description: 'Title of a list of past events that were covered with live updates'
114
+ },
115
+ ended: {
116
+ id: 'liveEvent.ended',
117
+ defaultMessage: 'This event has ended',
118
+ description: 'Shown on the timeline of a past event, so readers know the updates are no longer live'
119
+ },
120
+ newUpdates: {
121
+ id: 'liveEvent.newUpdates',
122
+ defaultMessage: '{count, plural, one {# new update} other {# new updates} }',
123
+ description: 'Button above a live timeline that shows updates published since the reader opened the page'
99
124
  }
100
125
  });
101
126
  var cookieConsent = exports.cookieConsent = (0, _dsl.defineMessages)({
@@ -85,11 +85,36 @@ export declare const liveEvent: {
85
85
  defaultMessage: string;
86
86
  description: string;
87
87
  };
88
+ noLiveEventsText: {
89
+ id: string;
90
+ defaultMessage: string;
91
+ description: string;
92
+ };
93
+ latestNews: {
94
+ id: string;
95
+ defaultMessage: string;
96
+ description: string;
97
+ };
98
+ subscribeTitle: {
99
+ id: string;
100
+ defaultMessage: string;
101
+ description: string;
102
+ };
88
103
  previousEvents: {
89
104
  id: string;
90
105
  defaultMessage: string;
91
106
  description: string;
92
107
  };
108
+ ended: {
109
+ id: string;
110
+ defaultMessage: string;
111
+ description: string;
112
+ };
113
+ newUpdates: {
114
+ id: string;
115
+ defaultMessage: string;
116
+ description: string;
117
+ };
93
118
  };
94
119
  export declare const cookieConsent: {
95
120
  title: {
@@ -83,13 +83,38 @@ export var liveEvent = defineMessages({
83
83
  },
84
84
  noLiveEvents: {
85
85
  id: 'liveEvent.noLiveEvents',
86
- defaultMessage: 'No live events',
86
+ defaultMessage: 'No live updates right now',
87
87
  description: 'Shown when there is no ongoing event covered with live updates'
88
88
  },
89
+ noLiveEventsText: {
90
+ id: 'liveEvent.noLiveEventsText',
91
+ defaultMessage: 'Updates will appear here as soon as there is news.',
92
+ description: 'Shown below "No live updates right now", when there is no ongoing event'
93
+ },
94
+ latestNews: {
95
+ id: 'liveEvent.latestNews',
96
+ defaultMessage: 'Latest news',
97
+ description: 'Label in the top bar of a live news site, and the footer link to its homepage'
98
+ },
99
+ subscribeTitle: {
100
+ id: 'liveEvent.subscribeTitle',
101
+ defaultMessage: 'Get updates by email',
102
+ description: 'Title of the form to get an email each time a live news site is updated'
103
+ },
89
104
  previousEvents: {
90
105
  id: 'liveEvent.previousEvents',
91
106
  defaultMessage: 'Previous events',
92
107
  description: 'Title of a list of past events that were covered with live updates'
108
+ },
109
+ ended: {
110
+ id: 'liveEvent.ended',
111
+ defaultMessage: 'This event has ended',
112
+ description: 'Shown on the timeline of a past event, so readers know the updates are no longer live'
113
+ },
114
+ newUpdates: {
115
+ id: 'liveEvent.newUpdates',
116
+ defaultMessage: '{count, plural, one {# new update} other {# new updates} }',
117
+ description: 'Button above a live timeline that shows updates published since the reader opened the page'
93
118
  }
94
119
  });
95
120
  export var cookieConsent = defineMessages({
package/package.json CHANGED
@@ -1,75 +1,74 @@
1
1
  {
2
- "name": "@prezly/theme-kit-intl",
3
- "version": "10.13.0",
4
- "description": "Translations for Prezly themes",
5
- "type": "module",
6
- "main": "build/index.mjs",
7
- "types": "build/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./build/index.d.ts",
11
- "require": "./build/index.cjs",
12
- "default": "./build/index.mjs"
13
- },
14
- "./i18n": "./build/i18n",
15
- "./i18n/*": "./build/i18n/*"
2
+ "name": "@prezly/theme-kit-intl",
3
+ "version": "10.15.0",
4
+ "description": "Translations for Prezly themes",
5
+ "type": "module",
6
+ "main": "build/index.mjs",
7
+ "types": "build/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./build/index.d.ts",
11
+ "require": "./build/index.cjs",
12
+ "default": "./build/index.mjs"
16
13
  },
17
- "files": [
18
- "build",
19
- "README.md"
20
- ],
21
- "engines": {
22
- "node": ">= 14.x",
23
- "npm": ">= 7.x"
24
- },
25
- "scripts": {
26
- "clean": "rimraf --glob build/* *.tsbuildinfo",
27
- "prebuild": "pnpm clean && pnpm build:locales && pnpm format",
28
- "build": "pnpm intl:compile && pnpm build:types && pnpm build:esm && pnpm build:cjs",
29
- "build:locales": "node ./build-locales.cjs > src/locales/supportedLocales.ts && biome format --write ./src/locales/supportedLocales.ts",
30
- "build:types": "tsc --project .",
31
- "build:esm": "babel --config-file=../../babel.esm.json src/ --extensions=.ts --out-dir=build/ --out-file-extension=.mjs",
32
- "build:cjs": "babel --config-file=../../babel.cjs.json src/ --extensions=.ts --out-dir=build/ --out-file-extension=.cjs",
33
- "watch": "tsc --watch --preserveWatchOutput --project .",
34
- "lint": "biome lint ./src/",
35
- "lint:fix": "biome lint --write ./src/",
36
- "format": "biome format ./src/",
37
- "format:fix": "biome format --write ./src/",
38
- "typecheck": "tsc --noEmit --emitDeclarationOnly false --project .",
39
- "test": "pnpm test:unit && pnpm test:build",
40
- "test:unit": "jest",
41
- "test:build": "pnpm test:build:i18n && pnpm test:build:i18n:dist && pnpm test:build:cjs && pnpm test:build:esm && pnpm test:build:types",
42
- "test:build:types": "tsc --noEmit build/index.d.ts",
43
- "test:build:i18n": "node tests/test-i18n.mjs",
44
- "test:build:i18n:dist": "echo 'Checking if the build/i18n directory contains 55 files' && ls build/i18n/*.json | cut -d\\/ -f3 | cut -d. -f1 | sort | wc -l | grep -q 55 || (echo 'Fail' && false) && echo 'OK'",
45
- "test:build:cjs": "node tests/test-build.cjs",
46
- "test:build:esm": "node tests/test-build.mjs",
47
- "intl:extract": "formatjs extract 'src/messages/**/*.ts' --out-file i18n/en.json --format crowdin --id-interpolation-pattern '[sha512:contenthash:base64:6]'",
48
- "intl:compile": "formatjs compile-folder --ast --format crowdin i18n build/i18n"
49
- },
50
- "np": {
51
- "yarn": false
52
- },
53
- "repository": {
54
- "type": "git",
55
- "url": "git+https://github.com/prezly/theme-kit-js.git"
56
- },
57
- "keywords": [],
58
- "author": "Prezly Team <hello@prezly.com> (https://www.prezly.com)",
59
- "license": "GNU GPL v3",
60
- "bugs": {
61
- "url": "https://github.com/prezly/theme-kit-js/issues"
62
- },
63
- "homepage": "https://github.com/prezly/theme-kit-js/tree/main/packages/intl#readme",
64
- "dependencies": {
65
- "@technically/is-not-undefined": "^1.0.0"
66
- },
67
- "devDependencies": {
68
- "@formatjs/cli": "4.8.4",
69
- "typescript": "5.7.3"
70
- },
71
- "publishConfig": {
72
- "access": "public"
73
- },
74
- "gitHead": "455f8c5db29b21db0791ee7f6e9fd60a08bd840e"
75
- }
14
+ "./i18n": "./build/i18n",
15
+ "./i18n/*": "./build/i18n/*"
16
+ },
17
+ "files": [
18
+ "build",
19
+ "README.md"
20
+ ],
21
+ "engines": {
22
+ "node": ">= 14.x",
23
+ "npm": ">= 7.x"
24
+ },
25
+ "np": {
26
+ "yarn": false
27
+ },
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/prezly/theme-kit-js.git"
31
+ },
32
+ "keywords": [],
33
+ "author": "Prezly Team <hello@prezly.com> (https://www.prezly.com)",
34
+ "license": "GNU GPL v3",
35
+ "bugs": {
36
+ "url": "https://github.com/prezly/theme-kit-js/issues"
37
+ },
38
+ "homepage": "https://github.com/prezly/theme-kit-js/tree/main/packages/intl#readme",
39
+ "dependencies": {
40
+ "@technically/is-not-undefined": "^1.0.0"
41
+ },
42
+ "devDependencies": {
43
+ "@formatjs/cli": "4.8.4",
44
+ "typescript": "5.7.3"
45
+ },
46
+ "publishConfig": {
47
+ "access": "public"
48
+ },
49
+ "scripts": {
50
+ "clean": "rimraf --glob build/* *.tsbuildinfo",
51
+ "prebuild": "pnpm clean && pnpm build:locales && pnpm format",
52
+ "build": "pnpm intl:compile && pnpm build:types && pnpm build:esm && pnpm build:cjs",
53
+ "build:locales": "node ./build-locales.cjs > src/locales/supportedLocales.ts && biome format --write ./src/locales/supportedLocales.ts",
54
+ "build:types": "tsc --project .",
55
+ "build:esm": "babel --config-file=../../babel.esm.json src/ --extensions=.ts --out-dir=build/ --out-file-extension=.mjs",
56
+ "build:cjs": "babel --config-file=../../babel.cjs.json src/ --extensions=.ts --out-dir=build/ --out-file-extension=.cjs",
57
+ "watch": "tsc --watch --preserveWatchOutput --project .",
58
+ "lint": "biome lint ./src/",
59
+ "lint:fix": "biome lint --write ./src/",
60
+ "format": "biome format ./src/",
61
+ "format:fix": "biome format --write ./src/",
62
+ "typecheck": "tsc --noEmit --emitDeclarationOnly false --project .",
63
+ "test": "pnpm test:unit && pnpm test:build",
64
+ "test:unit": "jest",
65
+ "test:build": "pnpm test:build:i18n && pnpm test:build:i18n:dist && pnpm test:build:cjs && pnpm test:build:esm && pnpm test:build:types",
66
+ "test:build:types": "tsc --noEmit build/index.d.ts",
67
+ "test:build:i18n": "node tests/test-i18n.mjs",
68
+ "test:build:i18n:dist": "echo 'Checking if the build/i18n directory contains 55 files' && ls build/i18n/*.json | cut -d\\/ -f3 | cut -d. -f1 | sort | wc -l | grep -q 55 || (echo 'Fail' && false) && echo 'OK'",
69
+ "test:build:cjs": "node tests/test-build.cjs",
70
+ "test:build:esm": "node tests/test-build.mjs",
71
+ "intl:extract": "formatjs extract 'src/messages/**/*.ts' --out-file i18n/en.json --format crowdin --id-interpolation-pattern '[sha512:contenthash:base64:6]'",
72
+ "intl:compile": "formatjs compile-folder --ast --format crowdin i18n build/i18n"
73
+ }
74
+ }