Skip to content

Commit

Permalink
feat(i18n): translation files sync with english base
Browse files Browse the repository at this point in the history
  • Loading branch information
lukashroch committed Jun 24, 2024
1 parent 1e0f6a2 commit 9ac7116
Show file tree
Hide file tree
Showing 57 changed files with 1,059 additions and 787 deletions.
4 changes: 3 additions & 1 deletion packages/i18n/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@
"engines": {
"node": ">=18.17.0"
},
"scripts": {},
"scripts": {
"i18n:sync": "pnpm tsx scripts/i18n-sync.ts"
},
"dependencies": {
"dompurify": "^3.1.5",
"lodash": "^4.17.21",
Expand Down
28 changes: 28 additions & 0 deletions packages/i18n/scripts/i18n-sync.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
import { extname, resolve } from 'node:path';

import { mergeTranslations } from '../src/util';

const components = ['admin', 'api', 'shared', 'survey'];

for (const component of components) {
const langs = readdirSync(resolve('src', component));

for (const lang of langs) {
const langPathStats = statSync(resolve('src', component, lang));
if (lang === 'en' || langPathStats.isFile())
continue;

const sections = readdirSync(resolve('src', component, lang));
for (const section of sections) {
const ext = extname(section);
if (ext !== '.json')
continue;

const defaults = JSON.parse(readFileSync(resolve('src', component, 'en', section), 'utf8'));
const sync = JSON.parse(readFileSync(resolve('src', component, lang, section), 'utf8'));
const merged = mergeTranslations(defaults, sync);
writeFileSync(resolve('src', component, lang, section), JSON.stringify(merged, null, 2), 'utf8');
}
}
}
1 change: 0 additions & 1 deletion packages/i18n/src/admin/fr/as-served-sets.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
"create": "Ajouter une série de photos de portions",
"edit": "Modifier la série de photos de portions",
"delete": "Supprimer la série de photos de portions",

"id": "Identifiant de la série de photos de portions",
"selectionImage": "Photo sélectionnée",
"images": {
Expand Down
19 changes: 4 additions & 15 deletions packages/i18n/src/admin/fr/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,22 +62,19 @@
"privacy": "Politique de confidentialité",
"tos": "Conditions d'utilisation"
},

"admin": "Administrateur",
"fdb": "Base de données alimentaires",
"local": "Version régionale",
"images": "Photos",
"surveyMgmt": "Gestion des enquêtes",
"acl": "Contrôle d'accès",
"system": "Système",

"yes": "Oui",
"true": "Oui",
"no": "Non",
"false": "Non",
"none": "Aucun",
"na": "Non concerné",

"name": "Nom",
"displayName": "Libellé",
"description": "Description",
Expand All @@ -93,31 +90,28 @@
"value": "Valeur",
"exclusive": "Exclusive"
},

"date": "Date",
"expiredAt": "Expiré à",
"expiresAt": "Expires at",
"startedAt": "Commencé à",
"completedAt": "Complété à",
"createdAt": "Créé à",
"updatedAt": "Mis à jour à",
"deletedAt": "Supprimé à",

"app": {
"_": "Application",
"info": "Informations de l'application",
"build": "Construire"
},

"clipboard": {
"_": "Copier dans le presse-papiers",
"na": "Clipboard API not available",
"copied": "Données copiées dans le presse-papiers"
},

"sw": {
"check": "Une mise à jour du contenu est disponible",
"update": "Mise à jour"
},

"action": {
"_": "Action",
"active": "Activer",
Expand Down Expand Up @@ -155,23 +149,23 @@
"msg": "Vous allez quitter une page avec des modifications qui n'ont pas été enregistrées. Voulez-vous continuer ?",
"delete": "Vous êtes sur le point de supprimer {name}.",
"remove": "Vous êtes sur le point d'enlever {name}.",
"revoke": "You're about to revoke {name}.",
"multi": {
"delete": "Voulez-vous supprimer les éléments sélectionnés : {count}"
},
"typed": "Veuillez saisir {name} pour confirmer."
}
},

"msg": {
"created": "L'enregistrement ({name}) a été créé.",
"updated": "L'enregistrement ({name}) a été mis à jour.",
"deleted": "L'enregistrement ({name}) a été supprimé.",
"revoked": "Record ({name}) has been revoked.",
"multi": {
"deleted": "Les éléments sélectionnés ont été supprimés ({count})."
},
"sent": "Votre message a été envoyé."
},

"search": {
"_": "Chercher",
"filter": "Filtre",
Expand All @@ -180,23 +174,18 @@
"selected": "Enregistrements sélectionnés",
"none": "Aucun enregistrement trouvé"
},

"redirect": "Rediriger vers une autre entrée",

"selected": "{count} éléments sélectionnés",

"not": {
"assigned": "Non attribué",
"found": "Non trouvé",
"provided": "Non renseigné",
"selected": "Non sélectionné"
},

"json": {
"_": "JSON brut",
"title": "Editeur de contenu JSON"
},

"file": {
"csv": "Fichier CSV à importer"
}
Expand Down
34 changes: 20 additions & 14 deletions packages/i18n/src/admin/fr/fdbs.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,16 @@
"create": "Ajouter une base de données",
"edit": "Modifier la base de données",
"delete": "Supprimer la base de données",

"showGlobalName": "Afficher le nom global",

"food-list": {
"_": "Food list",
"title": "Food list",
"tab": "Food list"
},
"search": {
"_": "Chercher",
"title": "Chercher des catégories et des aliments"
},

"categories": {
"_": "Catégorie",
"title": "Catégories",
Expand All @@ -22,6 +24,7 @@
"noCategory": "Non catégorisé",
"alreadyIncluded": "La catégorie '{code}' est déjà présente dans la liste actuelle.",
"none": "Pas de catégorie trouvée pour cette recherche.",
"copy": "Copy category",
"global": {
"_": "Paramètre des catégories globales",
"code": "Code de la catégorie",
Expand All @@ -40,10 +43,11 @@
"_": "Catégories parent"
}
},

"foods": {
"_": "Aliment",
"title": "Aliments",
"add": "Add food",
"copy": "Copy food",
"global": {
"_": "Paramètres pour les aliments globaux",
"code": "Code de l'aliment",
Expand All @@ -62,7 +66,13 @@
"_": "Catégories parent"
}
},

"locales": {
"_": "Use in locales",
"title": "Use in locales",
"description": "Food is included in {count} locales.",
"add": "Add locale",
"remove": "Remove locale"
},
"attributes": {
"_": "Attributs",
"title": "Attributs",
Expand All @@ -72,13 +82,12 @@
"readyMealOption": "Etait-ce un repas tout fait ou un plat préparé ?",
"reasonableAmount": "Quantité raisonnable (g/ml)",
"useInRecipes": {
"_": "Utiliser pour les recettes",
"0": "Utiliser partout",
"1": "Utiliser seulement comme aliment",
"2": "Utiliser seulement comme ingrédient d'une recette"
"2": "Utiliser seulement comme ingrédient d'une recette",
"_": "Utiliser pour les recettes"
}
},

"nutrients": {
"_": "Enregistrement de la table nutritionnelle",
"title": "Enregistrements de la table nutritionnelle",
Expand All @@ -87,35 +96,29 @@
"alreadyIncluded": "L'enregistrement de la table nutritionnelle '{id}' est déjà inclus dans la liste actuelle.",
"none": "Aucun enregistrement de table nutritionnelle n'a été trouvé pour cette recherche."
},

"associatedFoods": {
"_": "Aliment associé",
"title": "Aliments associés",
"add": "Ajouter un aliment associé",
"edit": "Modifier un aliment associé",
"remove": "Enlever un aliment associé",

"association": "Association",
"genericName": "Nom générique",
"text": "Texte",
"linkAsMain": "Lier à l'aliment principal",
"multiple": "Autoriser plusieurs aliments"
},

"portionSizes": {
"_": "Méthode de quantification",
"title": "Méthodes de quantification",
"add": "Ajouter une méthode de quantification",
"edit": "Modifier la méthode de quantification",
"remove": "Enlever la méthode de quantification",

"parameters": "Paramètres",
"noParameters": "La méthode ne présente pas plus de paramètres.",
"description": "Description",
"imageUrl": "URL de l'image",
"useForRecipes": "Utiliser pour les recettes",
"conversionFactor": "Facteur de conversion",

"methods": {
"_": "Méthode de quantification",
"as-served": {
Expand Down Expand Up @@ -158,6 +161,9 @@
"_": "Pizza",
"imageMapLabels": "Libellés de l'image à curseur"
},
"pizza-v2": {
"_": "Pizza V2"
},
"standard-portion": {
"_": "Portion standard",
"unit": "Unité",
Expand Down
Loading

0 comments on commit 9ac7116

Please sign in to comment.