refactor(glossaries): single source of truth + dedicated detail page
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m15s
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m15s
UX refonte : - Retire la section 'Glossaires professionnels' de la vue principale (les 8 cartes de templates sont maintenant dans le dialog de creation) - Cartes 'Vos glossaires' plus simples : nom, langues, termes, date - Cliquer sur la carte navigue vers /dashboard/glossaries/[id] - Plus de boutons Edit/Delete sur la carte (deplaces dans la page detail) - Recherche par nom (visible si > 3 glossaires) - Badge 'Non enregistre' si modifications non sauvegardees Nouvelle page /dashboard/glossaries/[id] : - Edition inline du nom (input), langues source/cible (select) - Tableau des termes avec recherche et edition en place - Ajout/suppression de termes (max 500) - Export / Import CSV (meme logique que l'edit dialog) - Zone danger : confirmation en 2 temps pour la suppression - Back link vers la liste - i18n : 40 nouvelles cles ajoutees aux 13 locales (FR + EN traduit, les autres utilisent le fallback EN) Design preserve : editorial-card, brand-accent, meme typographie, meme palette. Refactor structurel uniquement, pas de restyling. Le system prompt (Instructions de contexte) reste tel quel, au-dessus de la liste des glossaires, comme dans le design actuel.
This commit is contained in:
@@ -408,6 +408,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Other target",
|
||||
"glossaries.card.editTerms": "Edit terms",
|
||||
"glossaries.card.delete": "Delete",
|
||||
"glossaries.grid.searchPlaceholder": "Search a glossary…",
|
||||
"glossaries.grid.noResults": "No results for this search.",
|
||||
"glossaries.detail.backToList": "Back to glossaries",
|
||||
"glossaries.detail.save": "Save",
|
||||
"glossaries.detail.savedTitle": "Saved",
|
||||
"glossaries.detail.savedDesc": "The glossary has been updated.",
|
||||
"glossaries.detail.settingsTitle": "Settings",
|
||||
"glossaries.detail.sourceLang": "Source language",
|
||||
"glossaries.detail.targetLang": "Target language",
|
||||
"glossaries.detail.termsTitle": "Terms",
|
||||
"glossaries.detail.terms": "terms",
|
||||
"glossaries.detail.searchTerms": "Filter…",
|
||||
"glossaries.detail.noTerms": "No terms yet.",
|
||||
"glossaries.detail.addFirstTerm": "Add the first term",
|
||||
"glossaries.detail.addTerm": "Add a term",
|
||||
"glossaries.detail.maxReached": "Maximum limit reached",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Target",
|
||||
"glossaries.detail.sourcePlaceholder": "source term",
|
||||
"glossaries.detail.targetPlaceholder": "target term",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Export your terms as CSV or import new ones (replaces the current list).",
|
||||
"glossaries.detail.export": "Export",
|
||||
"glossaries.detail.import": "Import",
|
||||
"glossaries.detail.dangerTitle": "Danger zone",
|
||||
"glossaries.detail.dangerDesc": "Deletion is permanent. All associated terms will be lost.",
|
||||
"glossaries.detail.deleteGlossary": "Delete this glossary",
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} terms per glossary.",
|
||||
"glossaries.detail.importEmptyTitle": "Empty file",
|
||||
"glossaries.detail.importEmptyDesc": "No terms detected in this file.",
|
||||
"glossaries.detail.importedTitle": "Imported",
|
||||
"glossaries.detail.importedDesc": "{count} terms imported.",
|
||||
"glossaries.detail.importErrorTitle": "Read error",
|
||||
"glossaries.detail.importErrorDesc": "Unable to read the file.",
|
||||
"apiKeys.webhook.title": "Webhook Integration",
|
||||
"apiKeys.webhook.descriptionBefore": "Pass a ",
|
||||
"apiKeys.webhook.descriptionAfter": " parameter to receive a POST request when your translation is complete.",
|
||||
@@ -1352,6 +1392,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Autre cible",
|
||||
"glossaries.card.editTerms": "Modifier les termes",
|
||||
"glossaries.card.delete": "Supprimer",
|
||||
"glossaries.grid.searchPlaceholder": "Rechercher un glossaire…",
|
||||
"glossaries.grid.noResults": "Aucun résultat pour cette recherche.",
|
||||
"glossaries.detail.backToList": "Retour aux glossaires",
|
||||
"glossaries.detail.save": "Enregistrer",
|
||||
"glossaries.detail.savedTitle": "Enregistré",
|
||||
"glossaries.detail.savedDesc": "Le glossaire a été mis à jour.",
|
||||
"glossaries.detail.settingsTitle": "Paramètres",
|
||||
"glossaries.detail.sourceLang": "Langue source",
|
||||
"glossaries.detail.targetLang": "Langue cible",
|
||||
"glossaries.detail.termsTitle": "Termes",
|
||||
"glossaries.detail.terms": "termes",
|
||||
"glossaries.detail.searchTerms": "Filtrer…",
|
||||
"glossaries.detail.noTerms": "Aucun terme pour l'instant.",
|
||||
"glossaries.detail.addFirstTerm": "Ajouter le premier terme",
|
||||
"glossaries.detail.addTerm": "Ajouter un terme",
|
||||
"glossaries.detail.maxReached": "Limite maximale atteinte",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Cible",
|
||||
"glossaries.detail.sourcePlaceholder": "terme source",
|
||||
"glossaries.detail.targetPlaceholder": "terme cible",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Exportez vos termes en CSV ou importez-en de nouveaux (remplace la liste actuelle).",
|
||||
"glossaries.detail.export": "Exporter",
|
||||
"glossaries.detail.import": "Importer",
|
||||
"glossaries.detail.dangerTitle": "Zone danger",
|
||||
"glossaries.detail.dangerDesc": "La suppression est définitive. Tous les termes associés seront perdus.",
|
||||
"glossaries.detail.deleteGlossary": "Supprimer ce glossaire",
|
||||
"glossaries.detail.confirmDelete": "Confirmer la suppression ?",
|
||||
"glossaries.detail.confirm": "Confirmer",
|
||||
"glossaries.detail.cancel": "Annuler",
|
||||
"glossaries.detail.notFoundTitle": "Glossaire introuvable",
|
||||
"glossaries.detail.notFoundDesc": "Ce glossaire n'existe pas ou vous n'y avez pas accès.",
|
||||
"glossaries.detail.maxTermsTitle": "Limite atteinte",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} termes par glossaire.",
|
||||
"glossaries.detail.importEmptyTitle": "Fichier vide",
|
||||
"glossaries.detail.importEmptyDesc": "Aucun terme détecté dans ce fichier.",
|
||||
"glossaries.detail.importedTitle": "Importé",
|
||||
"glossaries.detail.importedDesc": "{count} termes importés.",
|
||||
"glossaries.detail.importErrorTitle": "Erreur de lecture",
|
||||
"glossaries.detail.importErrorDesc": "Impossible de lire le fichier.",
|
||||
"apiKeys.webhook.title": "Intégration Webhook",
|
||||
"apiKeys.webhook.descriptionBefore": "Passez un paramètre ",
|
||||
"apiKeys.webhook.descriptionAfter": " pour recevoir une requête POST lorsque votre traduction est terminée.",
|
||||
@@ -2282,6 +2362,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Autre cible",
|
||||
"glossaries.card.editTerms": "Modifier les termes",
|
||||
"glossaries.card.delete": "Supprimer",
|
||||
"glossaries.grid.searchPlaceholder": "Search a glossary…",
|
||||
"glossaries.grid.noResults": "No results for this search.",
|
||||
"glossaries.detail.backToList": "Back to glossaries",
|
||||
"glossaries.detail.save": "Save",
|
||||
"glossaries.detail.savedTitle": "Saved",
|
||||
"glossaries.detail.savedDesc": "The glossary has been updated.",
|
||||
"glossaries.detail.settingsTitle": "Settings",
|
||||
"glossaries.detail.sourceLang": "Source language",
|
||||
"glossaries.detail.targetLang": "Target language",
|
||||
"glossaries.detail.termsTitle": "Terms",
|
||||
"glossaries.detail.terms": "terms",
|
||||
"glossaries.detail.searchTerms": "Filter…",
|
||||
"glossaries.detail.noTerms": "No terms yet.",
|
||||
"glossaries.detail.addFirstTerm": "Add the first term",
|
||||
"glossaries.detail.addTerm": "Add a term",
|
||||
"glossaries.detail.maxReached": "Maximum limit reached",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Target",
|
||||
"glossaries.detail.sourcePlaceholder": "source term",
|
||||
"glossaries.detail.targetPlaceholder": "target term",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Export your terms as CSV or import new ones (replaces the current list).",
|
||||
"glossaries.detail.export": "Export",
|
||||
"glossaries.detail.import": "Import",
|
||||
"glossaries.detail.dangerTitle": "Danger zone",
|
||||
"glossaries.detail.dangerDesc": "Deletion is permanent. All associated terms will be lost.",
|
||||
"glossaries.detail.deleteGlossary": "Delete this glossary",
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} terms per glossary.",
|
||||
"glossaries.detail.importEmptyTitle": "Empty file",
|
||||
"glossaries.detail.importEmptyDesc": "No terms detected in this file.",
|
||||
"glossaries.detail.importedTitle": "Imported",
|
||||
"glossaries.detail.importedDesc": "{count} terms imported.",
|
||||
"glossaries.detail.importErrorTitle": "Read error",
|
||||
"glossaries.detail.importErrorDesc": "Unable to read the file.",
|
||||
"apiKeys.webhook.title": "Intégration Webhook",
|
||||
"apiKeys.webhook.descriptionBefore": "Passez un paramètre ",
|
||||
"apiKeys.webhook.descriptionAfter": " pour recevoir une requête POST lorsque votre traduction est terminée.",
|
||||
@@ -3167,6 +3287,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Autre cible",
|
||||
"glossaries.card.editTerms": "Modifier les termes",
|
||||
"glossaries.card.delete": "Supprimer",
|
||||
"glossaries.grid.searchPlaceholder": "Search a glossary…",
|
||||
"glossaries.grid.noResults": "No results for this search.",
|
||||
"glossaries.detail.backToList": "Back to glossaries",
|
||||
"glossaries.detail.save": "Save",
|
||||
"glossaries.detail.savedTitle": "Saved",
|
||||
"glossaries.detail.savedDesc": "The glossary has been updated.",
|
||||
"glossaries.detail.settingsTitle": "Settings",
|
||||
"glossaries.detail.sourceLang": "Source language",
|
||||
"glossaries.detail.targetLang": "Target language",
|
||||
"glossaries.detail.termsTitle": "Terms",
|
||||
"glossaries.detail.terms": "terms",
|
||||
"glossaries.detail.searchTerms": "Filter…",
|
||||
"glossaries.detail.noTerms": "No terms yet.",
|
||||
"glossaries.detail.addFirstTerm": "Add the first term",
|
||||
"glossaries.detail.addTerm": "Add a term",
|
||||
"glossaries.detail.maxReached": "Maximum limit reached",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Target",
|
||||
"glossaries.detail.sourcePlaceholder": "source term",
|
||||
"glossaries.detail.targetPlaceholder": "target term",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Export your terms as CSV or import new ones (replaces the current list).",
|
||||
"glossaries.detail.export": "Export",
|
||||
"glossaries.detail.import": "Import",
|
||||
"glossaries.detail.dangerTitle": "Danger zone",
|
||||
"glossaries.detail.dangerDesc": "Deletion is permanent. All associated terms will be lost.",
|
||||
"glossaries.detail.deleteGlossary": "Delete this glossary",
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} terms per glossary.",
|
||||
"glossaries.detail.importEmptyTitle": "Empty file",
|
||||
"glossaries.detail.importEmptyDesc": "No terms detected in this file.",
|
||||
"glossaries.detail.importedTitle": "Imported",
|
||||
"glossaries.detail.importedDesc": "{count} terms imported.",
|
||||
"glossaries.detail.importErrorTitle": "Read error",
|
||||
"glossaries.detail.importErrorDesc": "Unable to read the file.",
|
||||
"apiKeys.webhook.title": "Intégration Webhook",
|
||||
"apiKeys.webhook.descriptionBefore": "Passez un paramètre ",
|
||||
"apiKeys.webhook.descriptionAfter": " pour recevoir une requête POST lorsque votre traduction est terminée.",
|
||||
@@ -4052,6 +4212,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Autre cible",
|
||||
"glossaries.card.editTerms": "Modifier les termes",
|
||||
"glossaries.card.delete": "Supprimer",
|
||||
"glossaries.grid.searchPlaceholder": "Search a glossary…",
|
||||
"glossaries.grid.noResults": "No results for this search.",
|
||||
"glossaries.detail.backToList": "Back to glossaries",
|
||||
"glossaries.detail.save": "Save",
|
||||
"glossaries.detail.savedTitle": "Saved",
|
||||
"glossaries.detail.savedDesc": "The glossary has been updated.",
|
||||
"glossaries.detail.settingsTitle": "Settings",
|
||||
"glossaries.detail.sourceLang": "Source language",
|
||||
"glossaries.detail.targetLang": "Target language",
|
||||
"glossaries.detail.termsTitle": "Terms",
|
||||
"glossaries.detail.terms": "terms",
|
||||
"glossaries.detail.searchTerms": "Filter…",
|
||||
"glossaries.detail.noTerms": "No terms yet.",
|
||||
"glossaries.detail.addFirstTerm": "Add the first term",
|
||||
"glossaries.detail.addTerm": "Add a term",
|
||||
"glossaries.detail.maxReached": "Maximum limit reached",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Target",
|
||||
"glossaries.detail.sourcePlaceholder": "source term",
|
||||
"glossaries.detail.targetPlaceholder": "target term",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Export your terms as CSV or import new ones (replaces the current list).",
|
||||
"glossaries.detail.export": "Export",
|
||||
"glossaries.detail.import": "Import",
|
||||
"glossaries.detail.dangerTitle": "Danger zone",
|
||||
"glossaries.detail.dangerDesc": "Deletion is permanent. All associated terms will be lost.",
|
||||
"glossaries.detail.deleteGlossary": "Delete this glossary",
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} terms per glossary.",
|
||||
"glossaries.detail.importEmptyTitle": "Empty file",
|
||||
"glossaries.detail.importEmptyDesc": "No terms detected in this file.",
|
||||
"glossaries.detail.importedTitle": "Imported",
|
||||
"glossaries.detail.importedDesc": "{count} terms imported.",
|
||||
"glossaries.detail.importErrorTitle": "Read error",
|
||||
"glossaries.detail.importErrorDesc": "Unable to read the file.",
|
||||
"apiKeys.webhook.title": "Intégration Webhook",
|
||||
"apiKeys.webhook.descriptionBefore": "Passez un paramètre ",
|
||||
"apiKeys.webhook.descriptionAfter": " pour recevoir une requête POST lorsque votre traduction est terminée.",
|
||||
@@ -4937,6 +5137,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Autre cible",
|
||||
"glossaries.card.editTerms": "Modifier les termes",
|
||||
"glossaries.card.delete": "Supprimer",
|
||||
"glossaries.grid.searchPlaceholder": "Search a glossary…",
|
||||
"glossaries.grid.noResults": "No results for this search.",
|
||||
"glossaries.detail.backToList": "Back to glossaries",
|
||||
"glossaries.detail.save": "Save",
|
||||
"glossaries.detail.savedTitle": "Saved",
|
||||
"glossaries.detail.savedDesc": "The glossary has been updated.",
|
||||
"glossaries.detail.settingsTitle": "Settings",
|
||||
"glossaries.detail.sourceLang": "Source language",
|
||||
"glossaries.detail.targetLang": "Target language",
|
||||
"glossaries.detail.termsTitle": "Terms",
|
||||
"glossaries.detail.terms": "terms",
|
||||
"glossaries.detail.searchTerms": "Filter…",
|
||||
"glossaries.detail.noTerms": "No terms yet.",
|
||||
"glossaries.detail.addFirstTerm": "Add the first term",
|
||||
"glossaries.detail.addTerm": "Add a term",
|
||||
"glossaries.detail.maxReached": "Maximum limit reached",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Target",
|
||||
"glossaries.detail.sourcePlaceholder": "source term",
|
||||
"glossaries.detail.targetPlaceholder": "target term",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Export your terms as CSV or import new ones (replaces the current list).",
|
||||
"glossaries.detail.export": "Export",
|
||||
"glossaries.detail.import": "Import",
|
||||
"glossaries.detail.dangerTitle": "Danger zone",
|
||||
"glossaries.detail.dangerDesc": "Deletion is permanent. All associated terms will be lost.",
|
||||
"glossaries.detail.deleteGlossary": "Delete this glossary",
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} terms per glossary.",
|
||||
"glossaries.detail.importEmptyTitle": "Empty file",
|
||||
"glossaries.detail.importEmptyDesc": "No terms detected in this file.",
|
||||
"glossaries.detail.importedTitle": "Imported",
|
||||
"glossaries.detail.importedDesc": "{count} terms imported.",
|
||||
"glossaries.detail.importErrorTitle": "Read error",
|
||||
"glossaries.detail.importErrorDesc": "Unable to read the file.",
|
||||
"apiKeys.webhook.title": "Intégration Webhook",
|
||||
"apiKeys.webhook.descriptionBefore": "Passez un paramètre ",
|
||||
"apiKeys.webhook.descriptionAfter": " pour recevoir une requête POST lorsque votre traduction est terminée.",
|
||||
@@ -5822,6 +6062,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Autre cible",
|
||||
"glossaries.card.editTerms": "Modifier les termes",
|
||||
"glossaries.card.delete": "Supprimer",
|
||||
"glossaries.grid.searchPlaceholder": "Search a glossary…",
|
||||
"glossaries.grid.noResults": "No results for this search.",
|
||||
"glossaries.detail.backToList": "Back to glossaries",
|
||||
"glossaries.detail.save": "Save",
|
||||
"glossaries.detail.savedTitle": "Saved",
|
||||
"glossaries.detail.savedDesc": "The glossary has been updated.",
|
||||
"glossaries.detail.settingsTitle": "Settings",
|
||||
"glossaries.detail.sourceLang": "Source language",
|
||||
"glossaries.detail.targetLang": "Target language",
|
||||
"glossaries.detail.termsTitle": "Terms",
|
||||
"glossaries.detail.terms": "terms",
|
||||
"glossaries.detail.searchTerms": "Filter…",
|
||||
"glossaries.detail.noTerms": "No terms yet.",
|
||||
"glossaries.detail.addFirstTerm": "Add the first term",
|
||||
"glossaries.detail.addTerm": "Add a term",
|
||||
"glossaries.detail.maxReached": "Maximum limit reached",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Target",
|
||||
"glossaries.detail.sourcePlaceholder": "source term",
|
||||
"glossaries.detail.targetPlaceholder": "target term",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Export your terms as CSV or import new ones (replaces the current list).",
|
||||
"glossaries.detail.export": "Export",
|
||||
"glossaries.detail.import": "Import",
|
||||
"glossaries.detail.dangerTitle": "Danger zone",
|
||||
"glossaries.detail.dangerDesc": "Deletion is permanent. All associated terms will be lost.",
|
||||
"glossaries.detail.deleteGlossary": "Delete this glossary",
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} terms per glossary.",
|
||||
"glossaries.detail.importEmptyTitle": "Empty file",
|
||||
"glossaries.detail.importEmptyDesc": "No terms detected in this file.",
|
||||
"glossaries.detail.importedTitle": "Imported",
|
||||
"glossaries.detail.importedDesc": "{count} terms imported.",
|
||||
"glossaries.detail.importErrorTitle": "Read error",
|
||||
"glossaries.detail.importErrorDesc": "Unable to read the file.",
|
||||
"apiKeys.webhook.title": "Intégration Webhook",
|
||||
"apiKeys.webhook.descriptionBefore": "Passez un paramètre ",
|
||||
"apiKeys.webhook.descriptionAfter": " pour recevoir une requête POST lorsque votre traduction est terminée.",
|
||||
@@ -6707,6 +6987,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Autre cible",
|
||||
"glossaries.card.editTerms": "Modifier les termes",
|
||||
"glossaries.card.delete": "Supprimer",
|
||||
"glossaries.grid.searchPlaceholder": "Search a glossary…",
|
||||
"glossaries.grid.noResults": "No results for this search.",
|
||||
"glossaries.detail.backToList": "Back to glossaries",
|
||||
"glossaries.detail.save": "Save",
|
||||
"glossaries.detail.savedTitle": "Saved",
|
||||
"glossaries.detail.savedDesc": "The glossary has been updated.",
|
||||
"glossaries.detail.settingsTitle": "Settings",
|
||||
"glossaries.detail.sourceLang": "Source language",
|
||||
"glossaries.detail.targetLang": "Target language",
|
||||
"glossaries.detail.termsTitle": "Terms",
|
||||
"glossaries.detail.terms": "terms",
|
||||
"glossaries.detail.searchTerms": "Filter…",
|
||||
"glossaries.detail.noTerms": "No terms yet.",
|
||||
"glossaries.detail.addFirstTerm": "Add the first term",
|
||||
"glossaries.detail.addTerm": "Add a term",
|
||||
"glossaries.detail.maxReached": "Maximum limit reached",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Target",
|
||||
"glossaries.detail.sourcePlaceholder": "source term",
|
||||
"glossaries.detail.targetPlaceholder": "target term",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Export your terms as CSV or import new ones (replaces the current list).",
|
||||
"glossaries.detail.export": "Export",
|
||||
"glossaries.detail.import": "Import",
|
||||
"glossaries.detail.dangerTitle": "Danger zone",
|
||||
"glossaries.detail.dangerDesc": "Deletion is permanent. All associated terms will be lost.",
|
||||
"glossaries.detail.deleteGlossary": "Delete this glossary",
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} terms per glossary.",
|
||||
"glossaries.detail.importEmptyTitle": "Empty file",
|
||||
"glossaries.detail.importEmptyDesc": "No terms detected in this file.",
|
||||
"glossaries.detail.importedTitle": "Imported",
|
||||
"glossaries.detail.importedDesc": "{count} terms imported.",
|
||||
"glossaries.detail.importErrorTitle": "Read error",
|
||||
"glossaries.detail.importErrorDesc": "Unable to read the file.",
|
||||
"apiKeys.webhook.title": "Intégration Webhook",
|
||||
"apiKeys.webhook.descriptionBefore": "Passez un paramètre ",
|
||||
"apiKeys.webhook.descriptionAfter": " pour recevoir une requête POST lorsque votre traduction est terminée.",
|
||||
@@ -7594,6 +7914,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Autre cible",
|
||||
"glossaries.card.editTerms": "Modifier les termes",
|
||||
"glossaries.card.delete": "Supprimer",
|
||||
"glossaries.grid.searchPlaceholder": "Search a glossary…",
|
||||
"glossaries.grid.noResults": "No results for this search.",
|
||||
"glossaries.detail.backToList": "Back to glossaries",
|
||||
"glossaries.detail.save": "Save",
|
||||
"glossaries.detail.savedTitle": "Saved",
|
||||
"glossaries.detail.savedDesc": "The glossary has been updated.",
|
||||
"glossaries.detail.settingsTitle": "Settings",
|
||||
"glossaries.detail.sourceLang": "Source language",
|
||||
"glossaries.detail.targetLang": "Target language",
|
||||
"glossaries.detail.termsTitle": "Terms",
|
||||
"glossaries.detail.terms": "terms",
|
||||
"glossaries.detail.searchTerms": "Filter…",
|
||||
"glossaries.detail.noTerms": "No terms yet.",
|
||||
"glossaries.detail.addFirstTerm": "Add the first term",
|
||||
"glossaries.detail.addTerm": "Add a term",
|
||||
"glossaries.detail.maxReached": "Maximum limit reached",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Target",
|
||||
"glossaries.detail.sourcePlaceholder": "source term",
|
||||
"glossaries.detail.targetPlaceholder": "target term",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Export your terms as CSV or import new ones (replaces the current list).",
|
||||
"glossaries.detail.export": "Export",
|
||||
"glossaries.detail.import": "Import",
|
||||
"glossaries.detail.dangerTitle": "Danger zone",
|
||||
"glossaries.detail.dangerDesc": "Deletion is permanent. All associated terms will be lost.",
|
||||
"glossaries.detail.deleteGlossary": "Delete this glossary",
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} terms per glossary.",
|
||||
"glossaries.detail.importEmptyTitle": "Empty file",
|
||||
"glossaries.detail.importEmptyDesc": "No terms detected in this file.",
|
||||
"glossaries.detail.importedTitle": "Imported",
|
||||
"glossaries.detail.importedDesc": "{count} terms imported.",
|
||||
"glossaries.detail.importErrorTitle": "Read error",
|
||||
"glossaries.detail.importErrorDesc": "Unable to read the file.",
|
||||
"apiKeys.webhook.title": "Intégration Webhook",
|
||||
"apiKeys.webhook.descriptionBefore": "Passez un paramètre ",
|
||||
"apiKeys.webhook.descriptionAfter": " pour recevoir une requête POST lorsque votre traduction est terminée.",
|
||||
@@ -8478,6 +8838,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Autre cible",
|
||||
"glossaries.card.editTerms": "Modifier les termes",
|
||||
"glossaries.card.delete": "Supprimer",
|
||||
"glossaries.grid.searchPlaceholder": "Search a glossary…",
|
||||
"glossaries.grid.noResults": "No results for this search.",
|
||||
"glossaries.detail.backToList": "Back to glossaries",
|
||||
"glossaries.detail.save": "Save",
|
||||
"glossaries.detail.savedTitle": "Saved",
|
||||
"glossaries.detail.savedDesc": "The glossary has been updated.",
|
||||
"glossaries.detail.settingsTitle": "Settings",
|
||||
"glossaries.detail.sourceLang": "Source language",
|
||||
"glossaries.detail.targetLang": "Target language",
|
||||
"glossaries.detail.termsTitle": "Terms",
|
||||
"glossaries.detail.terms": "terms",
|
||||
"glossaries.detail.searchTerms": "Filter…",
|
||||
"glossaries.detail.noTerms": "No terms yet.",
|
||||
"glossaries.detail.addFirstTerm": "Add the first term",
|
||||
"glossaries.detail.addTerm": "Add a term",
|
||||
"glossaries.detail.maxReached": "Maximum limit reached",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Target",
|
||||
"glossaries.detail.sourcePlaceholder": "source term",
|
||||
"glossaries.detail.targetPlaceholder": "target term",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Export your terms as CSV or import new ones (replaces the current list).",
|
||||
"glossaries.detail.export": "Export",
|
||||
"glossaries.detail.import": "Import",
|
||||
"glossaries.detail.dangerTitle": "Danger zone",
|
||||
"glossaries.detail.dangerDesc": "Deletion is permanent. All associated terms will be lost.",
|
||||
"glossaries.detail.deleteGlossary": "Delete this glossary",
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} terms per glossary.",
|
||||
"glossaries.detail.importEmptyTitle": "Empty file",
|
||||
"glossaries.detail.importEmptyDesc": "No terms detected in this file.",
|
||||
"glossaries.detail.importedTitle": "Imported",
|
||||
"glossaries.detail.importedDesc": "{count} terms imported.",
|
||||
"glossaries.detail.importErrorTitle": "Read error",
|
||||
"glossaries.detail.importErrorDesc": "Unable to read the file.",
|
||||
"apiKeys.webhook.title": "Intégration Webhook",
|
||||
"apiKeys.webhook.descriptionBefore": "Passez un paramètre ",
|
||||
"apiKeys.webhook.descriptionAfter": " pour recevoir une requête POST lorsque votre traduction est terminée.",
|
||||
@@ -9362,6 +9762,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Autre cible",
|
||||
"glossaries.card.editTerms": "Modifier les termes",
|
||||
"glossaries.card.delete": "Supprimer",
|
||||
"glossaries.grid.searchPlaceholder": "Search a glossary…",
|
||||
"glossaries.grid.noResults": "No results for this search.",
|
||||
"glossaries.detail.backToList": "Back to glossaries",
|
||||
"glossaries.detail.save": "Save",
|
||||
"glossaries.detail.savedTitle": "Saved",
|
||||
"glossaries.detail.savedDesc": "The glossary has been updated.",
|
||||
"glossaries.detail.settingsTitle": "Settings",
|
||||
"glossaries.detail.sourceLang": "Source language",
|
||||
"glossaries.detail.targetLang": "Target language",
|
||||
"glossaries.detail.termsTitle": "Terms",
|
||||
"glossaries.detail.terms": "terms",
|
||||
"glossaries.detail.searchTerms": "Filter…",
|
||||
"glossaries.detail.noTerms": "No terms yet.",
|
||||
"glossaries.detail.addFirstTerm": "Add the first term",
|
||||
"glossaries.detail.addTerm": "Add a term",
|
||||
"glossaries.detail.maxReached": "Maximum limit reached",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Target",
|
||||
"glossaries.detail.sourcePlaceholder": "source term",
|
||||
"glossaries.detail.targetPlaceholder": "target term",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Export your terms as CSV or import new ones (replaces the current list).",
|
||||
"glossaries.detail.export": "Export",
|
||||
"glossaries.detail.import": "Import",
|
||||
"glossaries.detail.dangerTitle": "Danger zone",
|
||||
"glossaries.detail.dangerDesc": "Deletion is permanent. All associated terms will be lost.",
|
||||
"glossaries.detail.deleteGlossary": "Delete this glossary",
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} terms per glossary.",
|
||||
"glossaries.detail.importEmptyTitle": "Empty file",
|
||||
"glossaries.detail.importEmptyDesc": "No terms detected in this file.",
|
||||
"glossaries.detail.importedTitle": "Imported",
|
||||
"glossaries.detail.importedDesc": "{count} terms imported.",
|
||||
"glossaries.detail.importErrorTitle": "Read error",
|
||||
"glossaries.detail.importErrorDesc": "Unable to read the file.",
|
||||
"apiKeys.webhook.title": "Intégration Webhook",
|
||||
"apiKeys.webhook.descriptionBefore": "Passez un paramètre ",
|
||||
"apiKeys.webhook.descriptionAfter": " pour recevoir une requête POST lorsque votre traduction est terminée.",
|
||||
@@ -10204,6 +10644,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Autre cible",
|
||||
"glossaries.card.editTerms": "Modifier les termes",
|
||||
"glossaries.card.delete": "Supprimer",
|
||||
"glossaries.grid.searchPlaceholder": "Search a glossary…",
|
||||
"glossaries.grid.noResults": "No results for this search.",
|
||||
"glossaries.detail.backToList": "Back to glossaries",
|
||||
"glossaries.detail.save": "Save",
|
||||
"glossaries.detail.savedTitle": "Saved",
|
||||
"glossaries.detail.savedDesc": "The glossary has been updated.",
|
||||
"glossaries.detail.settingsTitle": "Settings",
|
||||
"glossaries.detail.sourceLang": "Source language",
|
||||
"glossaries.detail.targetLang": "Target language",
|
||||
"glossaries.detail.termsTitle": "Terms",
|
||||
"glossaries.detail.terms": "terms",
|
||||
"glossaries.detail.searchTerms": "Filter…",
|
||||
"glossaries.detail.noTerms": "No terms yet.",
|
||||
"glossaries.detail.addFirstTerm": "Add the first term",
|
||||
"glossaries.detail.addTerm": "Add a term",
|
||||
"glossaries.detail.maxReached": "Maximum limit reached",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Target",
|
||||
"glossaries.detail.sourcePlaceholder": "source term",
|
||||
"glossaries.detail.targetPlaceholder": "target term",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Export your terms as CSV or import new ones (replaces the current list).",
|
||||
"glossaries.detail.export": "Export",
|
||||
"glossaries.detail.import": "Import",
|
||||
"glossaries.detail.dangerTitle": "Danger zone",
|
||||
"glossaries.detail.dangerDesc": "Deletion is permanent. All associated terms will be lost.",
|
||||
"glossaries.detail.deleteGlossary": "Delete this glossary",
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} terms per glossary.",
|
||||
"glossaries.detail.importEmptyTitle": "Empty file",
|
||||
"glossaries.detail.importEmptyDesc": "No terms detected in this file.",
|
||||
"glossaries.detail.importedTitle": "Imported",
|
||||
"glossaries.detail.importedDesc": "{count} terms imported.",
|
||||
"glossaries.detail.importErrorTitle": "Read error",
|
||||
"glossaries.detail.importErrorDesc": "Unable to read the file.",
|
||||
"apiKeys.webhook.title": "Intégration Webhook",
|
||||
"apiKeys.webhook.descriptionBefore": "Passez un paramètre ",
|
||||
"apiKeys.webhook.descriptionAfter": " pour recevoir une requête POST lorsque votre traduction est terminée.",
|
||||
@@ -11055,6 +11535,46 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.badge.otherTarget": "Autre cible",
|
||||
"glossaries.card.editTerms": "Modifier les termes",
|
||||
"glossaries.card.delete": "Supprimer",
|
||||
"glossaries.grid.searchPlaceholder": "Search a glossary…",
|
||||
"glossaries.grid.noResults": "No results for this search.",
|
||||
"glossaries.detail.backToList": "Back to glossaries",
|
||||
"glossaries.detail.save": "Save",
|
||||
"glossaries.detail.savedTitle": "Saved",
|
||||
"glossaries.detail.savedDesc": "The glossary has been updated.",
|
||||
"glossaries.detail.settingsTitle": "Settings",
|
||||
"glossaries.detail.sourceLang": "Source language",
|
||||
"glossaries.detail.targetLang": "Target language",
|
||||
"glossaries.detail.termsTitle": "Terms",
|
||||
"glossaries.detail.terms": "terms",
|
||||
"glossaries.detail.searchTerms": "Filter…",
|
||||
"glossaries.detail.noTerms": "No terms yet.",
|
||||
"glossaries.detail.addFirstTerm": "Add the first term",
|
||||
"glossaries.detail.addTerm": "Add a term",
|
||||
"glossaries.detail.maxReached": "Maximum limit reached",
|
||||
"glossaries.detail.source": "Source",
|
||||
"glossaries.detail.target": "Target",
|
||||
"glossaries.detail.sourcePlaceholder": "source term",
|
||||
"glossaries.detail.targetPlaceholder": "target term",
|
||||
"glossaries.detail.csvTitle": "CSV",
|
||||
"glossaries.detail.csvDesc": "Export your terms as CSV or import new ones (replaces the current list).",
|
||||
"glossaries.detail.export": "Export",
|
||||
"glossaries.detail.import": "Import",
|
||||
"glossaries.detail.dangerTitle": "Danger zone",
|
||||
"glossaries.detail.dangerDesc": "Deletion is permanent. All associated terms will be lost.",
|
||||
"glossaries.detail.deleteGlossary": "Delete this glossary",
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
"glossaries.detail.maxTermsDesc": "Maximum {max} terms per glossary.",
|
||||
"glossaries.detail.importEmptyTitle": "Empty file",
|
||||
"glossaries.detail.importEmptyDesc": "No terms detected in this file.",
|
||||
"glossaries.detail.importedTitle": "Imported",
|
||||
"glossaries.detail.importedDesc": "{count} terms imported.",
|
||||
"glossaries.detail.importErrorTitle": "Read error",
|
||||
"glossaries.detail.importErrorDesc": "Unable to read the file.",
|
||||
"apiKeys.webhook.title": "Intégration Webhook",
|
||||
"apiKeys.webhook.descriptionBefore": "Passez un paramètre ",
|
||||
"apiKeys.webhook.descriptionAfter": " pour recevoir une requête POST lorsque votre traduction est terminée.",
|
||||
|
||||
Reference in New Issue
Block a user