Skip to content

Commit

Permalink
Validate translations during jenkins build
Browse files Browse the repository at this point in the history
Added missing french labels reported by the validation test
  • Loading branch information
svilenvelikov committed May 21, 2024
1 parent 9df39cf commit d7ff50d
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 0 deletions.
10 changes: 10 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ pipeline {

stages {

stage('Validate translations') {
steps {
sh 'node scripts/validate-translations.js || exit 1'
}
}

stage('Install') {
steps {
sh "npm install"
Expand Down Expand Up @@ -87,6 +93,10 @@ pipeline {
sh "sudo rm -rf ./cypress"
sh "sudo rm -rf ./report"
}

failure {
archiveArtifacts artifacts: 'translation-validation-result.json', onlyIfSuccessful: false
}
}
}

22 changes: 22 additions & 0 deletions scripts/validate-translations.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
const fs = require('fs');
const _ = require('lodash');

const localeEn = fs.readFileSync('src/i18n/locale-en.json', 'utf8');
const localeFr = fs.readFileSync('src/i18n/locale-fr.json', 'utf8');

const enObj = JSON.parse(localeEn);
const frObj = JSON.parse(localeFr);

const enKeys = _.keys(enObj);
const frKeys = _.keys(frObj);

const missingKeysInFrenchBundle = _.difference(enKeys, frKeys);

const difference = {
missingKeysInFrenchBundle
};

if (!_.isEmpty(difference.missingInFr)) {
fs.writeFileSync('translation-validation-result.json', JSON.stringify(difference, null, 2));
process.exit(1);
}
24 changes: 24 additions & 0 deletions src/i18n/locale-fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,7 @@
"state.label": "état",
"download.btn": "Télécharger",
"skip.btn": "Sauter",
"back.to.guides.btn": "Retour aux guides",
"show.remaining": "Afficher les",
"characters.label": "caractères",
"show.first.chars": "Afficher les 500 premiers caractères",
Expand Down Expand Up @@ -623,6 +624,8 @@
"view.autocomplete.title": "Index Autocomplete",
"view.autocomplete.helpInfo": "L'index Autocomplete est utilisé pour la complétion automatique des IRIs dans l'éditeur SPARQL et la page de ressources View. Utilisez cette vue pour activer ou désactiver l'index et vérifier son état.",
"view.clusterManagement.title": "Gestion des clusters",
"view.clusterManagement.create.title": "Créer un cluster",
"view.clusterManagement.edit.title": "Modifier un cluster",
"view.clusterManagement.helpInfo": "La vue Gestion des clusters est un outil d'administration visuelle pour le cluster GraphDB. Vous pouvez y créer ou modifier un cluster en glissant et déposant les nœuds ou vous pouvez l'utiliser pour surveiller l'état d'un cluster en cours d'exécution en temps quasi réel.",
"view.resource.title": "",
"view.export.ctr.helpInfo": "La vue d'ensemble des graphes fournit une liste du graphe par défaut et de tous les graphes nommés dans un dépôt GraphDB. Il peut être utilisé pour inspecter les déclarations dans chaque graphe, exporter le graphe ou effacer les données du graphe.",
Expand Down Expand Up @@ -719,6 +722,11 @@
"menu.monitor.label": "Surveiller",
"menu.queries.and.updates.label": "Requêtes et mises à jour",
"menu.backup_and_restore.label": "Sauvegarde et Restauration",
"menu.enableFtsIndex.label": "Activer l'index de recherche plein texte",
"menu.ftsIndexes.label": "Index de recherche en texte intégral à construire (délimités par des virgules)",
"menu.ftsStringLiteralsIndex.label": "Index de recherche en texte intégral pour les littéraux xsd:string",
"menu.ftsIrisIndex.label": "Index de recherche en texte intégral pour l'indexation en texte intégral des IRI",
"menu.ftsDefaultAnalyzer.label": "Analyseur pour l'index par défaut",
"menu.ftsLanguages.label": "Entrez la langue pour la recherche plein texte",
"menu.resources.label": "Système",
"menu.setup.label": "Configurer",
Expand Down Expand Up @@ -764,6 +772,7 @@
"query.editor.showing.results.from.msg": "Liste de résultats de ",
"query.editor.to": " à ",
"query.editor.of": " pour un total de ",
"query.editor.of.at.least": " d'au moins ",
"query.editor.abort": "{{abort}}",
"query.editor.abort.requested": "L'arrêt a été demandé",
"query.editor.abort.update": "Annuler la mise à jour",
Expand Down Expand Up @@ -1063,6 +1072,9 @@
"core.errors.no.accessible.repositories.warning.msg": "Il n'y a pas de dépôts accessibles.",
"core.errors.no.accessible.writable.repositories.warning.msg": "Il n'y a pas de dépôts accessibles en écriture.",
"core.errors.create.repository.warning.msg": " Vous pouvez créer un nouveau dépôt",
"core.errors.show.remote.locations.btn": "Afficher les emplacements distants",
"core.errors.hide.remote.locations.btn": "Masquer les emplacements distants",
"core.errors.location.local.label": "Local",
"core.loading.longer.than.usual.warning": "GraphDB Workbench est en cours de chargement mais cela prend plus de temps que d'habitude, veuillez patienter...",
"core.loading.refresh.warning": "Si le Workbench n'est pas encore chargé, veuillez essayer de vider le cache de votre navigateur et de recharger la page.",
"copy.to.clipboard.modal.paragraph": "Copier l'URL dans le presse-papiers",
Expand Down Expand Up @@ -1266,13 +1278,19 @@
"repoTooltips.shaclOptions.performanceLogging": "Consigner (INFO) le temps d'exécution par forme. Il est recommandé de désactiver la validation parallèle et la mise en cache des nœuds sélectionnés lorsque cette option est activée.",
"repoTooltips.shaclOptions.eclipseRdf4jShaclExtensions": "Active les extensions SHACL de RDF4J qui fournissent des fonctionnalités supplémentaires (expérimental).",
"repoTooltips.shaclOptions.dashDataShapes": "Active les extensions de DASH Data Shapes qui fournissent des fonctionnalités supplémentaires (expérimental).",
"repoTooltips.shaclOptions.shapesGraph": "Définit les graphiques nommés où les formes SHACL peuvent être stockées. La liste est délimitée par des virgules.",
"repoTooltips.entityIdSize": "Définit la taille en bits des identifiants internes utilisés pour indexer les entités (URI, nœuds vides, littéraux et triplets intégrés RDF*). \nUtiliser un identifiant de 40 bits uniquement si vous prévoyez plus de 2 milliards de valeurs RDF uniques.",
"repoTooltips.enableContextIndex": "Construit un index supplémentaire Context-Predicate-Subject-Object pour améliorer les performances des requêtes SPARQL avec les clauses GRAPH/FROM/FROM NAMED.",
"repoTooltips.enablePredicateList": "Permet d'établir des correspondances entre une entité (sujet ou objet) et ses prédicats; son activation peut accélérer de manière significative les requêtes qui utilisent des modèles de prédicats joker.",
"repoTooltips.queryTimeout": "Définit le nombre de secondes après lequel l'évaluation d'une requête sera terminée ; les valeurs inférieures ou égales à zéro signifient qu'il n'y a pas de limite.",
"repoTooltips.throwQueryEvaluationExceptionOnTimeout": "Le dépôt lève une QueryEvaluationException lorsque la durée d'exécution d'une requête dépasse le paramètre de délai d'attente.",
"repoTooltips.queryLimitResults": "Définit le nombre maximum de résultats renvoyés par une requête après lequel l'évaluation de celle-ci sera terminée; les valeurs inférieures ou égales à zéro signifient l'absence de limite.",
"repoTooltips.nonInterpretablePredicates": "Liste délimitée par des points-virgules de prédicats (URI complets) que GraphDB n'essaiera pas de traiter avec les plugins GraphDB enregistrés.",
"repoTooltips.enableFtsIndex": "Activer l'index de recherche en texte intégral (FTS).",
"repoTooltips.ftsIndexes": "Liste de langues délimitées par des virgules qui doivent avoir un index spécifique avec un analyseur approprié pour la recherche en texte intégral. Les valeurs possibles sont: default, iri, ar, bg, bn, br, ca, ja, ko, zh, ku, cz, da, de, el, en, es, et, eu, fa, fi, fr, ga, gl, hi, hu, hy, id, it, lt, lv, ne, nl, no, pt, ro, ru, sr, sv, ta, te, th, tr",
"repoTooltips.ftsStringLiteralsIndex": "Index dans lequel les littéraux de chaîne (xsd:string) sont indexés. Les valeurs possibles sont: aucun, par défaut ou code de langue à 2 lettres.",
"repoTooltips.ftsIrisIndex": "Index dans lequel les IRI sont indexés pour la recherche en texte intégral. Les valeurs possibles sont: aucun, par défaut ou code de langue à 2 lettres.",
"repoTooltips.ftsDefaultAnalyzer": "L'analyseur à utiliser pour l'index « par défaut ». Les valeurs possibles sont: standard, simple, keyword, whitespace, unicodewhitespace, url, email, ar, bg, bn, br, ca, cjk, ckb, cz, da, de, el, en, es, et, eu, fa, fi, fr, ga, gl, hi, hu, hy, id, it, lt, lv, ne, nl, no, pt, ro, ru, sr, sv, ta, te, th, tr",
"repoTooltips.ontop.driverType": "Détermine le type de base de données SQL à laquelle se connecter.",
"repoTooltips.ontop.propertiesFile": "Décrit la configuration JDBC telle que le nom d'hôte et le nom de la base de données à laquelle se connecter.",
"repoTooltips.ontop.hostName": "Le nom d'hôte JDBC auquel se connecter.",
Expand Down Expand Up @@ -1405,6 +1423,8 @@
"save.settings.btn": "Sauvegarder les paramètres",
"are.license.details.correct": "Vos détails de licence sont-ils corrects?",
"edition": "Édition",
"capabilities": "Capacités",
"none": "None",
"licensed.to": "Autorisé à",
"valid.until": "Valable jusque",
"perpetual": "Perpétuel",
Expand Down Expand Up @@ -1912,6 +1932,7 @@
"sparql.shortcuts.auto.indent.lines.less": "Réduire l'indentation de la ou des lignes actuelles/sélectionnées",
"sparql.shortcuts.execute.query.update": "Exécuter une requête ou une mise à jour",
"sparql.shortcuts.execute.explain.plan": "Exécuter le plan d'explication pour la requête",
"sparql.shortcuts.execute.explain-gpt.plan": "Expliquer la requête/le résultat à l'aide de ChatGPT",
"sparql.shortcuts.create.new.tab": "Créer un nouvel onglet sans nom",
"sparql.shortcuts.create.saved.query": "Créer une requête sauvegardée à partir de l'état actuel",
"sparql.shortcuts.switch.next.tab": "Passer à l'onglet suivant",
Expand Down Expand Up @@ -2042,6 +2063,9 @@
"guide.step_plugin.welcome.input-icon-hint": "<span class='icon icon-1-5x icon-edit'></span> vous dit de taper ou de coller quelque chose.",
"guide.step_plugin.welcome-what.title": "Qu'est-ce que {{translatedGuideName}} ?",
"guide.step_plugin.welcome-what.content": "{{translatedGuideDescription}}<p>Commençons pour de vrai maintenant !</p>",
"guide.confirm.cancel.message": "Êtes-vous sûr de vouloir arrêter le guide?",
"guide.unexpected.error.message": "Le guide a été annulé en raison d'une erreur inattendue. Veuillez exécuter à nouveau le guide et si le problème persiste, contactez le support.",
"guide.start.unexpected.error.message": "Le guide ne peut pas être démarré en raison d'une erreur inattendue. Veuillez réessayer d'exécuter le guide et si le problème persiste, contactez le support.",
"guide.step_plugin.execute-sparql-query.query-not-same.error": "La requête n'est pas la même que la requête du guide !",
"ttyg.helpInfo": "Parlez à votre graphe est un chatbot basé sur le modèle GPT-4 d'OpenAI qui peut répondre aux questions sur les données stockées dans GraphDB, en exploitant à la fois vos données et les connaissances générales du modèle GPT-4. Le bot fonctionne dans connexion avec le connecteur ChatGPT Retrieval.",
"ttyg.hint": "Parlez à votre graphe – posez simplement une question !\nPour le moment, cela fonctionne mieux si vous demandez en anglais, désolé !",
Expand Down

0 comments on commit d7ff50d

Please sign in to comment.