@gabrielbourget/i18n-foundation 0.1.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 (99) hide show
  1. package/README.md +159 -0
  2. package/dist/assets/index.d.ts +35 -0
  3. package/dist/assets/index.d.ts.map +1 -0
  4. package/dist/assets/index.js +102 -0
  5. package/dist/common/index.d.ts +18 -0
  6. package/dist/common/index.d.ts.map +1 -0
  7. package/dist/common/index.js +27 -0
  8. package/dist/core/client.d.ts +22 -0
  9. package/dist/core/client.d.ts.map +1 -0
  10. package/dist/core/client.js +89 -0
  11. package/dist/core/configuration.d.ts +18 -0
  12. package/dist/core/configuration.d.ts.map +1 -0
  13. package/dist/core/configuration.js +36 -0
  14. package/dist/core/createIsolatedI18nInstance.d.ts +13 -0
  15. package/dist/core/createIsolatedI18nInstance.d.ts.map +1 -0
  16. package/dist/core/createIsolatedI18nInstance.js +16 -0
  17. package/dist/core/i18nStrictMode.d.ts +11 -0
  18. package/dist/core/i18nStrictMode.d.ts.map +1 -0
  19. package/dist/core/i18nStrictMode.js +19 -0
  20. package/dist/core/index.d.ts +7 -0
  21. package/dist/core/index.d.ts.map +1 -0
  22. package/dist/core/index.js +6 -0
  23. package/dist/core/initCommon.d.ts +15 -0
  24. package/dist/core/initCommon.d.ts.map +1 -0
  25. package/dist/core/initCommon.js +51 -0
  26. package/dist/core/resourceLoader.d.ts +9 -0
  27. package/dist/core/resourceLoader.d.ts.map +1 -0
  28. package/dist/core/resourceLoader.js +56 -0
  29. package/dist/core/server.d.ts +21 -0
  30. package/dist/core/server.d.ts.map +1 -0
  31. package/dist/core/server.js +20 -0
  32. package/dist/core/types.d.ts +20 -0
  33. package/dist/core/types.d.ts.map +1 -0
  34. package/dist/core/types.js +1 -0
  35. package/dist/env/client.d.ts +29 -0
  36. package/dist/env/client.d.ts.map +1 -0
  37. package/dist/env/client.js +42 -0
  38. package/dist/env/index.d.ts +4 -0
  39. package/dist/env/index.d.ts.map +1 -0
  40. package/dist/env/index.js +3 -0
  41. package/dist/env/server.d.ts +30 -0
  42. package/dist/env/server.d.ts.map +1 -0
  43. package/dist/env/server.js +45 -0
  44. package/dist/env/utils.d.ts +23 -0
  45. package/dist/env/utils.d.ts.map +1 -0
  46. package/dist/env/utils.js +65 -0
  47. package/dist/index.d.ts +6 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +5 -0
  50. package/dist/manifest/index.d.ts +37 -0
  51. package/dist/manifest/index.d.ts.map +1 -0
  52. package/dist/manifest/index.js +46 -0
  53. package/dist/pseudolocalization/index.d.ts +89 -0
  54. package/dist/pseudolocalization/index.d.ts.map +1 -0
  55. package/dist/pseudolocalization/index.js +182 -0
  56. package/dist/verifier/domainContracts.d.ts +43 -0
  57. package/dist/verifier/domainContracts.d.ts.map +1 -0
  58. package/dist/verifier/domainContracts.js +324 -0
  59. package/dist/verifier/fileSystem.d.ts +9 -0
  60. package/dist/verifier/fileSystem.d.ts.map +1 -0
  61. package/dist/verifier/fileSystem.js +42 -0
  62. package/dist/verifier/icuContracts.d.ts +13 -0
  63. package/dist/verifier/icuContracts.d.ts.map +1 -0
  64. package/dist/verifier/icuContracts.js +109 -0
  65. package/dist/verifier/index.d.ts +7 -0
  66. package/dist/verifier/index.d.ts.map +1 -0
  67. package/dist/verifier/index.js +6 -0
  68. package/dist/verifier/keyShape.d.ts +12 -0
  69. package/dist/verifier/keyShape.d.ts.map +1 -0
  70. package/dist/verifier/keyShape.js +73 -0
  71. package/dist/verifier/sheetOrdering.d.ts +2 -0
  72. package/dist/verifier/sheetOrdering.d.ts.map +1 -0
  73. package/dist/verifier/sheetOrdering.js +161 -0
  74. package/dist/verifier/verifyI18nSource.d.ts +25 -0
  75. package/dist/verifier/verifyI18nSource.d.ts.map +1 -0
  76. package/dist/verifier/verifyI18nSource.js +162 -0
  77. package/locales/en/common--carousel.json +30 -0
  78. package/locales/en/common--delete-entity-modal.json +15 -0
  79. package/locales/en/common--file-upload.json +88 -0
  80. package/locales/en/common--form-rules.json +12 -0
  81. package/locales/en/common--form-validation.json +19 -0
  82. package/locales/en/common--pagination.json +36 -0
  83. package/locales/en/common--saved-views.json +37 -0
  84. package/locales/en/common--searching.json +14 -0
  85. package/locales/en/common--sort-and-filter-panel.json +135 -0
  86. package/locales/en/common--theme.json +9 -0
  87. package/locales/en/common--ui.json +52 -0
  88. package/locales/fr/common--carousel.json +30 -0
  89. package/locales/fr/common--delete-entity-modal.json +15 -0
  90. package/locales/fr/common--file-upload.json +88 -0
  91. package/locales/fr/common--form-rules.json +12 -0
  92. package/locales/fr/common--form-validation.json +19 -0
  93. package/locales/fr/common--pagination.json +36 -0
  94. package/locales/fr/common--saved-views.json +37 -0
  95. package/locales/fr/common--searching.json +14 -0
  96. package/locales/fr/common--sort-and-filter-panel.json +135 -0
  97. package/locales/fr/common--theme.json +9 -0
  98. package/locales/fr/common--ui.json +52 -0
  99. package/package.json +103 -0
@@ -0,0 +1,36 @@
1
+ {
2
+ "_meta": {
3
+ "interpolation": {
4
+ "page-counter.text": ["count"],
5
+ "primary-controls.actions.overflow-list.label": ["position"],
6
+ "primary-controls.actions.page-button.label": ["pageNumber"]
7
+ },
8
+ "lastModified": "14-05-2026"
9
+ },
10
+
11
+ "nav.label": "Navigation de pagination",
12
+
13
+ "page-counter.label": "Compteur de pages",
14
+ "page-counter.text": "{count, plural, one {page} other {pages}}",
15
+
16
+ "page-input.actions.go": "Aller",
17
+ "page-input.actions.go.label": "Naviguer à la page sélectionnée",
18
+ "page-input.form.input.input-button-group.aria-label": "Contrôles du champ de page de pagination",
19
+ "page-input.form.input.label": "Aller à la page",
20
+ "page-input.form.input.placeholder": "Page #",
21
+
22
+ "items-per-page.form.items-per-page.label": "Articles par page",
23
+ "items-per-page.form.items-per-page.placeholder": "#/Page",
24
+
25
+ "primary-controls.actions.first": "Premier",
26
+ "primary-controls.actions.first.label": "Première page",
27
+ "primary-controls.actions.last": "Dernier",
28
+ "primary-controls.actions.last.label": "Dernière page",
29
+ "primary-controls.actions.next": "Prochain",
30
+ "primary-controls.actions.next.label": "Prochaine page",
31
+ "primary-controls.actions.overflow-list.label": "Pages consolidées à la position {position}",
32
+ "primary-controls.actions.overflow-popover.label": "Éléments de pagination visuellement consolidés",
33
+ "primary-controls.actions.page-button.label": "Aller à la page {pageNumber}",
34
+ "primary-controls.actions.previous": "Précédent",
35
+ "primary-controls.actions.previous.label": "Page précédente"
36
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "_meta": {
3
+ "interpolation": {
4
+ "actions.apply.aria-label": ["name"],
5
+ "actions.delete.aria-label": ["name"],
6
+ "import.body.plural": ["count"]
7
+ },
8
+ "lastModified": "07-05-2026"
9
+ },
10
+
11
+ "title": "Vues enregistrées",
12
+
13
+ "form.name.label": "Nom",
14
+ "form.name.placeholder": "Nom de la vue enregistrée",
15
+
16
+ "actions.apply.aria-label": "Sélectionner {name}",
17
+ "actions.apply.label": "Sélectionner la vue",
18
+ "actions.clear-active.aria-label": "Effacer la vue enregistrée active",
19
+ "actions.clear-active.label": "Effacer la vue",
20
+ "actions.delete.aria-label": "Supprimer {name}",
21
+ "actions.save-current.label": "ENREGISTRER LA VUE",
22
+
23
+ "import.actions.dismiss.label": "Pas maintenant",
24
+ "import.actions.import.label": "Importer",
25
+ "import.body.plural": "{count} vues enregistrées sur cet appareil ne sont pas dans votre compte. L'importation les copie dans votre compte et conserve les copies locales sur cet appareil.",
26
+ "import.body.singular": "Une vue enregistrée sur cet appareil n'est pas dans votre compte. L'importation la copie dans votre compte et conserve la copie locale sur cet appareil.",
27
+ "import.failure.body": "Les vues enregistrées de cet appareil n'ont pas pu être importées. Veuillez réessayer.",
28
+ "import.failure.title": "Échec de l'importation",
29
+ "import.title": "Importer les vues enregistrées de cet appareil",
30
+
31
+ "messages.delete-error": "La vue enregistrée n'a pas pu être supprimée.",
32
+ "messages.empty": "Aucune vue enregistrée pour le moment.",
33
+ "messages.load-error": "Les vues enregistrées n'ont pas pu être chargées.",
34
+ "messages.loading": "Chargement des vues enregistrées.",
35
+ "messages.save-current-requires-query-change": "Appliquez une recherche, un tri ou des filtres pour enregistrer une vue personnalisée.",
36
+ "messages.save-error": "La vue enregistrée n'a pas pu être sauvegardée."
37
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "_meta": {
3
+ "interpolation": {
4
+ "search-panel.title": ["entity"]
5
+ },
6
+ "lastModified": "04-11-2025"
7
+ },
8
+
9
+ "search-panel.title": "Recherchez {entity}",
10
+
11
+ "actions.apply.label": "Appliquer",
12
+ "actions.clear.label": "Réinitialiser",
13
+ "actions.search.label": "Recherchez"
14
+ }
@@ -0,0 +1,135 @@
1
+ {
2
+ "_meta": {
3
+ "interpolation": {
4
+ "current-sorts.sort-parameter-list-item.full-aria-label": ["criteriaName", "sortDirection"],
5
+ "current-filters.filter-group.add-filter.label": ["criteriaName"],
6
+ "current-filters.filter-group.item.aria-label": ["criteriaName"],
7
+ "current-filters.filter-group.match-mode.label": ["criteriaName"],
8
+ "filter-entry.filter-parameter.item.aria-label": ["criteriaName", "position"],
9
+ "filter-entry.form.filter-argument.accessible-label": ["criteriaName"],
10
+ "filter-entry.form.filter-argument.contained-text-accessible-label": ["criteriaName"],
11
+ "filter-entry.form.filter-argument.multi-input-entry.label": ["index"],
12
+ "filter-entry.form.filter-argument.multi-input-entry.placeholder": ["position"],
13
+ "filter-entry.form.filter-argument.multi-input-fallback.placeholder": ["position"],
14
+ "filter-entry.form.filter-argument.similar-text-accessible-label": ["criteriaName"],
15
+ "table-filter-popover.criteria-tag.label": ["criteriaName"],
16
+ "table-filter-popover.match-mode.label": ["criteriaName"],
17
+ "table-filter-popover.trigger.label": ["criteriaName"]
18
+ },
19
+ "lastModified": "14-05-2026"
20
+ },
21
+
22
+ "form.add-filter-criteria.label": "Ajouter un critère de filtrage",
23
+ "form.add-filter-criteria.placeholder": "Sélectionner un critère de filtrage",
24
+ "form.add-sort-criteria.label": "Ajouter un critère de tri",
25
+ "form.add-sort-criteria.placeholder": "Sélectionner un critère de tri",
26
+
27
+ "current-sorts.actions.add-sort-button": "Ajouter un tri",
28
+ "current-sorts.active-sorts-aria-label": "Paramètres de tri actifs",
29
+ "current-sorts.no-sorts-fallback": "Aucun tri n'est actuellement appliqué.",
30
+ "current-sorts.sort-parameter-list-item.full-aria-label": "Paramètre de tri - {criteriaName} - {sortDirection}",
31
+ "current-sorts.sort-parameter-list.aria-label": "Liste des paramètres de tri",
32
+ "current-sorts.sorting-by.label": "Trié par:",
33
+
34
+ "sort-entry.actions.delete.aria-label": "Supprimer l'entrée de tri",
35
+ "sort-entry.actions.drag": "Réorganiser entrée de tri",
36
+ "sort-entry.actions.sort-asc.aria-label": "Trier par ordre croissant",
37
+ "sort-entry.actions.sort-dsc.aria-label": "Trier par ordre décroissant",
38
+ "sort-entry.controls-group.aria-label": "Contrôles des éléments de la liste des paramètres de tri",
39
+ "sort-entry.form.modify-sort-criteria.placeholder": "Sélectionner un critère de tri",
40
+
41
+ "current-filters.actions.add-filter": "Ajouter un filtre",
42
+ "current-filters.active-filters-list.aria-label": "Liste de paramètre du filtre",
43
+ "current-filters.active-filters.aria-label": "Paramètres du filtre actif",
44
+ "current-filters.filter-group.add-filter.label": "Ajouter un filtre pour {criteriaName}",
45
+ "current-filters.filter-group.item.aria-label": "Groupe de filtres {criteriaName}",
46
+ "current-filters.filter-group.label": "Filtres:",
47
+ "current-filters.filter-group.match-all.label": "Tout",
48
+ "current-filters.filter-group.match-any.label": "Au moins un",
49
+ "current-filters.filter-group.match-mode.label": "Mode de correspondance du filtre {criteriaName}",
50
+ "current-filters.filtering-by.label": "Filtré par:",
51
+ "current-filters.no-filters-fallback": "Aucun filtre n'est actuellement appliqué.",
52
+
53
+ "filter-entry.actions.delete.aria-label": "Supprimer l'entrée de filtre",
54
+ "filter-entry.filter-parameter.aria-label": "Paramètre du filtre",
55
+ "filter-entry.filter-parameter.item.aria-label": "Paramètre du filtre no {position} - {criteriaName}",
56
+ "filter-entry.form.filter-argument.accessible-label": "Filtrer {criteriaName}",
57
+ "filter-entry.form.filter-argument.actions.add-entry.label": "Ajouter une entrée d'argument de filtre",
58
+ "filter-entry.form.filter-argument.actions.delete-entry.label": "Supprimer l'entrée d'argument de filtre",
59
+ "filter-entry.form.filter-argument.boolean.label": "Argument du filtre",
60
+ "filter-entry.form.filter-argument.combo-box.empty-list": "Aucun argument de filtre restant à sélectionner",
61
+ "filter-entry.form.filter-argument.combo-box.input-button-group.aria-label": "Contrôles de liste déroulante des arguments de filtre",
62
+ "filter-entry.form.filter-argument.combo-box.trigger.aria-label": "Afficher les suggestions d'arguments de filtre",
63
+ "filter-entry.form.filter-argument.contained-text-accessible-label": "Filtrer {criteriaName} par texte contenu",
64
+ "filter-entry.form.filter-argument.date-range.label": "Argument du filtre",
65
+ "filter-entry.form.filter-argument.date-range.placeholder": "Sélectionnez une plage de dates",
66
+ "filter-entry.form.filter-argument.date-time-picker.calendar.aria-label": "Calendrier de l'argument du filtre",
67
+ "filter-entry.form.filter-argument.date-time-picker.input-button-group.aria-label": "Contrôles du sélecteur de date et heure de l'argument du filtre",
68
+ "filter-entry.form.filter-argument.date-time-picker.trigger-button.aria-label": "Ouvrir le calendrier de l'argument du filtre",
69
+ "filter-entry.form.filter-argument.date-time-range.label": "Argument du filtre",
70
+ "filter-entry.form.filter-argument.date-time-range.placeholder": "Sélectionnez une plage de dates et d'heures",
71
+ "filter-entry.form.filter-argument.date-time.label": "Argument du filtre",
72
+ "filter-entry.form.filter-argument.date-time.placeholder": "Sélectionnez la date et l'heure",
73
+ "filter-entry.form.filter-argument.date.label": "Argument du filtre",
74
+ "filter-entry.form.filter-argument.date.placeholder": "Sélectionnez une date",
75
+ "filter-entry.form.filter-argument.label": "Argument du filtre",
76
+ "filter-entry.form.filter-argument.max-value.label": "Valeur maximale",
77
+ "filter-entry.form.filter-argument.max-value.placeholder": "Entrez la valeur maximale",
78
+ "filter-entry.form.filter-argument.maximum.label": "Maximum",
79
+ "filter-entry.form.filter-argument.min-value.label": "Valeur minimale",
80
+ "filter-entry.form.filter-argument.min-value.placeholder": "Entrez la valeur minimale",
81
+ "filter-entry.form.filter-argument.minimum.label": "Minimum",
82
+ "filter-entry.form.filter-argument.multi-input-entry.label": "Argument du filtre {index}",
83
+ "filter-entry.form.filter-argument.multi-input-entry.placeholder": "Entrée d'argument du filtre no {position}",
84
+ "filter-entry.form.filter-argument.multi-input-fallback.placeholder": "Argument du filtre no {position}",
85
+ "filter-entry.form.filter-argument.multi-type-ahead-search.unavailable": "placeholder: recherche prédictive multiple non implémentée pour le moment",
86
+ "filter-entry.form.filter-argument.number-input.input-button-group.aria-label": "Contrôles du champ numérique de l'argument du filtre",
87
+ "filter-entry.form.filter-argument.placeholder": "Argument du filtre",
88
+ "filter-entry.form.filter-argument.select.label": "Argument du filtre",
89
+ "filter-entry.form.filter-argument.select.placeholder": "Sélectionner l'argument du filtre",
90
+ "filter-entry.form.filter-argument.similar-text-accessible-label": "Filtrer {criteriaName} par texte similaire",
91
+ "filter-entry.form.filter-argument.tag-combo-box.group.aria-label": "Contrôles de sélection multiple des arguments de filtre",
92
+ "filter-entry.form.filter-argument.tag-combo-box.tag-group.aria-label": "Arguments de filtre sélectionnés",
93
+ "filter-entry.form.filter-argument.time-picker.input-icon-group.aria-label": "Contrôles du sélecteur horaire de l'argument du filtre",
94
+ "filter-entry.form.filter-argument.time.label": "Argument du filtre",
95
+ "filter-entry.form.filter-argument.time.placeholder": "Sélectionnez une heure",
96
+ "filter-entry.form.filter-argument.type-ahead-search.label": "Argument du filtre",
97
+ "filter-entry.form.filter-argument.type-ahead-search.placeholder": "Saisissez pour rechercher",
98
+ "filter-entry.form.filter-argument.type-ahead-search.unavailable": "placeholder: recherche prédictive non implémentée pour le moment",
99
+ "filter-entry.form.filter-condition-type.label": "Type de condition du filtre",
100
+ "filter-entry.form.filter-condition-type.placeholder": "Type de condition du filtre",
101
+ "filter-entry.form.filter-condition.label": "Condition du filtre",
102
+ "filter-entry.form.filter-condition.placeholder": "Condition du filtre",
103
+ "filter-entry.form.filter-criteria.label": "Critère du filtre",
104
+ "filter-entry.form.filter-criteria.placeholder": "Critère du filtre",
105
+ "filter-entry.operations.between": "Entre",
106
+ "filter-entry.operations.equal": "Égal à",
107
+ "filter-entry.operations.greater-than": "Supérieur à",
108
+ "filter-entry.operations.greater-than-equal": "Supérieur ou égal à",
109
+ "filter-entry.operations.in": "Inclus dans",
110
+ "filter-entry.operations.less-than": "Inférieur à",
111
+ "filter-entry.operations.less-than-equal": "Inférieur ou égal à",
112
+ "filter-entry.operations.like": "Contient",
113
+ "filter-entry.operations.not-equal": "Différent de",
114
+ "filter-entry.operations.not-greater-than": "Non supérieur à",
115
+ "filter-entry.operations.not-greater-than-equal": "Non supérieur ou égal à",
116
+ "filter-entry.operations.not-in": "Non inclus dans",
117
+ "filter-entry.operations.not-less-than": "Non inférieur à",
118
+ "filter-entry.operations.not-less-than-equal": "Non inférieur ou égal à",
119
+ "filter-entry.operations.not-like": "Ne contient pas",
120
+ "filter-entry.operations.similar-to": "Similaire à",
121
+
122
+ "actions.apply": "Appliquer",
123
+ "actions.cancel": "Effacer tout",
124
+ "actions.clear-all": "Clear All",
125
+ "actions.close": "Fermer",
126
+ "actions.close.label": "Fermer le panneau de tri et de filtrage",
127
+
128
+ "table-filter-popover.actions.add-condition.label": "Ajouter une condition de filtre",
129
+ "table-filter-popover.actions.apply": "Appliquer",
130
+ "table-filter-popover.actions.clear": "Effacer",
131
+ "table-filter-popover.criteria-tag.label": "Filtrage de {criteriaName}",
132
+ "table-filter-popover.match-mode.label": "Mode de correspondance de {criteriaName}",
133
+ "table-filter-popover.title": "Filtres:",
134
+ "table-filter-popover.trigger.label": "Filtrer par {criteriaName}"
135
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "_meta": {
3
+ "interpolation": {},
4
+ "lastModified": "09-11-2025"
5
+ },
6
+
7
+ "theme.dark": "Sombre",
8
+ "theme.light": "Clair"
9
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "_meta": {
3
+ "interpolation": {
4
+ "media-sheet.aria-label-with-title": ["title"]
5
+ },
6
+ "lastModified": "14-05-2026"
7
+ },
8
+
9
+ "display-mode.grid": "Grille",
10
+ "display-mode.list": "Liste",
11
+ "display-mode.map": "Carte",
12
+ "display-mode.table": "Table",
13
+
14
+ "table.selection.select-all.aria-label": "Tout sélectionner",
15
+ "table.selection.select-row.aria-label": "Sélectionner la ligne",
16
+
17
+ "alert-dialog.actions.cancel": "Annuler",
18
+ "alert-dialog.actions.cancel.aria-label": "Annuler l'action",
19
+ "alert-dialog.actions.confirm": "Confirmer",
20
+ "alert-dialog.actions.confirm.aria-label": "Confirmer l'action",
21
+
22
+ "breadcrumbs.nav.aria-label": "Fil d'Ariane",
23
+ "breadcrumbs.overflow.breadcrumb.aria-label": "Éléments masqués du fil d'Ariane",
24
+ "breadcrumbs.overflow.button.aria-label": "Afficher les éléments masqués du fil d'Ariane",
25
+ "breadcrumbs.overflow.list.aria-label": "Éléments masqués du fil d'Ariane",
26
+
27
+ "date-time-picker.calendar.aria-label": "Calendrier du sélecteur de date et heure",
28
+ "date-time-picker.input-button-group.aria-label": "Contrôles du champ de date et heure",
29
+ "date-time-picker.trigger-button.aria-label": "Ouvrir le sélecteur de date et heure",
30
+
31
+ "date-time-range-picker.calendar.aria-label": "Calendrier du sélecteur de plage de dates et heures",
32
+ "date-time-range-picker.input-button-group.aria-label": "Contrôles du champ de plage de dates et heures",
33
+ "date-time-range-picker.trigger-button.aria-label": "Ouvrir le sélecteur de plage de dates et heures",
34
+
35
+ "media-sheet.actions.close.aria-label": "Fermer la feuille multimédia",
36
+ "media-sheet.actions.close.tooltip": "Fermer la feuille multimédia",
37
+ "media-sheet.aria-label": "Feuille multimédia",
38
+ "media-sheet.aria-label-with-title": "Feuille multimédia : {title}",
39
+ "media-sheet.description": "Feuille multimédia",
40
+
41
+ "number-input.input-button-group.aria-label": "Contrôles du champ numérique",
42
+
43
+ "stepper.input-button-group.aria-label": "Contrôles du sélecteur numérique",
44
+
45
+ "time-picker.input-icon-group.aria-label": "Contrôles du champ horaire",
46
+
47
+ "toast.actions.cancel": "Annuler",
48
+ "toast.actions.cancel.aria-label": "Annuler l'action",
49
+ "toast.actions.close.aria-label": "Fermer la notification",
50
+ "toast.actions.confirm": "Confirmer",
51
+ "toast.actions.confirm.aria-label": "Confirmer l'action"
52
+ }
package/package.json ADDED
@@ -0,0 +1,103 @@
1
+ {
2
+ "name": "@gabrielbourget/i18n-foundation",
3
+ "version": "0.1.0",
4
+ "description": "Shared i18n runtime foundation for Wavemap and Waveguide facade packages.",
5
+ "license": "UNLICENSED",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "files": [
10
+ "dist",
11
+ "locales",
12
+ "README.md"
13
+ ],
14
+ "sideEffects": false,
15
+ "publishConfig": {
16
+ "access": "restricted"
17
+ },
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js"
22
+ },
23
+ "./core": {
24
+ "types": "./dist/core/index.d.ts",
25
+ "import": "./dist/core/index.js"
26
+ },
27
+ "./core/client": {
28
+ "types": "./dist/core/client.d.ts",
29
+ "import": "./dist/core/client.js"
30
+ },
31
+ "./core/server": {
32
+ "types": "./dist/core/server.d.ts",
33
+ "import": "./dist/core/server.js"
34
+ },
35
+ "./common": {
36
+ "types": "./dist/common/index.d.ts",
37
+ "import": "./dist/common/index.js"
38
+ },
39
+ "./locales/*": {
40
+ "default": "./locales/*"
41
+ },
42
+ "./env": {
43
+ "types": "./dist/env/index.d.ts",
44
+ "import": "./dist/env/index.js"
45
+ },
46
+ "./env/client": {
47
+ "types": "./dist/env/client.d.ts",
48
+ "import": "./dist/env/client.js"
49
+ },
50
+ "./env/server": {
51
+ "types": "./dist/env/server.d.ts",
52
+ "import": "./dist/env/server.js"
53
+ },
54
+ "./manifest": {
55
+ "types": "./dist/manifest/index.d.ts",
56
+ "import": "./dist/manifest/index.js"
57
+ },
58
+ "./pseudolocalization": {
59
+ "types": "./dist/pseudolocalization/index.d.ts",
60
+ "import": "./dist/pseudolocalization/index.js"
61
+ },
62
+ "./assets": {
63
+ "types": "./dist/assets/index.d.ts",
64
+ "import": "./dist/assets/index.js"
65
+ },
66
+ "./verifier": {
67
+ "types": "./dist/verifier/index.d.ts",
68
+ "import": "./dist/verifier/index.js"
69
+ }
70
+ },
71
+ "peerDependencies": {
72
+ "i18next": "^23.16.8",
73
+ "i18next-icu": "^2.4.1",
74
+ "i18next-resources-to-backend": "^1.2.1",
75
+ "react": "^19.1.0",
76
+ "react-i18next": "^13.5.0",
77
+ "typescript": "^5.8.3 || ^5.9.0"
78
+ },
79
+ "dependencies": {
80
+ "intl-messageformat": "^10.7.18"
81
+ },
82
+ "devDependencies": {
83
+ "@types/node": "24.12.2",
84
+ "@types/react": "19.1.8",
85
+ "i18next": "23.16.8",
86
+ "i18next-icu": "2.4.1",
87
+ "i18next-resources-to-backend": "1.2.1",
88
+ "intl-messageformat": "10.7.18",
89
+ "prettier": "3.6.2",
90
+ "react": "19.1.0",
91
+ "react-i18next": "13.5.0",
92
+ "typescript": "5.9.3",
93
+ "vitest": "4.0.18"
94
+ },
95
+ "scripts": {
96
+ "build": "tsc -p tsconfig.json",
97
+ "format": "prettier --write .",
98
+ "format:check": "prettier --check .",
99
+ "test": "vitest run",
100
+ "test:unit": "vitest run",
101
+ "typecheck": "tsc --noEmit -p tsconfig.json"
102
+ }
103
+ }