From 5e2827450604728db1fb828535e4d9596b8e362e Mon Sep 17 00:00:00 2001 From: Pavel Mihaylov Date: Thu, 24 Oct 2024 15:29:40 +0300 Subject: [PATCH] TTYG help texts and some other minor touches (#1638) ## What - Updated various TTYG help texts - Wrap explain agent instructions - (not just TTYG) Updated many French translations to have a space after a colon (French orthography rule) - Less space between icon and text on TTYG initial screen create agent button ## Why - Better usability - Accurate translations ## How - Mostly translation files - A bit of html/css Co-authored-by: Pavel Mihaylov Co-authored-by: Svilen Velikov <51084653+svilenvelikov@users.noreply.github.com> --- scripts/validate-translations.js | 3 + .../ttyg/agent-instructions-explain-modal.css | 4 + src/css/ttyg/no-agents-view.css | 4 + src/css/workbench-custom.css | 4 + src/i18n/locale-en.json | 10 +- src/i18n/locale-fr.json | 112 +++++++++--------- .../ttyg/templates/chat-item-detail.html | 2 +- src/js/angular/ttyg/templates/chatInfo.html | 8 +- .../ttyg/templates/no-agents-view.html | 21 ++-- test-cypress/fixtures/locale-en.json | 10 +- 10 files changed, 96 insertions(+), 82 deletions(-) diff --git a/scripts/validate-translations.js b/scripts/validate-translations.js index d9dbd63db..cbc353385 100644 --- a/scripts/validate-translations.js +++ b/scripts/validate-translations.js @@ -60,6 +60,9 @@ const identicalTranslations = [ "{{progressMessage}}... {{timeHuman}}", "\n{{extraMessage}}", "{{n}}/{{nn}}", + "{{'ttyg.helpInfo'|translate|trustAsHtml}}", + "{{'ttyg.help.how.content2'|translate|trustAsHtml}}", + "{{'ttyg.helpInfo'|translate|trustAsHtml}}", "", // Example values below - maybe they should never be translated? diff --git a/src/css/ttyg/agent-instructions-explain-modal.css b/src/css/ttyg/agent-instructions-explain-modal.css index f37bc19c6..c8fd1559a 100644 --- a/src/css/ttyg/agent-instructions-explain-modal.css +++ b/src/css/ttyg/agent-instructions-explain-modal.css @@ -6,3 +6,7 @@ .instructions-explain .instruction-content { margin-top: 0.5em; } + +.instructions-explain pre { + white-space: pre-wrap; +} diff --git a/src/css/ttyg/no-agents-view.css b/src/css/ttyg/no-agents-view.css index 574c53c29..a270bbf8f 100644 --- a/src/css/ttyg/no-agents-view.css +++ b/src/css/ttyg/no-agents-view.css @@ -17,3 +17,7 @@ display: flex; justify-content: center; } + +.no-agents-view-component .create-agent-btn span { + margin-left: 0.5rem; +} diff --git a/src/css/workbench-custom.css b/src/css/workbench-custom.css index f3776f38b..4a09e0c1a 100644 --- a/src/css/workbench-custom.css +++ b/src/css/workbench-custom.css @@ -405,3 +405,7 @@ .update-ontop-repo-dialog .modal-dialog .modal-content .modal-body { font-family: var(--mono-font); } + +.help-info b { + font-weight: 500; +} diff --git a/src/i18n/locale-en.json b/src/i18n/locale-en.json index eef05a7f3..79729b7eb 100644 --- a/src/i18n/locale-en.json +++ b/src/i18n/locale-en.json @@ -225,7 +225,7 @@ } }, "ttyg": { - "helpInfo": "Talk to Your Graph is chat bot based on OpenAI's GPT-4 model that can answer questions about data stored in GraphDB, leveraging both your data and the general knowledge of the GPT-4 model. The bot works in connection with the ChatGPT Retrieval connector.", + "helpInfo": "The Talk to Your Graph view lets you interact with your database through a conversational interface. You can ask natural language questions about the data and receive answers generated through the combined power of GraphDB and OpenAI. It supports multiple agent configurations and persistent chats for ongoing, contextual conversations.", "loading": "Loading...", "help": { "btn": { @@ -344,6 +344,7 @@ "retrieval_search": "ChatGPT Retrieval", "iri_discovery": "FTS for IRI discovery" }, + "query_colon": ":", "query_desc": { "sparql_query":"Direct query", "fts_search": "Full-text search via SPARQL", @@ -647,8 +648,9 @@ }, "messages": { "no_agents": "No agents found for the selected filter.", - "help_1": "Talk to your data in natural language. All you need to do is create and instruct your own AI Agent to assist you.", - "help_2": "The Agent is an AI-powered conversational agent designed to help with a wide range of tasks, from answering questions and providing information to assisting with creative and technical projects. It leverages advanced natural language processing to understand and respond to user inputs in a human-like manner, making interactions intuitive and efficient.", + "help_1": "{{'ttyg.helpInfo'|translate|trustAsHtml}}", + "help_2": "{{'ttyg.help.how.content2'|translate|trustAsHtml}}", + "help_config": "To use Talk to Your Graph, GraphDB must first be configured to work with OpenAI. Please ensure that the necessary API keys and settings are in place before starting. For detailed setup instructions, refer to the documentation or contact your administrator.", "token_prop_warn1": "To enable this feature, set the config property", "token_prop_warn2": "to your GPT token in", "token_prop_warn3": "file.", @@ -661,7 +663,7 @@ } }, "help.what.title": "What is this?", - "help.what.content": "Talk to Your Graph is chat bot based on OpenAI's GPT-4 model that can answer questions about data stored in GraphDB, leveraging both your data and the general knowledge of the GPT-4 model.", + "help.what.content": "{{'ttyg.helpInfo'|translate|trustAsHtml}}", "help.how.title": "How does it work?", "help.how.content": "The bot uses the ChatGPT Retrieval connector to fetch information it does not know about. As such, you must first create a suitable connector. See also the settings for fine-tuning the integration with the Retrieval connector." }, diff --git a/src/i18n/locale-fr.json b/src/i18n/locale-fr.json index d8a001c98..7ae272ba2 100644 --- a/src/i18n/locale-fr.json +++ b/src/i18n/locale-fr.json @@ -225,7 +225,7 @@ } }, "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.", + "helpInfo": "La vue Parlez à votre graphe vous permet d'interagir avec votre base de données via une interface conversationnelle. Vous pouvez poser des questions en langage naturel sur les données et recevoir des réponses générées grâce à la puissance combinée de GraphDB et OpenAI. Elle prend en charge plusieurs configurations d'agents et des conversations persistantes pour des échanges contextuels en continu.", "loading": "Chargement...", "help": { "btn": { @@ -344,6 +344,7 @@ "retrieval_search": "ChatGPT Retrieval", "iri_discovery": "FTS pour la découverte IRI" }, + "query_colon": " :", "query_desc": { "sparql_query": "Requête directe", "fts_search": "Recherche en texte intégral via SPARQL", @@ -647,8 +648,9 @@ }, "messages": { "no_agents": "Aucun agent n'est configuré pour le moment.", - "help_1": "Parlez à vos données en langage naturel. Il vous suffit de créer et d'instruire votre propre agent IA pour vous aider.", - "help_2": "The Agent est un agent conversationnel basé sur l'IA, conçu pour vous aider dans une large gamme de tâches, de la réponse aux questions et la fourniture d'informations à l'assistance dans le cadre de projets créatifs et techniques. Il exploite un traitement avancé du langage naturel pour comprendre et répondre aux entrées des utilisateurs de manière humaine, rendant les interactions intuitives et efficaces.", + "help_1": "{{'ttyg.helpInfo'|translate|trustAsHtml}}", + "help_2": "{{'ttyg.help.how.content2'|translate|trustAsHtml}}", + "help_config": "Pour utiliser Parlez à votre graphe, GraphDB doit d'abord être configuré pour fonctionner avec OpenAI. Veuillez vous assurer que les clés API et les paramètres nécessaires sont en place avant de commencer. Pour des instructions détaillées sur la configuration, consultez la documentation ou contactez votre administrateur.", "token_prop_warn1": "Pour activer cette fonctionnalité, définissez la propriété de configuration", "token_prop_warn2": "à votre jeton GPT dans le fichier", "token_prop_warn3": ".", @@ -661,7 +663,7 @@ } }, "help.what.title": "Qu'est-ce que c'est ?", - "help.what.content": "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.", + "help.what.content": "{{'ttyg.helpInfo'|translate|trustAsHtml}}", "help.how.title": "Comment ça marche ?", "help.how.content": "Le bot utilise le connecteur ChatGPT Retrieval pour récupérer des informations dont il ne connaît pas. A ce titre, vous devez d'abord créer un tel connecteur. Voir aussi les paramètres pour affiner l'intégration avec le Connecteur de récupération." }, @@ -756,7 +758,7 @@ "monitor.performance.no_repository": "Les graphiques ne sont pas disponibles parce que vous n'êtes connecté à aucun référentiel", "monitor.cluster.no_cluster": "Les graphiques ne sont pas disponibles car GraphDB ne fait pas partie de la configuration du cluster", "monitor.cluster": "Santé en cluster", - "monitor.retrying": "Réessais: {{retry}}", + "monitor.retrying": "Réessais : {{retry}}", "access.to.url.restricted": "L'accès à l'URL demandé est restreint !", "autocomplete.not.supported": "La complétion automatique n'est pas entièrement prise en charge", "autocomplete.config.not.supported": "La configuration de la complétion automatique n'est pas prise en charge.", @@ -839,8 +841,8 @@ "query.execution.on.search": "Cette requête est exécutée pendant la recherche. Ajoutez plus de liens en modifiant cette requête pour voir plus de données dans le tableau de résultats.", "query.fetch.analogical.search": "La requête détermine les données qui seront recherchées lors de la recherche analogique.", "analogical.search.info": "Cette requête est exécutée pendant la recherche analogique. Ajoutez des liens supplémentaires en modifiant cette requête pour voir plus de données dans le tableau de résultats.", - "sample.queries": "Exemples de requêtes:", - "user.queries": "Requêtes des utilisateurs:", + "sample.queries": "Exemples de requêtes :", + "user.queries": "Requêtes des utilisateurs :", "create.index.label": "Créer un index", "view.index.query": "Requête d'affichage de l'index", "test.query.btn": "Requête de test", @@ -921,8 +923,8 @@ "save.graph.enter.name": "Entrez le nom", "rdf.class.hierarchy.class.count.slider": "Curseur de comptage des classes", "rdf.class.hierarchy.description": "Permet de réduire le nombre de classes affichées sur le diagramme\n en triant celles qui ont le nombre maximum d'instances dans votre dépôt.\n Vous pouvez ajuster le nombre précisément en utilisant le mouvement cliquer + glisser ou la molette de la souris\n jusqu'au nombre qui vous satisfait.", - "rdf.class.hierarchy.min.value": "Valeur min:", - "rdf.class.hierarchy.max.value": "Valeur maximale:", + "rdf.class.hierarchy.min.value": "Valeur min :", + "rdf.class.hierarchy.max.value": "Valeur maximale :", "rdf.class.hierarchy.max.from.repo": "Calculé à partir de votre dépôt", "rdfs.comment.show": "Afficher", "rdfs.comment.hide": "Cacher", @@ -943,11 +945,11 @@ "security.repository.title": "Dépôt", "security.tooltip.read": "Lire", "security.tooltip.write": "Ecriture", - "security.user.may": "L'utilisateur peut:", + "security.user.may": "L'utilisateur peut :", "security.use.gdb": "Utiliser GraphDB", "security.grant.read.access": "Avoir un accès en lecture à un dépôt", "security.grant.read.write.access": "Avoir accès en lecture/écriture à un dépôt", - "security.repo.manager.may": "Le gestionnaire de dépôt peut:", + "security.repo.manager.may": "Le gestionnaire de dépôt peut :", "security.read.write.all.repos": "Lire et écrire tous les dépôts", "security.create.edit.delete.repos": "Créer, modifier et supprimer des dépôts", "security.access.monitoring": "Surveillance des accès", @@ -1027,7 +1029,7 @@ "resource.system.file_descriptors.label": "Descripteurs de fichiers", "resource.system.file_descriptors.tooltip": "Affiche les descripteurs de fichiers actuellement ouverts. Avoir plus de dépôts actifs ou d'opérations en cours augmente le nombre. Il devrait toujours y avoir des descripteurs libres pour traiter les nouvelles demandes. Si le nombre augmente mais ne diminue pas une fois que les opérations qui ont besoin des descripteurs sont terminées, cela peut indiquer un problème avec GraphDB", "resource.system.file_descriptors.open": "Descripteurs de fichiers ouverts", - "resource.system.file_descriptors.max": "Descripteurs de fichiers maximum: {{max}}", + "resource.system.file_descriptors.max": "Descripteurs de fichiers maximum : {{max}}", "resource.system.file_descriptors.only_unix": "Disponible uniquement pour les systèmes basés sur UNIX", "resource.memory.heap.label": "Utilisation de la mémoire du tas", "resource.memory.heap.tooltip": "Montre la mémoire du tas utilisée par GraphDB. La mémoire du tas est la mémoire principale allouée pour faire fonctionner la base de données et elle est également utilisée pour toutes les opérations gourmandes en mémoire lorsque cela est nécessaire. L'approche de la taille maximale du tas peut ralentir GraphDB", @@ -1043,9 +1045,9 @@ "resource.storage.work": "Travail", "resource.storage.data": "Données", "resource.storage.logs": "Bûches", - "resource.storage.subtitle.data": "Données: ", - "resource.storage.subtitle.work": "Travail: ", - "resource.storage.subtitle.logs": "Bûches: ", + "resource.storage.subtitle.data": "Données : ", + "resource.storage.subtitle.work": "Travail : ", + "resource.storage.subtitle.logs": "Bûches : ", "resource.epool.label": "Pool d'entités", "resource.epool.tooltip": "Montre le nombre de lectures et d'écritures du pool d'entités de GraphDB pour le référentiel actuel. Cette métrique peut être utilisée pour diagnostiquer un pool d'entités petit ou surdimensionné", "resource.epool.reads": "Lire", @@ -1054,8 +1056,8 @@ "resource.queries.label": "Requêtes", "resource.queries.tooltip": "Indique le nombre de requêtes ou de mises à jour actives dans le référentiel actuel. Le nombre augmente avec chaque requête ou mise à jour en cours et diminue lorsque la requête ou la mise à jour est terminée. En outre, le graphique indique le nombre total de requêtes lentes et sous-optimales depuis l'initialisation du référentiel. Un grand nombre de requêtes lentes peut indiquer une insuffisance de ressources système ou simplement des requêtes qui ont besoin de temps pour s'exécuter. Les requêtes sous-optimales sont les requêtes qui ont été évaluées en utilisant une stratégie de repli RDF4J et qui ne devraient normalement pas se produire", "resource.queries.running": "Requêtes en cours", - "resource.queries.slow": "Requêtes lentes: ", - "resource.queries.suboptimal": "Requêtes sous-optimales: ", + "resource.queries.slow": "Requêtes lentes : ", + "resource.queries.suboptimal": "Requêtes sous-optimales : ", "resource.connections.label": "Transactions et Connexions", "resource.connections.tooltip": "Indique le nombre de transactions actives et de connexions au référentiel ouvertes. Le nombre de transactions et de connexions varie en fonction de la charge. S'il n'y a pas d'utilisation perçue mais que les chiffres restent supérieurs à zéro, cela peut indiquer un problème avec un client qui ne se débarrasse pas correctement d'une transaction", "resource.connections.active": "Transactions actives", @@ -1070,9 +1072,9 @@ "resources.cluster_health.out_sync": "Désynchronisation", "resources.cluster_health.syncing": "Synchronisation", "resources.cluster_health.disconnected": "Déconnecté", - "resource.cluster_health.leader_elections": "Élections des dirigeants: ", - "resource.cluster_health.recoveries": "Recouvrements: ", - "resource.cluster_health.failed_transactions": "Transactions échouées: ", + "resource.cluster_health.leader_elections": "Élections des dirigeants : ", + "resource.cluster_health.recoveries": "Recouvrements : ", + "resource.cluster_health.failed_transactions": "Transactions échouées : ", "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", @@ -1227,7 +1229,7 @@ "query.editor.abort.requested": "L'arrêt a été demandé", "query.editor.abort.update": "Annuler la mise à jour", "query.editor.abort.query": "Abandon de la requête", - "query.editor.autocomplete.hint": "Indice: \"abC\" correspond à \"abC*\", \"ab c*\" et \"ab-c*\".", + "query.editor.autocomplete.hint": "Indice : \"abC\" correspond à \"abC*\", \"ab c*\" et \"ab-c*\".", "query.editor.progress.msg": "{{progressMessage}}... {{timeHuman}}", "query.editor.extra.msg": "\n{{extraMessage}}", "query.editor.warning.msg": "Explain ne fonctionne qu'avec les requêtes SELECT, CONSTRUCT ou DESCRIBE.", @@ -1253,8 +1255,8 @@ "yasr.statements.no.change.msg": "Le nombre de déclarations n'a pas changé.", "yasr.stale.result.msg": "Résultat possiblement périmé (obtenu il y a {{secondsAgo}}).", "query.editor.query.syntax.error": "La requête contient une erreur de syntaxe. Consultez la ligne concernée pour plus d'informations.", - "query.editor.missing.saved.query.data.error": "Impossible de récupérer des données pour la requête sauvegardée: {{savedQueryName}}; {{error}}", - "query.editor.repo.size.error": "Impossible de récupérer la taille du dépôt pour: {{repo}}; {{error}}", + "query.editor.missing.saved.query.data.error": "Impossible de récupérer des données pour la requête sauvegardée : {{savedQueryName}}; {{error}}", + "query.editor.repo.size.error": "Impossible de récupérer la taille du dépôt pour : {{repo}}; {{error}}", "query.editor.inactive.plugin.warning.msg": "Aucun support pour {{connectorName}}, les connecteurs {{connectorName}} ne sont pas pris en charge car le plugin {{pluginName}} n'est pas actif.", "query.editor.repairing.connector": "Réparer le connecteur {{name}}", "query.editor.repaired.connector": "Réparé le connecteur {{name}}.", @@ -1277,7 +1279,7 @@ "disabled.status": "désactivé", "openid.auth.unknown.flow": "Flux d'authentification inconnu : {{authFlow}}", "openid.auth.invalid.pkce.state": "État pkce_invalide", - "openid.auth.not.jwt.token": "n'est pas un jeton JWT: {{token}}", + "openid.auth.not.jwt.token": "n'est pas un jeton JWT : {{token}}", "openid.auth.cannot.retrieve.token.msg": "Impossible de récupérer le jeton après la connexion; {{error}}", "openid.auth.cannot.refresh.token.msg": "Impossible de rafraîchir le jeton OpenID; {{error}}", "repositories.service.error.loading.location": "Erreur de chargement de l'emplacement", @@ -1403,7 +1405,7 @@ "remove.selected": "Supprimer les éléments sélectionnés de la liste", "remove.btn": "Supprimer", "import.btn": "Importer", - "remove.confirm.msg": "Êtes-vous sûr de vouloir supprimer les fichiers sélectionnés: {{name}}", + "remove.confirm.msg": "Êtes-vous sûr de vouloir supprimer les fichiers sélectionnés : {{name}}", "mode.not.supported.constraint": "Ce mode n'est pas pris en charge lors de l'importation de plusieurs éléments.", "enable.replace.option": "Activez cette option pour remplacer les données d'un ou plusieurs graphes par les données importées.", "context.link": "Contexte JSON-LD", @@ -1427,7 +1429,7 @@ "user_data": { "duplicates_confirmation": { "title": "Confirmer l'écrasement des fichiers", - "message": "Les fichiers suivants sont déjà téléchargés:
{{duplicatedFiles}}
Voulez-vous les écraser", + "message": "Les fichiers suivants sont déjà téléchargés :
{{duplicatedFiles}}
Voulez-vous les écraser", "buttons": { "keep_both": "Garde les deux", "overwrite": "Écraser" @@ -1589,7 +1591,7 @@ "namespace.warning.delete.selected": "Êtes-vous sûr de vouloir supprimer le ou les espaces de noms sélectionnés?", "namespace.prefix.deleted.successfully": "Espace de noms avec préfixe {{prefix}} a été supprimé avec succès.", "namespace.selected.namespaces.deleted.successfully": "Les espaces de noms sélectionnés ont été supprimés avec succès.", - "namespace.invalid.prefix": "Préfixe invalide: {{prefix}}", + "namespace.invalid.prefix": "Préfixe invalide : {{prefix}}", "namespace.warning.provide.namespace": "S'il vous plaît fournir un espace de noms.", "jdbc.not.get.sql.msg": "Impossible de récupérer les configurations des tables SQL", "jdbc.delete.sql.table.warning.msg": "Êtes-vous sûr de vouloir supprimer la configuration de la table SQL '{{name}}'?", @@ -1601,8 +1603,8 @@ "jdbc.not.saved.configuration": "Impossible d'enregistrer la configuration de table SQL", "jdbc.configuration.updated": "Configuration de table SQL mise à jour", "jdbc.suggest.sql.type": "Suggérer type SQL", - "jdbc.same.suggested.sql.type": "Le type SQL est le même après avoir suggéré: {{type}} ", - "jdbc.suggested.sql.type": "Type SQL défini sur: {{type}} ", + "jdbc.same.suggested.sql.type": "Le type SQL est le même après avoir suggéré : {{type}} ", + "jdbc.suggested.sql.type": "Type SQL défini sur : {{type}} ", "jdbc.not.suggest.column.type": "Impossible de suggérer le type de colonne", "jdbc.not.suggest.column.types": "Impossible de suggérer des types de colonne", "jdbc.warning.column.type.msg": "Êtes-vous sûr de vouloir obtenir des suggestions pour toutes les colonnes? Cette action remplacera tous les mappages de type de colonne!", @@ -1743,10 +1745,10 @@ "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.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.", @@ -1789,7 +1791,7 @@ "invalid.repo.name.error": "Le nom du dépôt ne peut contenir que des lettres (a-z, A-Z), des chiffres (0-9), \"-\" et \"_\".", "upload.custom.ruleset.file": "Téléchargez un fichier de jeu de règles personnalisé.", "custom.ruleset": "Jeu de règles personnalisé...", - "repos.from": "Dépôts de:", + "repos.from": "Dépôts de :", "repos.degraded.reason.extra.msg": "Certaines opérations peuvent ne pas être effectuées.", "repos.edit.common.settings": "Modifier les paramètres communs de ces dépôts", "repos.view.update.licenses": "Afficher ou mettre à jour la licence pour ces dépôts", @@ -1873,7 +1875,7 @@ "why.send.statistics": "Pourquoi devriez-vous nous envoyer vos statistiques?", "why.send.statistics.explanation": "Notre objectif est de fournir de meilleurs produits qui répondent aux besoins de nos utilisateurs et de nos clients. Les statistiques anonymes nous aident à mieux comprendre ces besoins et à concentrer nos efforts.", "what.statistics.include": "Que comprennent les statistiques?", - "for.each.repo.header": "Pour chaque dépôt, nous rassemblons:", + "for.each.repo.header": "Pour chaque dépôt, nous rassemblons :", "absolute.values": "Valeurs absolues", "gdb.edition.and.version": "GraphDB édition et version", "number.explicit.implicit.triples": "Nombre de triples explicites et implicites", @@ -1915,13 +1917,13 @@ "edit.local.repo": "Modifier le dépôt local", "gdb.rdf4j.server": "GraphDB / RDF4J serveur", "generic.sparql.endpoint": "Point de terminaison SPARQL générique", - "server.url": "URL du serveur *:", - "repo.id": "ID de dépôt *:", + "server.url": "URL du serveur * :", + "repo.id": "ID de dépôt * :", "endpoint.url": "URL du point de terminaison* :", "supports.ask.queries": "Supporte les requêtes ASK", "authentication.credentials": "Références d'authentification", - "username": "Nom d'utilisateur:", - "pass": "Mot de passe:", + "username": "Nom d'utilisateur :", + "pass": "Mot de passe :", "respect.repo.access.rights": "Respecter les droits d'accès du dépôt.", "no.access.to.repo.users.warning": "Les utilisateurs qui n'ont pas de droits sur ce dépôt verront une vue fédérée qui n'inclut pas les résultats du dépôt.", "ignore.repo.access.rights": "Ignorer les droits d'accès du dépôt", @@ -2037,15 +2039,15 @@ "select.repo.config.tooltip": "Cliquez pour sélectionner un fichier de configuration à partir duquel créer un nouveau dépôt.", "upload.ttl.file.btn": "Cliquez ici pour télécharger un fichier .ttl", "no.file.selected.error": "Aucun fichier sélectionné", - "selected.file.msg": "Sélectionné: {{name}}", - "type.label": "Type:", - "access.label": "Accéder:", + "selected.file.msg": "Sélectionné : {{name}}", + "type.label": "Type :", + "access.label": "Accéder :", "read.write.label": "Lecture/écriture", "read.only.label": "En lecture seule", - "total.statements.label": "Total des déclarations:", - "explicit.label": "Explicite:", - "inferred.label": "Déduit:", - "expansion.ratio.label": "Taux d'expansion (total/explicite):", + "total.statements.label": "Total des déclarations :", + "explicit.label": "Explicite :", + "inferred.label": "Déduit :", + "expansion.ratio.label": "Taux d'expansion (total/explicite) :", "size.info.not.available": "Info de taille non disponible.", "main.gdb.description": "Une application pour la recherche, l'exploration et la gestion des dépôts sémantiques GraphDB.", "main.info.title.welcome.page": "Bienvenue sur GraphDB", @@ -2088,7 +2090,7 @@ "delete.sparql.template.tooltip": "Supprimer le modèle SPARQL", "save.sparql.template.tooltip": "Sauvegarder le modèle SPARQL", "cancel.sparql.template.creation.tooltip": "Annuler la création de modèle SPARQL", - "not.usable.active.repo.error": "Le dépôt actuellement sélectionné ne peut pas être utilisé pour les requêtes en raison d'une erreur:", + "not.usable.active.repo.error": "Le dépôt actuellement sélectionné ne peut pas être utilisé pour les requêtes en raison d'une erreur :", "existing.indexes": "Indices existants", "select.existing.similarity.index": "Sélectionnez l'un de vos indices existants à la recherche de", "no.indexes": "Aucun index", @@ -2113,8 +2115,8 @@ "search.in.index": "Rechercher dans", "term": "Terme", "document": "Document", - "similarity.search.type": "Type de recherche:", - "similarity.result.type": "Type de résultat:", + "similarity.search.type": "Type de recherche :", + "similarity.result.type": "Type de résultat :", "similar.subject.label": "Sujet similaire", "object.label": "Objet", "analogical.label": "Analogique", @@ -2186,7 +2188,7 @@ "add.namespace.label": "Ajout d'espaces de noms", "namespace.label": "Espace de noms", "all.label": "Tous", - "namespaces.per.page.label": "Espaces de noms par page:", + "namespaces.per.page.label": "Espaces de noms par page :", "search.namespaces.label": "Rechercher des espaces de noms", "delete.selected": "Supprimer sélectionnée", "iri.label": "IRI", @@ -2276,8 +2278,8 @@ "error": "erreur", "import.rdf.data.label": "Importer des données RDF", "export.rdf.data": "Exporter des données RDF", - "export.settings.json-ld": "Paramètres d'exportation: JSON-LD", - "export.settings.ndjson-ld": "Paramètres d'exportation: NDJSON-LD", + "export.settings.json-ld": "Paramètres d'exportation : JSON-LD", + "export.settings.ndjson-ld": "Paramètres d'exportation : NDJSON-LD", "export": "Exportation", "json-ld.form": "Formulaire JSON-LD", "json-ld.form.info": "Spécifie la forme du document JSON-LD", @@ -2303,7 +2305,7 @@ "visual.graph.click.configure.view": "Cliquez pour configurer la vue", "visual.search.iri": "Recherche d'un IRI pour le voir.", "visual.graph.advanced.option": "Ceci est une configuration avancée définie par l'utilisateur.", - "hint": "Un conseil:", + "hint": "Un conseil :", "visual.easy.graph": "Graphique facile", "visual.easy.graph.info": "Rechercher un IRI pour le visualiser et configurer la visualisation via l'interface utilisateur sans utiliser SPARQL", "visual.create.graph.config": "Créer un graphique config", @@ -2319,7 +2321,7 @@ "visual.saved.graphs": "Graphiques sauvegardés", "visual.no.saved.graphs": "Aucun instantané de graphique visuel enregistré", "visual.get.graph.url": "Obtenez URL au graphique", - "visual.advanced": "Avancée:", + "visual.advanced": "Avancée :", "visual.rename.graph": "Renommer graphique", "visual.delete.graph": "Supprimer le graphique", "visual.collapse.sidepanel": "Réduire le panneau latéral", @@ -2363,7 +2365,7 @@ "or": "ou", "of": "de", "export.data.import.page": "la page d'importation de données", - "export.graphs.per.page": "Graphes par page:", + "export.graphs.per.page": "Graphes par page :", "search.graphs.label": "Rechercher des graphiques", "export.repository.label": "Dépôt d'exportation", "removes.data.from.repo.label": "Supprime toutes les données du dépôt actuel.", diff --git a/src/js/angular/ttyg/templates/chat-item-detail.html b/src/js/angular/ttyg/templates/chat-item-detail.html index c624fed59..29c211713 100644 --- a/src/js/angular/ttyg/templates/chat-item-detail.html +++ b/src/js/angular/ttyg/templates/chat-item-detail.html @@ -53,7 +53,7 @@
- : + {{ 'ttyg.chat_panel.query_colon' | translate }}
diff --git a/src/js/angular/ttyg/templates/chatInfo.html b/src/js/angular/ttyg/templates/chatInfo.html index 928a077a6..904b4b088 100644 --- a/src/js/angular/ttyg/templates/chatInfo.html +++ b/src/js/angular/ttyg/templates/chatInfo.html @@ -1,11 +1,11 @@
{{'ttyg.help.what.title' | translate}}
-

- {{'ttyg.help.what.content' | translate}} +

{{'ttyg.help.how.title' | translate}}
-

- {{'ttyg.help.how.content' | translate}} +

+

+

diff --git a/src/js/angular/ttyg/templates/no-agents-view.html b/src/js/angular/ttyg/templates/no-agents-view.html index beaa10baf..0e15405a3 100644 --- a/src/js/angular/ttyg/templates/no-agents-view.html +++ b/src/js/angular/ttyg/templates/no-agents-view.html @@ -2,19 +2,8 @@
-
{{ 'ttyg.agent.messages.help_1' | translate }}
-
{{ 'ttyg.agent.messages.help_2' | translate }}
-
-
- {{ 'ttyg.agent.messages.token_prop_warn1' | translate }} - graphdb.gpt.token - - {{ 'ttyg.agent.messages.token_prop_warn2' | translate }} - conf/graphdb.properties - {{ 'ttyg.agent.messages.token_prop_warn3' | translate }} -
- {{ 'ttyg.agent.messages.token_prop_warn4' | translate }} -
+
+
+ +
+
+
diff --git a/test-cypress/fixtures/locale-en.json b/test-cypress/fixtures/locale-en.json index eef05a7f3..79729b7eb 100644 --- a/test-cypress/fixtures/locale-en.json +++ b/test-cypress/fixtures/locale-en.json @@ -225,7 +225,7 @@ } }, "ttyg": { - "helpInfo": "Talk to Your Graph is chat bot based on OpenAI's GPT-4 model that can answer questions about data stored in GraphDB, leveraging both your data and the general knowledge of the GPT-4 model. The bot works in connection with the ChatGPT Retrieval connector.", + "helpInfo": "The Talk to Your Graph view lets you interact with your database through a conversational interface. You can ask natural language questions about the data and receive answers generated through the combined power of GraphDB and OpenAI. It supports multiple agent configurations and persistent chats for ongoing, contextual conversations.", "loading": "Loading...", "help": { "btn": { @@ -344,6 +344,7 @@ "retrieval_search": "ChatGPT Retrieval", "iri_discovery": "FTS for IRI discovery" }, + "query_colon": ":", "query_desc": { "sparql_query":"Direct query", "fts_search": "Full-text search via SPARQL", @@ -647,8 +648,9 @@ }, "messages": { "no_agents": "No agents found for the selected filter.", - "help_1": "Talk to your data in natural language. All you need to do is create and instruct your own AI Agent to assist you.", - "help_2": "The Agent is an AI-powered conversational agent designed to help with a wide range of tasks, from answering questions and providing information to assisting with creative and technical projects. It leverages advanced natural language processing to understand and respond to user inputs in a human-like manner, making interactions intuitive and efficient.", + "help_1": "{{'ttyg.helpInfo'|translate|trustAsHtml}}", + "help_2": "{{'ttyg.help.how.content2'|translate|trustAsHtml}}", + "help_config": "To use Talk to Your Graph, GraphDB must first be configured to work with OpenAI. Please ensure that the necessary API keys and settings are in place before starting. For detailed setup instructions, refer to the documentation or contact your administrator.", "token_prop_warn1": "To enable this feature, set the config property", "token_prop_warn2": "to your GPT token in", "token_prop_warn3": "file.", @@ -661,7 +663,7 @@ } }, "help.what.title": "What is this?", - "help.what.content": "Talk to Your Graph is chat bot based on OpenAI's GPT-4 model that can answer questions about data stored in GraphDB, leveraging both your data and the general knowledge of the GPT-4 model.", + "help.what.content": "{{'ttyg.helpInfo'|translate|trustAsHtml}}", "help.how.title": "How does it work?", "help.how.content": "The bot uses the ChatGPT Retrieval connector to fetch information it does not know about. As such, you must first create a suitable connector. See also the settings for fine-tuning the integration with the Retrieval connector." },