diff --git a/services/web/app/src/Features/Project/ProjectController.mjs b/services/web/app/src/Features/Project/ProjectController.mjs index 5626ca5833..d45fa8f1e4 100644 --- a/services/web/app/src/Features/Project/ProjectController.mjs +++ b/services/web/app/src/Features/Project/ProjectController.mjs @@ -456,6 +456,9 @@ const _ProjectController = { 'compile-timeout-target-plans', 'writefull-keywords-generator', 'writefull-figure-generator', + 'wf-citations-checker', + 'wf-citations-checker-dimensions', + 'wf-citations-checker-on-selection', 'writefull-asymetric-queue-size-per-model', 'pdf-dark-mode', 'editor-redesign-opt-out', diff --git a/services/web/frontend/js/i18n-resources/writefull.ts b/services/web/frontend/js/i18n-resources/writefull.ts index e16e4ecfc1..703d719a7a 100644 --- a/services/web/frontend/js/i18n-resources/writefull.ts +++ b/services/web/frontend/js/i18n-resources/writefull.ts @@ -223,6 +223,9 @@ const en = { 'toolbar.next-suggestion': 'Next suggestion', 'toolbar.quota-exceeded': 'Quota is exceeded', 'toolbar.translate': 'Translate', + 'toolbar.citations-checker': 'Citations Checker', + 'toolbar.citations-checker.selection': + 'Select at least 10 words to use this widget', 'create-modal.title': 'Generate __name__', 'create-modal.unavailable.title': 'Writefull is unavailable', 'create-modal.unavailable.content': @@ -373,6 +376,67 @@ const en = { 'welcome.reset-password': 'Reset password', 'welcome.enable-writefull': 'Enable Writefull for language and LaTeX support', + 'citations-checker.title': 'Citations Checker', + 'citations-checker.searching-cites': + 'Checking your document for potential passages to include citations', + 'citations-checker.no-results': 'No potential citations found', + 'citations-checker.search-publications': 'View sources', + 'citations-checker.publications.search-placeholder': + 'Search in publications list', + 'citations-checker.dismiss': 'Dismiss', + 'citations-checker.searching-publications': + 'Identifying potential sources to use', + 'citations-checker.back': 'Back', + 'citations-checker.publications.title': + "We've identified the following sources for you to review.", + 'citations-checker.publications.no-results': 'No sources found', + 'citations-checker.publications.no-title': 'No title', + 'citations-checker.publications.no-authors': 'No authors', + 'citations-checker.publications.external-search': 'Search for a DOI', + 'citations-checker.publications.view': 'View', + 'citations-checker.publications.insert': 'Insert', + 'citations-checker.publications.copy': 'Copy citation', + 'citations-checker.publications.copied': 'Copied to clipboard', + 'citations-reviewer.chat.title': 'Citations reviewer', + 'citations-reviewer.chat.description': + 'Here are statements in your article that may benefit from a citation. View suggestions to see relevant papers.', + 'citations-reviewer.chat.document-updated': + 'Your document has been updated. Refresh citations to get new suggestions.', + 'citations-reviewer.chat.fetching-citations': + 'Reviewing your document to see if any passage of text might need a citation', + 'citations-reviewer.chat.fetching-publications': 'Fetching publications...', + 'citations-reviewer.chat.no-citations': 'No citations found', + 'citations-reviewer.chat.publications.title': 'Suggested papers', + 'citations-reviewer.chat.publications.description': + 'The following papers may support the claim you’ve made. AI can make mistakes. Always check papers yourself to ensure relevance.', + 'citations-reviewer.chat.publications.alternatively': 'Alternatively,', + 'citations-reviewer.chat.publications.custom-search': + 'search for papers yourself.', + 'citations-reviewer.chat.publications.from-document': 'From your document:', + 'citations-reviewer.chat.publications.passage': 'Passage to review', + 'citations-reviewer.chat.actions.refresh': 'Refresh citations', + 'citations-reviewer.chat.actions.back': 'Back', + 'citations-reviewer.chat.actions.read-abstract': '> Read abstract', + 'citations-reviewer.chat.actions.view-suggestions': 'View suggestions', + 'citations-reviewer.chat.actions.ignore': 'Ignore', + 'citations-reviewer.chat.actions.view-paper': 'View paper', + 'citations-reviewer.chat.actions.insert-citation': 'Insert citation', + 'citations-reviewer.chat.confirmation.title': 'Insert citation?', + 'citations-reviewer.chat.confirmation.body': + 'Always ensure you’ve read the paper and confirmed any suggestions made by AI before inserting a citation.', + 'citations-reviewer.chat.confirmation.insert': 'Insert citation', + 'citations-reviewer.chat.confirmation.cancel': 'Cancel', + 'citations-reviewer.chat.custom-search.title': 'Custom search', + 'citations-reviewer.chat.custom-search.form.title': 'Title', + 'citations-reviewer.chat.custom-search.form.title-placeholder': + 'Enter paper title', + 'citations-reviewer.chat.custom-search.form.authors': 'Author name(s)', + 'citations-reviewer.chat.custom-search.form.authors-placeholder': + 'Enter author name(s)', + 'citations-reviewer.chat.custom-search.form.keywords': 'Keywords', + 'citations-reviewer.chat.custom-search.form.keywords-placeholder': + 'Enter keywords', + 'citations-reviewer.chat.custom-search.form.search': 'Search', }, } as const @@ -615,6 +679,9 @@ const es = { 'toolbar.next-suggestion': 'Siguiente sugerencia', 'toolbar.quota-exceeded': 'Cuota agotada', 'toolbar.translate': 'Traducir', + 'toolbar.citations-checker': 'Citations Checker', + 'toolbar.citations-checker.selection': + 'Selecciona al menos 10 palabras para usar este widget', 'create-modal.title': 'Generador de __name__', 'create-modal.unavailable.title': 'Writefull no está disponible', 'create-modal.unavailable.content': @@ -767,6 +834,68 @@ const es = { 'welcome.reset-password': 'Restablecer contraseña', 'welcome.enable-writefull': 'Habilitar Writefull para soporte de lenguaje y LaTeX', + 'citations-checker.title': 'Verificador de citas', + 'citations-checker.searching-cites': + 'Comprobando tu documento para encontrar pasajes que puedan requerir citas', + 'citations-checker.no-results': 'No se encontraron citas potenciales', + 'citations-checker.search-publications': 'Ver fuentes', + 'citations-checker.publications.search-placeholder': + 'Buscar en la lista de fuentes', + 'citations-checker.dismiss': 'Descartar', + 'citations-checker.searching-publications': + 'Identificando posibles fuentes para usar', + 'citations-checker.back': 'Volver', + 'citations-checker.publications.title': + 'Hemos identificado las siguientes fuentes para que las revises.', + 'citations-checker.publications.no-results': 'No se encontraron fuentes', + 'citations-checker.publications.no-title': 'Sin título', + 'citations-checker.publications.no-authors': 'Sin autores', + 'citations-checker.publications.external-search': 'Buscar por DOI', + 'citations-checker.publications.view': 'Ver', + 'citations-checker.publications.insert': 'Insertar', + 'citations-checker.publications.copy': 'Copiar cita', + 'citations-checker.publications.copied': 'Copiado al portapapeles', + 'citations-reviewer.chat.title': 'Revisor de citas', + 'citations-reviewer.chat.description': + 'Aquí tienes afirmaciones en tu artículo que pueden beneficiarse de una cita. Ver sugerencias para consultar los artículos relevantes.', + 'citations-reviewer.chat.document-updated': + 'Documento actualizado. Haz clic en "Actualizar citas" para revisar las citas nuevamente.', + 'citations-reviewer.chat.fetching-citations': + 'Revisando tu documento para ver si algún pasaje podría necesitar una cita', + 'citations-reviewer.chat.fetching-publications': + 'Obteniendo publicaciones...', + 'citations-reviewer.chat.no-citations': 'No se encontraron citas', + 'citations-reviewer.chat.publications.title': 'Artículos sugeridos', + 'citations-reviewer.chat.publications.description': + 'Los siguientes artículos pueden respaldar la afirmación que has hecho. La IA puede cometer errores. Revisa siempre los artículos por tu cuenta para asegurar su relevancia.', + 'citations-reviewer.chat.publications.alternatively': 'Alternativamente,', + 'citations-reviewer.chat.publications.custom-search': + 'busca artículos por tu cuenta.', + 'citations-reviewer.chat.publications.from-document': 'De tu documento:', + 'citations-reviewer.chat.publications.passage': 'Pasaje a revisar', + 'citations-reviewer.chat.actions.refresh': 'Actualizar citas', + 'citations-reviewer.chat.actions.back': 'Volver', + 'citations-reviewer.chat.actions.read-abstract': '> Leer resumen', + 'citations-reviewer.chat.actions.view-suggestions': 'Ver sugerencias', + 'citations-reviewer.chat.actions.ignore': 'Ignorar', + 'citations-reviewer.chat.actions.view-paper': 'Ver artículo', + 'citations-reviewer.chat.actions.insert-citation': 'Insertar cita', + 'citations-reviewer.chat.confirmation.title': '¿Insertar cita?', + 'citations-reviewer.chat.confirmation.body': + 'Asegúrate siempre de haber leído el artículo y confirmado cualquier sugerencia realizada por la IA antes de insertar una cita.', + 'citations-reviewer.chat.confirmation.insert': 'Insertar cita', + 'citations-reviewer.chat.confirmation.cancel': 'Cancelar', + 'citations-reviewer.chat.custom-search.title': 'Búsqueda personalizada', + 'citations-reviewer.chat.custom-search.form.title': 'Título', + 'citations-reviewer.chat.custom-search.form.title-placeholder': + 'Introduce el título del artículo', + 'citations-reviewer.chat.custom-search.form.authors': 'Nombre(s) del autor', + 'citations-reviewer.chat.custom-search.form.authors-placeholder': + 'Introduce el nombre del autor o autores', + 'citations-reviewer.chat.custom-search.form.keywords': 'Palabras clave', + 'citations-reviewer.chat.custom-search.form.keywords-placeholder': + 'Introduce palabras clave', + 'citations-reviewer.chat.custom-search.form.search': 'Buscar', }, }