i18n: validate and fix 212 translation errors across FR/DE/IT/ES
Build and Deploy Verso / deploy (push) Successful in 13m46s
Build and Deploy Verso / deploy (push) Successful in 13m46s
Automated validation pass found and corrected: - Brand names translated literally (Overleaf→"au verso"/dorso/retro/umseitig, Verso→"verso", LaTeX→"látex", Quarto→"en cuarto", TeXGPT→"TestoGPT") - React-Trans <N> tags eaten by Google Translate (5 strings) - FR grammar: "va sera écrasé" → "sera écrasé" - FR preposition: "en <b>__email__</b>" → "sur <b>__email__</b>" (×2) - FR title: "Accepter l'erreur de modification" → "Erreur d'acceptation des modifications" - FR redundancy: "la version Rolling TeX Live" → "le build Rolling TeX Live" - ES: "mesa" (furniture) → "tabla" (document table) in 3 strings Tooling committed: translate_missing.py, fix_translations.py, validate_translations.py — reusable for future locale additions. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -72,7 +72,7 @@
|
||||
"account_not_linked_to_dropbox": "Dein Konto ist nicht mit Dropbox verknüpft",
|
||||
"account_settings": "Kontoeinstellungen",
|
||||
"account_with_email_exists": "Anscheinend existiert bereits ein <b>__appName__</b>-Konto mit der E-Mail-Adresse <b>__email__</b>.",
|
||||
"acct_linked_to_institution_acct_2": "Du kannst dich jetzt mit dem Konto deiner Institution <0>__institutionName__</0> bei Overleaf anmelden.",
|
||||
"acct_linked_to_institution_acct_2": "You can <0>log in</0> to Overleaf through your <0>__institutionName__</0> institutional login.",
|
||||
"actions": "Aktionen",
|
||||
"activate": "Aktivieren",
|
||||
"activate_account": "Aktiviere dein Konto",
|
||||
@@ -104,7 +104,7 @@
|
||||
"add_error_assist_annual_to_your_projects": "Füge die Jährliche Fehlerhilfe <sparkle/> zu deinen Projekten hinzu und erhalte unbegrenzte KI-Unterstützung, um LaTeX-Fehler schneller zu beheben.",
|
||||
"add_error_assist_to_your_projects": "Füge die Fehlerhilfe <sparkle/> zu deinen Projekten hinzu und erhalte unbegrenzte KI-Unterstützung, um LaTeX-Fehler schneller zu beheben.",
|
||||
"add_files": "Dateien hinzufügen",
|
||||
"add_manager_user_not_found": "Diese E-Mail-Adresse ist nicht bei Overleaf registriert. Bitte die Person, die du als Verwalter hinzufügen möchtest, ein Overleaf-Konto zu erstellen, falls sie noch keines hat. Verwende beim Hinzufügen eines Verwalters eine der E-Mail-Adressen, die mit dessen Konto verknüpft sind.",
|
||||
"add_manager_user_not_found": "Diese E-Mail-Adresse ist nicht in Verso registriert. Bitten Sie die Person, die Sie als Manager hinzufügen möchten, um die Erstellung eines Verso-Kontos, sofern dies noch nicht geschehen ist. Wenn Sie einen Manager hinzufügen, verwenden Sie bitte eine der E-Mail-Adressen, die mit seinem Konto verknüpft sind.",
|
||||
"add_more_collaborators": "Weitere Mitarbeiter hinzufügen",
|
||||
"add_more_licenses_to_my_plan": "Weitere Lizenzen zu meinem Abonnement hinzufügen",
|
||||
"add_more_manager_emails": "Weitere Verwalter-E-Mail-Adressen hinzufügen",
|
||||
@@ -147,7 +147,7 @@
|
||||
"aggregate_changed": "Geändert",
|
||||
"aggregate_to": "zu",
|
||||
"agree": "Zustimmen",
|
||||
"agree_with_the_terms": "Ich stimme den Nutzungsbedingungen von Overleaf zu",
|
||||
"agree_with_the_terms": "Ich stimme den Verso Bedingungen zu",
|
||||
"ai_allowance": "KI-Zulage",
|
||||
"ai_allowance_basic_explanation": "5 KI-Nutzungen pro Tag für alle verfügbaren KI-Tools.",
|
||||
"ai_allowance_explanation": "Integrierte KI-Tools, die Schreib-, Bearbeitungs- und LaTeX-Workflows unterstützen. Die Nutzung ist durch ein Tageslimit begrenzt, das jeden Tag zurückgesetzt wird. KI-Funktionen können von einzelnen Benutzern deaktiviert oder auf Gruppenebene verwaltet werden. Es gilt eine faire Nutzung.",
|
||||
@@ -793,7 +793,7 @@
|
||||
"email_address": "E-Mail-Adresse",
|
||||
"email_address_is_invalid": "Die E-Mail-Adresse ist ungültig",
|
||||
"email_already_associated_with": "Die E-Mail-Adresse <b>__email1__</b> ist bereits mit dem Konto <b>__email2__</b> <b>__appName__</b> verknüpft.",
|
||||
"email_already_registered": "Diese E-Mail-Adresse ist bereits registriert.",
|
||||
"email_already_registered": "Diese E-Mail-Adresse ist bereits mit einem anderen Verso-Konto verknüpft.",
|
||||
"email_already_registered_secondary": "Diese E-Mail-Adresse ist bereits als sekundäre E-Mail-Adresse registriert",
|
||||
"email_already_registered_sso": "Diese E-Mail-Adresse wurde bereits registriert. Bitte logge dich auf einem anderen Weg in dein Konto ein und verknüpfe dein Konto über deine Kontoeinstellungen mit dem neuen Anbieter.",
|
||||
"email_attribute": "E-Mail-Attribut",
|
||||
@@ -1309,7 +1309,7 @@
|
||||
"institution_acct_successfully_linked_2": "Dein Konto <0>__appName__</0> wurde erfolgreich mit deinem institutionellen Konto <0>__institutionName__</0> verknüpft.",
|
||||
"institution_and_role": "Institution und Rolle",
|
||||
"institution_email_new_to_app": "Deine <b>__institutionName__</b>-E-Mail-Adresse (<b>__email__</b>) ist neu bei __appName__.",
|
||||
"institution_has_overleaf_subscription": "<0>__institutionName__</0> hat ein Overleaf-Abonnement. Klicke auf den Bestätigungslink, der an __emailAddress__ gesendet wurde, um auf <0>Overleaf Commons</0> umzusteigen.",
|
||||
"institution_has_overleaf_subscription": "<0>__institutionName__</0> hat ein Verso Abonnement. Klicken Sie auf den an __emailAddress__ gesendeten Bestätigungslink, um ein Upgrade auf <0>@@1@@ Commons</0> durchzuführen.",
|
||||
"institution_templates": "Institutionsvorlagen",
|
||||
"institutional": "Institutionell",
|
||||
"institutional_login_unknown": "Leider wissen wir nicht, welche Institution diese E-Mail-Adresse ausgegeben hat. Du kannst unsere <a href=\"__link__\">Liste der Institutionen</a> durchsuchen, um deine zu finden, oder du kannst eine der anderen Optionen nutzen.",
|
||||
@@ -1368,7 +1368,7 @@
|
||||
"iso_certification_explanation": "Overleaf ist nach ISO/IEC 27001:2022 zertifiziert.",
|
||||
"issued_on": "Ausgestellt: __date__",
|
||||
"it": "Italienisch",
|
||||
"it_looks_like_that_didnt_work_you_can_try_again_or_get_in_touch": "Es sieht so aus, als hätte das nicht funktioniert. Sie können es erneut versuchen oder sich an unser Support-Team wenden, um weitere Hilfe zu erhalten.",
|
||||
"it_looks_like_that_didnt_work_you_can_try_again_or_get_in_touch": "It looks like that didn’t work. You can try again or <0>get in touch</0> with our Support team for more help.",
|
||||
"it_looks_like_your_account_is_billed_manually_purchasing_additional_license_or_upgrading_subscription": "Anscheinend wird Ihr Konto manuell in Rechnung gestellt. Der Kauf zusätzlicher Lizenzen oder das Upgrade Ihres Abonnements kann nur vom Support-Team durchgeführt werden. Bitte <0>get in touch</0> um Hilfe.",
|
||||
"it_looks_like_your_account_is_billed_manually_upgrading_subscription": "Offenbar wird Ihr Konto manuell in Rechnung gestellt. Ein Upgrade Ihres Abonnements kann nur vom Support-Team durchgeführt werden. Bitte <0>get in touch</0> um Hilfe.",
|
||||
"it_looks_like_your_payment_details_are_missing_please_update_your_billing_information": "Offenbar fehlen Ihre Zahlungsdaten. Für weitere Hilfe wenden Sie sich bitte <0>update your billing information</0> oder <1>get in touch</1> an unser Support-Team.",
|
||||
@@ -1406,7 +1406,7 @@
|
||||
"labels_help_you_to_reference_your_tables": "Mithilfe von Beschriftungen können Sie Ihre Tabellen im gesamten Dokument problemlos referenzieren. Um im Text auf eine Tabelle zu verweisen, verweisen Sie mit dem Befehl <0>\\ref{...}</0> auf die Beschriftung. Dies erleichtert das Nachschlagen von Tabellen, ohne sich die Tabellennummerierung manuell merken zu müssen. <1>Read about labels and cross-references</1>.",
|
||||
"labs": "Labore",
|
||||
"labs_ongoing_experiments": "Overleaf Labs – laufende Experimente",
|
||||
"labs_program_benefits": "__appName__ sucht stetig nach neuen Möglichkeiten, das Arbeiten seiner Nutzer zu erleichtern. Indem Du dem Overleaf-Labs-Programm beitrittst, kannst Du an Experimenten teilnehmen, die innovative Ideen im Bereich des kollaborativen Schreibens und Veröffentlichens umsetzen.",
|
||||
"labs_program_benefits": "By signing up for Overleaf Labs you can get your hands on in-development features and try them out as much as you like. All we ask in return is your honest feedback to help us develop and improve. It’s important to note that features available in this program are still being tested and actively developed. This means they could change, be removed, or become part of a premium plan.",
|
||||
"labs_settings": "Labs-Einstellungen",
|
||||
"language": "Sprache",
|
||||
"language_model": "Sprachmodell",
|
||||
@@ -1795,7 +1795,7 @@
|
||||
"one_collaborator_per_project": "1 Mitarbeiter pro Projekt",
|
||||
"one_free_collab": "Ein kostenloser Mitarbeiter",
|
||||
"one_per_project": "1 pro Projekt",
|
||||
"one_step_away_from_professional_features": "Du bist nur noch einen Schritt davon entfernt, auf <0>Overleaf Professional-Funktionen</0> zuzugreifen!",
|
||||
"one_step_away_from_professional_features": "Sie sind nur noch einen Schritt vom Zugriff auf <0>Verso premium features</0> entfernt!",
|
||||
"ongoing_experiments": "Laufende Experimente",
|
||||
"online_latex_editor": "Online-LaTeX-Editor",
|
||||
"only_add_people_who_dont_yet_have_access": "Fügen Sie nur Personen hinzu, die noch keinen Zugriff haben.",
|
||||
@@ -1850,15 +1850,15 @@
|
||||
"overleaf": "Overleaf",
|
||||
"overleaf_ai": "Overleaf KI",
|
||||
"overleaf_ai_info": "Integrierte KI-Tools, die Schreib-, Bearbeitungs- und LaTeX-Workflows unterstützen. Es gilt eine faire Nutzung.",
|
||||
"overleaf_group_plans": "Umseitige Gruppenpläne",
|
||||
"overleaf_group_plans": "Overleaf Gruppenpläne",
|
||||
"overleaf_history_system": "Overleaf-Historie",
|
||||
"overleaf_individual_plans": "Umseitig individuelle Pläne",
|
||||
"overleaf_individual_plans": "Overleaf individuelle Pläne",
|
||||
"overleaf_is_a_ds_product": "Overleaf ist ein Digital Science-Produkt.",
|
||||
"overleaf_is_easy_to_use": "Overleaf ist einfach zu verwenden.",
|
||||
"overleaf_labs": "Overleaf Labs",
|
||||
"overleaf_learning_center": "Overleaf-Lernzentrum",
|
||||
"overleaf_logo": "Logo auf der Rückseite",
|
||||
"overleaf_multi_license_plans": "Umseitige Mehrlizenzpläne",
|
||||
"overleaf_logo": "Overleaf Logo",
|
||||
"overleaf_multi_license_plans": "Overleaf Mehrlizenzpläne",
|
||||
"overleaf_plans_and_pricing": "Pläne und Preise auf der Rückseite",
|
||||
"overleaf_template_gallery": "umseitige Vorlagengalerie",
|
||||
"overleafs_functionality_meets_my_needs": "Die Funktionalität von Overleaf entspricht meinen Anforderungen.",
|
||||
@@ -2296,7 +2296,7 @@
|
||||
"saml_login_identity_mismatch_error": "Entschuldigung, Sie versuchen, sich bei Overleaf als __email__ anzumelden, aber die von Ihrem Identitätsanbieter zurückgegebene Identität ist nicht die richtige für dieses Overleaf-Konto.",
|
||||
"saml_login_identity_not_found_error": "Leider konnten wir bei diesem Identitätsanbieter kein Overleaf-Konto finden, das für die einmalige Anmeldung eingerichtet ist.",
|
||||
"saml_login_requested_email_not_confirmed_error": "Leider wurde die E-Mail-Adresse, die Sie für die Anmeldung angefordert haben, nicht bestätigt und wir können Ihre SSO-Anmeldeanfrage nicht bearbeiten. Wenn Sie eine andere Anmeldemethode haben, melden Sie sich bitte an und bestätigen Sie dann Ihre E-Mail-Adresse. Bitte <0>contact us</0> wenn Sie Hilfe benötigen.",
|
||||
"saml_metadata": "Umseitige SAML-Metadaten",
|
||||
"saml_metadata": "Overleaf SAML Metadaten",
|
||||
"saml_missing_signature_error": "Leider sind die von Ihrem Identitätsanbieter erhaltenen Informationen nicht signiert (sowohl Antwort- als auch Behauptungssignaturen sind erforderlich). Für weitere Informationen wenden Sie sich bitte an Ihren Administrator.",
|
||||
"saml_missing_user_attribute": "Es gab ein Problem mit Ihrer Single-Sign-On-Authentifizierung. Ihre Organisation hat nicht die erforderlichen Informationen bereitgestellt, um die Authentifizierung abzuschließen. Für weitere Informationen wenden Sie sich bitte an Ihren Administrator.",
|
||||
"saml_request_denied_error": "Leider hat Ihr Identitätsanbieter die Anfrage zur Authentifizierung abgelehnt. Für weitere Informationen wenden Sie sich bitte an Ihren Administrator.",
|
||||
@@ -3095,7 +3095,7 @@
|
||||
"we_do_not_share_personal_information": "Einzelheiten darüber, wie wir mit Ihren personenbezogenen Daten umgehen, finden Sie in unserem <0>Privacy Notice</0>",
|
||||
"we_got_your_request": "Wir haben Ihre Anfrage erhalten",
|
||||
"we_logged_you_in": "Wir haben dich eingeloggt.",
|
||||
"we_may_also_contact_you_from_time_to_time_by_email_with_a_survey": "Wir können dich auch von Zeit zu Zeit per E-Mail kontaktieren für Umfragen oder Nachfragen, ob du an anderen Nutzerbefragungen teilnehmen möchtest",
|
||||
"we_may_also_contact_you_from_time_to_time_by_email_with_a_survey": "<0>We may also contact you</0> from time to time by email with a survey, or to see if you would like to participate in other user research initiatives",
|
||||
"we_sent_code": "Wir haben dir einen Bestätigungscode gesendet",
|
||||
"we_sent_new_code": "Wir haben einen neuen Code gesendet. Falls er nicht ankommt, überprüfe bitte deinen Spam-Ordner und Werbe-Ordner.",
|
||||
"we_were_unable_to_verify_your_domain": "Wir konnten Ihre Domain nicht verifizieren.",
|
||||
@@ -3152,7 +3152,7 @@
|
||||
"x_price_for_first_month": "<0>__price__</0> für deinen ersten Monat",
|
||||
"x_price_for_first_year": "<0>__price__</0> für dein erstes Jahr",
|
||||
"x_price_for_y_months": "<0>__price__</0> für deine ersten __discountMonths__ Monate",
|
||||
"x_price_per_month": "<0>__price__</0> pro Monat",
|
||||
"x_price_per_month": "__price__ per month",
|
||||
"x_price_per_user": "__price__ pro Benutzer",
|
||||
"x_price_per_year": "__price__ pro Jahr",
|
||||
"x_saved_to_your_project": "__fileName__ in Ihrem Projekt gespeichert",
|
||||
@@ -3183,7 +3183,7 @@
|
||||
"you_can_now_search_and_add_references_from_your_rm_library_without_needing_to_import_files": "Sie können jetzt Referenzen aus Ihrer __referenceManager__-Bibliothek suchen und hinzufügen, ohne Dateien importieren zu müssen – geben Sie einfach <code>\\cite{}</code> in Ihre .tex-Datei ein. <a>Erfahren Sie mehr</a>",
|
||||
"you_can_now_sign_in_with_new_password": "Sie können sich nun mit Ihrem neuen Passwort anmelden.",
|
||||
"you_can_only_be_affiliated_with_one_group": "Sie können nur einer Gruppe angehören.",
|
||||
"you_can_opt_in_and_out_of_the_program_at_any_time_on_this_page": "Du kannst dich jederzeit auf dieser Seite für das Beta-Programm an- und abmelden",
|
||||
"you_can_opt_in_and_out_of_the_program_at_any_time_on_this_page": "You can <0>opt in and out</0> of the program at any time on this page",
|
||||
"you_can_select_or_invite_collaborator": "Sie können __count__ Mitarbeiter für Ihren aktuellen Plan auswählen oder einladen. Führen Sie ein Upgrade durch, um weitere Redakteure oder Prüfer hinzuzufügen.",
|
||||
"you_can_select_or_invite_collaborator_plural": "Sie können __count__ Mitarbeiter Ihres aktuellen Plans auswählen oder einladen. Führen Sie ein Upgrade durch, um weitere Redakteure oder Prüfer hinzuzufügen.",
|
||||
"you_can_still_use_your_premium_features": "Sie können Ihre Premium-Funktionen weiterhin nutzen, bis die Pause aktiv wird.",
|
||||
@@ -3202,7 +3202,7 @@
|
||||
"you_have_x_licenses_on_your_subscription": "Sie haben __groupSize__ Lizenzen für Ihr Abonnement.",
|
||||
"you_need_to_configure_your_sso_settings": "Sie müssen Ihre SSO-Einstellungen konfigurieren und testen, bevor Sie SSO aktivieren",
|
||||
"you_unpaused_your_subscription": "Sie haben die Pausierung Ihres Abonnements aufgehoben.",
|
||||
"you_will_be_able_to_contact_us_any_time_to_share_your_feedback": "Du kannst uns jederzeit kontaktieren, um uns dein Feedback mitzuteilen",
|
||||
"you_will_be_able_to_contact_us_any_time_to_share_your_feedback": "<0>You will be able to contact us</0> any time to share your feedback",
|
||||
"you_will_be_able_to_reassign_subscription": "Sie können ihre Abonnementmitgliedschaft einer anderen Person in Ihrer Organisation zuweisen",
|
||||
"youll_get_best_results_in_visual_but_can_be_used_in_source": "Die besten Ergebnisse erzielen Sie, wenn Sie dieses Tool im <0>Visual Editor</0> verwenden, Sie können es jedoch weiterhin zum Einfügen von Tabellen im <1>Code Editor</1> verwenden. Sobald Sie die Anzahl der benötigten Zeilen und Spalten ausgewählt haben, wird die Tabelle in Ihrem Dokument angezeigt und Sie können auf eine Zelle doppelklicken, um Inhalte hinzuzufügen.",
|
||||
"youll_need_to_ask_the_github_repository_owner": "Sie müssen den Besitzer des GitHub-Repositorys (<0>__repoOwnerEmail__</0>) bitten, das Projekt erneut zu verbinden.",
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
"account_not_linked_to_dropbox": "Tu cuenta no está conectada con Dropbox",
|
||||
"account_settings": "Opciones de la cuenta",
|
||||
"account_with_email_exists": "Parece que una cuenta <b>__appName__</b> con el email <b>__email__</b> ya existe.",
|
||||
"acct_linked_to_institution_acct_2": "Puedes <b>unirte</b> a Overleaf a través de tu login institucional de <b>__institutionName__</b>",
|
||||
"acct_linked_to_institution_acct_2": "You can <0>log in</0> to Overleaf through your <0>__institutionName__</0> institutional login.",
|
||||
"actions": "Acciones",
|
||||
"activate": "Activar",
|
||||
"activate_account": "Activar tu cuenta",
|
||||
@@ -109,7 +109,7 @@
|
||||
"add_on": "complemento",
|
||||
"add_ons": "Complementos",
|
||||
"add_ons_for_any_plan": "Complementos para cualquier plan",
|
||||
"add_ons_for_any_plan_subheading": "Compre complementos para cualquier plan al dorso (incluido el plan gratuito) para desbloquear funciones adicionales.",
|
||||
"add_ons_for_any_plan_subheading": "Compre complementos para cualquier plan Overleaf (incluido el plan gratuito) para desbloquear funciones adicionales.",
|
||||
"add_or_remove_project_from_tag": "Añadir o eliminar proyecto de la etiqueta __tagName__",
|
||||
"add_reference": "Agregar referencia",
|
||||
"add_references": "Agregar referencias",
|
||||
@@ -117,7 +117,7 @@
|
||||
"add_to_dictionary": "Añadir al diccionario",
|
||||
"add_to_tag": "Añadir a etiqueta",
|
||||
"add_txt_record_to_dns_with_token": "Para completar el proceso de verificación de dominio necesitas agregar un registro TXT a tu DNS con el siguiente token:",
|
||||
"add_unlimited_ai_to_overleaf": "Agregue IA* ilimitada al dorso",
|
||||
"add_unlimited_ai_to_overleaf": "Añade IA* ilimitada a Overleaf",
|
||||
"add_unlimited_ai_to_your_overleaf_plan": "Agregue IA* ilimitada a su plan Overleaf __planName__",
|
||||
"add_unlimited_ai_to_your_plan": "Añade IA* ilimitada a tu plan __planName__",
|
||||
"add_your_comment_here": "Añade tu comentario aquí",
|
||||
@@ -136,7 +136,7 @@
|
||||
"admin_titlecase": "administrador",
|
||||
"admin_user_created_message": "Usuario administrador creado, <a href=\"__link__\">Inicie sesión aquí</a> para continuar",
|
||||
"administration_and_security": "Administración y seguridad",
|
||||
"advanced_reference_search": "Búsqueda avanzada de referencias",
|
||||
"advanced_reference_search": "Advanced <0>reference search</0>",
|
||||
"advanced_reference_search_explanation": "Encuentre e inserte rápidamente referencias por autor, título, año o revista, utilizando sus propios archivos .bib o administradores de referencias conectados.",
|
||||
"advanced_reference_search_mode": "Búsqueda avanzada de referencias",
|
||||
"advancing_research_with": "Avanzando en la investigación con <0>Overleaf</0>, <1>Papers</1> y más.",
|
||||
@@ -144,7 +144,7 @@
|
||||
"aggregate_changed": "Cambiado",
|
||||
"aggregate_to": "a",
|
||||
"agree": "De acuerdo",
|
||||
"agree_with_the_terms": "Estoy de acuerdo con los términos y condiciones de Overleaf",
|
||||
"agree_with_the_terms": "Estoy de acuerdo con los términos Verso",
|
||||
"ai_allowance": "subsidio de IA",
|
||||
"ai_allowance_basic_explanation": "5 usos de IA por día en las herramientas de IA disponibles.",
|
||||
"ai_allowance_explanation": "Herramientas de IA integradas que admiten flujos de trabajo de escritura, edición y LaTeX. El uso está limitado por un límite diario que se restablece todos los días. Las funciones de IA pueden ser deshabilitadas por usuarios individuales o administradas a nivel de grupo. Se aplica el uso justo.",
|
||||
@@ -294,7 +294,7 @@
|
||||
"binary_history_error": "Vista previa no disponible para este tipo de archivo",
|
||||
"blank_latex_project": "Proyecto LaTeX en blanco",
|
||||
"blank_project": "Proyecto vacío",
|
||||
"blank_quarto_project": "Proyecto en cuarto en blanco",
|
||||
"blank_quarto_project": "Proyecto Quarto en blanco",
|
||||
"blank_typst_project": "Proyecto Typst en blanco",
|
||||
"blocked_filename": "Este nombre de archivo está bloqueado.",
|
||||
"blocked_language_suggestions": "Sugerencias de idiomas bloqueados",
|
||||
@@ -375,7 +375,7 @@
|
||||
"changes_applied": "Cambios aplicados",
|
||||
"changes_to_these_settings_will_be_applied_to_all_new_projects": "Los cambios en esta configuración se aplicarán a todos los proyectos nuevos. Los proyectos existentes no se verán afectados.",
|
||||
"changing_the_position_of_your_figure": "Cambiando la posición de tu figura.",
|
||||
"changing_the_position_of_your_table": "Cambiando la posición de tu mesa",
|
||||
"changing_the_position_of_your_table": "Cambiando la posición de tu tabla",
|
||||
"characters": "Personajes",
|
||||
"chat": "Chat",
|
||||
"chat_error": "No se pudieron cargar los mensajes de chat, inténtalo de nuevo.",
|
||||
@@ -410,7 +410,7 @@
|
||||
"click_here_to_view_sl_in_lng": "Haga click aquí para usar __appName__ en <0>__lngName__</0>",
|
||||
"click_link_to_proceed": "Haga clic en <b>__clickText__</b> a continuación para continuar.",
|
||||
"click_recompile_and_check_your_pdf_to_see_how_its_looking": "Haga clic en Recompilar y verifique su PDF para ver cómo se ve.",
|
||||
"click_to_unpause": "Haga clic para reanudar y reactivar sus funciones premium al dorso.",
|
||||
"click_to_unpause": "Haga clic para reanudar y reactivar sus funciones premium Overleaf.",
|
||||
"clicking_delete_will_remove_sso_config_and_clear_saml_data": "Al hacer clic en <0>Delete</0>, se eliminará la configuración de SSO y se desvincularán todos los usuarios. Solo puedes hacer esto cuando el SSO está deshabilitado en la configuración de tu grupo.",
|
||||
"clone_with_git": "Clonar con Git",
|
||||
"close": "Cerrar",
|
||||
@@ -469,7 +469,7 @@
|
||||
"compile_timeout_explanation": "El tiempo máximo que Verso dedicará a generar su PDF. Los documentos más grandes o más complejos pueden tardar más en compilarse.",
|
||||
"compile_timeout_modal_intro": "Tiempo de compilación 24x en los servidores más rápidos, además...",
|
||||
"compile_timeout_short": "Tiempo límite de compilación",
|
||||
"compile_timeout_short_info_new": "Este es el tiempo que tienes para compilar tu proyecto en el dorso. Es posible que necesite tiempo adicional para proyectos más largos o más complejos.",
|
||||
"compile_timeout_short_info_new": "Este es el tiempo que tienes para compilar tu proyecto el Overleaf. Es posible que necesite tiempo adicional para proyectos más largos o más complejos.",
|
||||
"compiler": "Compilador",
|
||||
"compiling": "Compilando",
|
||||
"complete": "Completar",
|
||||
@@ -731,7 +731,7 @@
|
||||
"dropbox_sync_now_running": "Se inició una sincronización manual para este proyecto en segundo plano. Espere unos minutos para que se procese.",
|
||||
"dropbox_sync_out": "Envío de actualizaciones a Dropbox",
|
||||
"dropbox_sync_troubleshoot": "¿Los cambios no aparecen en Dropbox? Espere unos minutos. Si los cambios aún no aparecen, puede <0>sync this project now</0>.",
|
||||
"dropbox_synced": "Al dorso y Dropbox han procesado todas las actualizaciones. Tenga en cuenta que es posible que su Dropbox local aún se esté sincronizando",
|
||||
"dropbox_synced": "Overleaf y Dropbox han procesado todas las actualizaciones. Tenga en cuenta que es posible que su Dropbox local aún se esté sincronizando",
|
||||
"dropbox_unlinked_because_access_denied": "Su cuenta de Dropbox se ha desvinculado porque el servicio de Dropbox rechazó sus credenciales almacenadas. Vuelva a vincular su cuenta de Dropbox para continuar usándola con Overleaf.",
|
||||
"dropbox_unlinked_because_full": "Tu cuenta de Dropbox se ha desvinculado porque está llena y ya no podemos enviarle actualizaciones. Libere espacio y vuelva a vincular su cuenta de Dropbox para continuar usándola con Overleaf.",
|
||||
"dropbox_unlinked_because_suspended": "Hemos desvinculado tu cuenta de Dropbox porque Dropbox la suspendió. Podrás volver a vincularte una vez que hayas resuelto el problema con Dropbox.",
|
||||
@@ -780,7 +780,7 @@
|
||||
"email": "Email",
|
||||
"email_address": "Dirección de correo electrónico",
|
||||
"email_address_is_invalid": "La dirección de correo electrónico no es válida",
|
||||
"email_already_registered": "Este correo electrónico ya está registrado",
|
||||
"email_already_registered": "Esta dirección de correo electrónico ya está asociada con una cuenta Verso diferente.",
|
||||
"email_already_registered_secondary": "Este correo electrónico ya está registrado como correo electrónico secundario.",
|
||||
"email_already_registered_sso": "Este correo electrónico ya está registrado. Inicie sesión en su cuenta de otra manera y vincule su cuenta al nuevo proveedor a través de la configuración de su cuenta.",
|
||||
"email_attribute": "Atributo de correo electrónico",
|
||||
@@ -854,7 +854,7 @@
|
||||
"example": "Ejemplo",
|
||||
"example_latex_project": "Ejemplo de proyecto LaTeX",
|
||||
"example_project": "Proyecto de ejemplo",
|
||||
"example_quarto_project": "Ejemplo de proyecto en cuarto",
|
||||
"example_quarto_project": "Ejemplo de proyecto Quarto",
|
||||
"example_typst_project": "Ejemplo de proyecto Typst",
|
||||
"examples": "Ejemplos",
|
||||
"examples_lowercase": "ejemplos",
|
||||
@@ -1022,9 +1022,9 @@
|
||||
"get_ready_for_overleaf_standard": "Prepárese para una colaboración mejorada, con mayor acceso a la IA y hasta 10 colaboradores por proyecto.",
|
||||
"get_real_time_track_changes": "Obtenga seguimiento de cambios en tiempo real",
|
||||
"get_standard": "Obtener estándar",
|
||||
"get_started_with_latex": "Comience con LaTeX en el dorso",
|
||||
"get_started_with_latex": "Comience con LaTeX en Overleaf",
|
||||
"get_student": "Obtener estudiante",
|
||||
"get_the_best_overleaf_experience": "Obtenga la mejor experiencia al dorso",
|
||||
"get_the_best_overleaf_experience": "Obtén la mejor experiencia Overleaf",
|
||||
"get_your_hands_on_the_ultimate_research_writing_ai_assistant": "Obtenga el mejor asistente de inteligencia artificial para redacción de investigaciones.",
|
||||
"git": "git",
|
||||
"git_authentication_token": "token de autenticación de git",
|
||||
@@ -1051,7 +1051,7 @@
|
||||
"github_file_sync_error": "No podemos sincronizar los siguientes archivos:",
|
||||
"github_git_and_dropbox_integrations": "Integraciones <0>GitHub</0>, <0>Git</0> y <0>Dropbox</0>",
|
||||
"github_git_and_reference_manager_integrations": "Integraciones de GitHub, Git y administrador de referencias",
|
||||
"github_git_folder_error": "Este proyecto contiene una carpeta .git en el nivel superior, lo que indica que ya es un repositorio de git. El servicio de sincronización de GitHub al dorso no puede sincronizar historiales de git. Elimina la carpeta .git e inténtalo de nuevo.",
|
||||
"github_git_folder_error": "Este proyecto contiene una carpeta .git en el nivel superior, lo que indica que ya es un repositorio de git. El servicio de sincronización Overleaf GitHub no puede sincronizar historiales de git. Elimina la carpeta .git e inténtalo de nuevo.",
|
||||
"github_integration": "Integración de GitHub",
|
||||
"github_integration_lowercase": "Integración de Git y GitHub",
|
||||
"github_is_no_longer_connected": "GitHub ya no está conectado a este proyecto.",
|
||||
@@ -1090,7 +1090,7 @@
|
||||
"go_to_first_page": "Ir a la primera página",
|
||||
"go_to_last_page": "Ir a la última página",
|
||||
"go_to_next_page": "Ir a la página siguiente",
|
||||
"go_to_overleaf": "Ir al dorso",
|
||||
"go_to_overleaf": "Ir a Overleaf",
|
||||
"go_to_page_x": "Ir a la página __page__",
|
||||
"go_to_pdf_location_in_code": "Ir a la ubicación del PDF en el código",
|
||||
"go_to_pdf_location_in_code_action": "Ir a la ubicación del PDF en el código",
|
||||
@@ -1116,7 +1116,7 @@
|
||||
"group_management": "Gestión de grupos",
|
||||
"group_managers": "Gerentes de grupo",
|
||||
"group_members": "Miembros del grupo",
|
||||
"group_plan_admins_can_easily_add_and_remove_users_from_a_group": "Los administradores de planes grupales pueden agregar y eliminar usuarios de un grupo fácilmente. Para los planes para todo el sitio, los usuarios se actualizan automáticamente cuando se registran o agregan su dirección de correo electrónico al dorso (inscripción basada en dominio o SSO).",
|
||||
"group_plan_admins_can_easily_add_and_remove_users_from_a_group": "Los administradores de planes grupales pueden agregar y eliminar usuarios de un grupo fácilmente. Para los planes para todo el sitio, los usuarios se actualizan automáticamente cuando se registran o agregan su dirección de correo electrónico a Overleaf (inscripción basada en dominio o SSO).",
|
||||
"group_plan_tooltip": "Estás en el plan __plan__ como miembro de una suscripción grupal. Haga clic para descubrir cómo aprovechar al máximo las funciones premium de Overleaf.",
|
||||
"group_plan_upgrade_description": "Estás en el plan <0>__currentPlan__</0> y estás actualizando al plan <0>__nextPlan__</0>. Si está interesado en un plan Overleaf Commons para todo el sitio, por favor <1>get in touch</1>.",
|
||||
"group_plan_with_name_tooltip": "Estás en el plan __plan__ como miembro de una suscripción grupal, __groupName__. Haga clic para descubrir cómo aprovechar al máximo las funciones premium de Overleaf.",
|
||||
@@ -1137,7 +1137,7 @@
|
||||
"help_editor_settings": "Configuración de ayuda y editor",
|
||||
"help_guides": "Guías de ayuda",
|
||||
"help_improve_group_audit_logs": "Ayúdenos a mejorar los registros de auditoría grupal respondiendo 3 preguntas rápidas.",
|
||||
"help_improve_overleaf_fill_out_this_survey": "Si desea ayudarnos a mejorar al dorso, tómese un momento para completar <0>this survey</0>.",
|
||||
"help_improve_overleaf_fill_out_this_survey": "Si desea ayudarnos a mejorar Overleaf, tómese un momento para completar <0>this survey</0>.",
|
||||
"help_improve_screen_reader_fill_out_this_survey": "Ayúdenos a mejorar su experiencia usando un lector de pantalla con __appName__ completando esta encuesta rápida.",
|
||||
"hide": "Ocultar",
|
||||
"hide_configuration": "Ocultar configuración",
|
||||
@@ -1208,7 +1208,7 @@
|
||||
"if_personal_account_you_should_change_your_email_address": "Si se trata de una cuenta personal __appName__, debe cambiar su dirección de correo electrónico para conservar la propiedad de sus proyectos personales.",
|
||||
"if_theres_an_account_youll_get_reset_email": "Si hay una cuenta para __email__, recibirás un correo electrónico con instrucciones para restablecerla.",
|
||||
"if_you_find_any_issues_with_texlive": "Si encuentra algún problema con TeX Live, los paquetes o la compilación, por favor <0>provide feedback</0>. Si tiene problemas, puede <1>switch your compiler</1>.",
|
||||
"if_you_need_to_customize_your_table_further_you_can": "Si necesita personalizar aún más su mesa, puede hacerlo. Usando código LaTeX, puedes cambiar cualquier cosa, desde estilos de tabla y estilos de borde hasta colores y anchos de columna. <0>Read our guide</0> al uso de tablas en LaTeX para ayudarle a comenzar.",
|
||||
"if_you_need_to_customize_your_table_further_you_can": "Si necesita personalizar aún más su tabla, puede hacerlo. Usando código LaTeX, puedes cambiar cualquier cosa, desde estilos de tabla y estilos de borde hasta colores y anchos de columna. <0>Read our guide</0> al uso de tablas en LaTeX para ayudarle a comenzar.",
|
||||
"if_you_need_to_delete_your_writefull_account": "Si necesita eliminar su cuenta de Writefull, vaya a la <a>configuración de su cuenta de Writefull.</a>",
|
||||
"if_you_want_more_than_x_licenses_on_your_plan_we_need_to_add_them_for_you": "Si desea más de __count__ licencias en su plan, debemos agregarlas por usted. Simplemente haga clic en <0>Send request</0> a continuación y estaremos encantados de ayudarle.",
|
||||
"if_you_want_to_reduce_the_number_of_licenses_please_contact_support": "Si desea reducir la cantidad de licencias en su plan, por favor <0>contact customer support</0>.",
|
||||
@@ -1288,7 +1288,7 @@
|
||||
"institution_account_tried_to_add_affiliated_with_another_institution_2": "El correo electrónico <b>__email__</b> <b>ya está asociado</b> con su cuenta pero está afiliado a otra institución.",
|
||||
"institution_account_tried_to_add_already_linked": "Esta institución <b>ya está vinculada</b> con su cuenta a través de otra dirección de correo electrónico.",
|
||||
"institution_account_tried_to_add_already_registered": "La cuenta de correo electrónico/institución que intentó agregar <b>ya está registrada</b> con __appName__.",
|
||||
"institution_account_tried_to_add_not_affiliated_2": "La dirección de correo electrónico que nos proporcionó cuando inició sesión no era una dirección de correo electrónico institucional. Su institución proporcionó el correo electrónico <b>__email__</b>, que no se considera un correo electrónico institucional. Actualmente, al dorso se requiere que se envíe una dirección de correo electrónico institucional como parte del inicio de sesión SSO. Haga un seguimiento con su equipo de servicios de TI para asegurarse de que se proporcione una dirección institucional al momento de iniciar sesión.",
|
||||
"institution_account_tried_to_add_not_affiliated_2": "La dirección de correo electrónico que nos proporcionó cuando inició sesión no era una dirección de correo electrónico institucional. Su institución proporcionó el correo electrónico <b>__email__</b>, que no se considera un correo electrónico institucional. Overleaf actualmente requiere que se envíe una dirección de correo electrónico institucional como parte del inicio de sesión SSO. Haga un seguimiento con su equipo de servicios de TI para asegurarse de que se proporcione una dirección institucional al momento de iniciar sesión.",
|
||||
"institution_account_tried_to_confirm_saml": "Este correo electrónico no se puede confirmar. Elimina el correo electrónico de tu cuenta e intenta agregarlo nuevamente.",
|
||||
"institution_acct_successfully_linked_2": "Su cuenta <0>__appName__</0> se vinculó exitosamente a su cuenta institucional <0>__institutionName__</0>.",
|
||||
"institution_and_role": "Institución y rol",
|
||||
@@ -1349,7 +1349,7 @@
|
||||
"is_longer_than_n_characters": "tiene al menos __n__ caracteres de longitud",
|
||||
"is_not_used_on_any_other_website": "no se utiliza en ningún otro sitio web",
|
||||
"iso_certification": "Certificación ISO",
|
||||
"iso_certification_explanation": "Al dorso está certificado de conformidad con ISO/IEC 27001:2022.",
|
||||
"iso_certification_explanation": "Overleaf está certificado de conformidad con ISO/IEC 27001:2022.",
|
||||
"issued_on": "Emitido: __date__",
|
||||
"it": "Italiano",
|
||||
"it_looks_like_that_didnt_work_you_can_try_again_or_get_in_touch": "Parece que eso no funcionó. Puedes intentarlo nuevamente o <0>get in touch</0> con nuestro equipo de soporte para obtener más ayuda.",
|
||||
@@ -1363,7 +1363,7 @@
|
||||
"join_group": "Unirse al grupo",
|
||||
"join_labs": "Únase a los laboratorios",
|
||||
"join_now": "Únete ahora",
|
||||
"join_overleaf_labs": "Únase a los laboratorios al dorso",
|
||||
"join_overleaf_labs": "Únase a los laboratorios Overleaf",
|
||||
"join_project": "Unirse al proyecto",
|
||||
"join_project_lowercase": "Unirse al proyecto",
|
||||
"join_sl_to_view_project": "Ingresa a __appName__ para ver este proyecto",
|
||||
@@ -1420,14 +1420,14 @@
|
||||
"latam_discount_modal_title": "Descuento en planes premium",
|
||||
"latam_discount_offer_plans_page_banner": "__flag__ Aplicamos un descuento del __discount__ en los planes premium de esta página para nuestros usuarios de __country__. Consulta los nuevos precios con descuento (en __currency__)",
|
||||
"latex_articles_page_title": "Artículos: artículos, presentaciones, informes y más",
|
||||
"latex_examples": "Ejemplos de látex",
|
||||
"latex_examples": "LaTeX ejemplos",
|
||||
"latex_examples_page_title": "Ejemplos: ecuaciones, formato, TikZ, paquetes y más",
|
||||
"latex_places_figures_according_to_a_special_algorithm": "LaTeX coloca figuras según un algoritmo especial. Puedes utilizar algo llamado \"parámetros de ubicación\" para influir en la posición de la figura. <0>Descubre cómo</>",
|
||||
"latex_places_tables_according_to_a_special_algorithm": "LaTeX coloca tablas según un algoritmo especial. Puede utilizar \"parámetros de ubicación\" para influir en la posición de la mesa. <0>This article</0> explica cómo hacer esto.",
|
||||
"latex_templates": "Plantillas LaTeX",
|
||||
"latex_templates_and_examples": "Plantillas y ejemplos de LaTeX",
|
||||
"latex_templates_for_journal_articles": "Plantillas LaTeX para artículos de revistas, artículos académicos, CV y currículums, presentaciones y más.",
|
||||
"latex_templates_sentence_case": "Plantillas de látex",
|
||||
"latex_templates_sentence_case": "LaTeX plantillas",
|
||||
"layout": "Diseño",
|
||||
"layout_options": "Opciones de diseño",
|
||||
"ldap": "LDAP",
|
||||
@@ -1445,7 +1445,7 @@
|
||||
"leave": "salir",
|
||||
"leave_any_group_subscriptions": "Deje cualquier suscripción grupal que no sea la que administrará su cuenta. <0>Leave them from the Subscription page.</0>",
|
||||
"leave_group": "Abandonar grupo",
|
||||
"leave_labs": "Deje los laboratorios al dorso",
|
||||
"leave_labs": "Salir de Overleaf laboratorios",
|
||||
"leave_now": "Abandonar ya",
|
||||
"leave_project": "Dejar proyecto",
|
||||
"leave_projects": "Abandonar proyectos",
|
||||
@@ -1530,7 +1530,7 @@
|
||||
"login_or_password_wrong_try_again": "Su nombre de usuario o contraseña es incorrecto. Por favor inténtalo de nuevo",
|
||||
"login_register_or": "o",
|
||||
"login_to_accept_invitation": "Inicia sesión para aceptar la invitación",
|
||||
"login_to_overleaf": "Inicie sesión en el dorso",
|
||||
"login_to_overleaf": "Inicia sesión en Overleaf",
|
||||
"login_with_service": "Inicia sesión con __service__",
|
||||
"logs": "Registros",
|
||||
"logs_and_output_files": "Logs y archivos de salida",
|
||||
@@ -1639,7 +1639,7 @@
|
||||
"more_options": "Más opciones",
|
||||
"more_project_collaborators": "<0>More</0> proyecto <0>collaborators</0>",
|
||||
"more_space_to_write_revise_and_collaborate": "Más espacio para escribir, revisar y colaborar.",
|
||||
"more_than_one_kind_of_snippet_was_requested": "El enlace para abrir este contenido en el dorso incluía algunos parámetros no válidos. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"more_than_one_kind_of_snippet_was_requested": "El enlace para abrir este contenido en Overleaf incluía algunos parámetros no válidos. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"most_popular": "más popular",
|
||||
"most_popular_uppercase": "mas popular",
|
||||
"move_to_the_left": "Muévete a la izquierda",
|
||||
@@ -1741,7 +1741,7 @@
|
||||
"normally_x_price_per_year": "Normalmente __price__ por año",
|
||||
"not_a_student": "¿No eres estudiante?",
|
||||
"not_found": "No encontrado",
|
||||
"not_found_error_from_the_supplied_url": "El enlace para abrir este contenido en el dorso apuntaba a un archivo que no se pudo encontrar. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"not_found_error_from_the_supplied_url": "El enlace para abrir este contenido en Overleaf apuntaba a un archivo que no se pudo encontrar. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"not_managed": "No gestionado",
|
||||
"not_now": "Ahora no",
|
||||
"not_permitted_by_your_organization": "No permitido por su organización",
|
||||
@@ -1827,21 +1827,21 @@
|
||||
"over": "más",
|
||||
"over_n_users_at_research_institutions_and_business": "Más de __userCountMillion__ millones de usuarios en instituciones de investigación y empresas de todo el mundo adoran a __appName__",
|
||||
"overall_theme": "Tema general",
|
||||
"overleaf": "Al dorso",
|
||||
"overleaf_ai": "Al dorso IA",
|
||||
"overleaf": "Overleaf",
|
||||
"overleaf_ai": "Overleaf IA",
|
||||
"overleaf_ai_info": "Herramientas de IA integradas que admiten flujos de trabajo de escritura, edición y LaTeX. Se aplica el uso justo.",
|
||||
"overleaf_group_plans": "Planes grupales al dorso",
|
||||
"overleaf_history_system": "Sistema de historial al dorso",
|
||||
"overleaf_individual_plans": "Planes individuales al dorso",
|
||||
"overleaf_is_a_ds_product": "Al dorso se muestra un producto de ciencia digital.",
|
||||
"overleaf_is_easy_to_use": "Al dorso es fácil de usar.",
|
||||
"overleaf_labs": "Laboratorios al dorso",
|
||||
"overleaf_learning_center": "Centro de aprendizaje al dorso",
|
||||
"overleaf_logo": "Logotipo al dorso",
|
||||
"overleaf_multi_license_plans": "Planes de licencias múltiples al dorso",
|
||||
"overleaf_group_plans": "Overleaf planes grupales",
|
||||
"overleaf_history_system": "Overleaf Sistema de Historia",
|
||||
"overleaf_individual_plans": "Overleaf planes individuales",
|
||||
"overleaf_is_a_ds_product": "Overleaf es un producto de ciencia digital.",
|
||||
"overleaf_is_easy_to_use": "Overleaf es fácil de usar.",
|
||||
"overleaf_labs": "Overleaf Laboratorios",
|
||||
"overleaf_learning_center": "Overleaf centro de aprendizaje",
|
||||
"overleaf_logo": "Overleaf logotipo",
|
||||
"overleaf_multi_license_plans": "Overleaf planes multilicencia",
|
||||
"overleaf_plans_and_pricing": "planes y precios al dorso",
|
||||
"overleaf_template_gallery": "galería de plantillas al dorso",
|
||||
"overleafs_functionality_meets_my_needs": "La funcionalidad del dorso satisface mis necesidades.",
|
||||
"overleafs_functionality_meets_my_needs": "La funcionalidad de Overleaf satisface mis necesidades.",
|
||||
"overview": "Descripción general",
|
||||
"overwrite": "Sobrescribir",
|
||||
"overwriting_the_original_folder": "Sobrescribir la carpeta original la eliminará junto con todos los archivos que contiene.",
|
||||
@@ -2088,7 +2088,7 @@
|
||||
"reactivating": "Reactivando",
|
||||
"read_lines_from_path": "Leer líneas de __path__",
|
||||
"read_more": "Leer más",
|
||||
"read_only_dropbox_sync_message": "Como visor de solo lectura, puedes sincronizar la versión actual del proyecto con Dropbox, pero los cambios realizados en Dropbox <0>not</0> se sincronizarán nuevamente con el dorso.",
|
||||
"read_only_dropbox_sync_message": "Como visor de solo lectura, puedes sincronizar la versión actual del proyecto con Dropbox, pero los cambios realizados en Dropbox <0>not</0> se sincronizarán nuevamente con Overleaf.",
|
||||
"read_only_token": "Token de solo lectura",
|
||||
"read_write_token": "Token de lectura-escritura",
|
||||
"ready_to_join_x": "Estás listo para unirte a __inviterName__",
|
||||
@@ -2122,7 +2122,7 @@
|
||||
"redo": "Rehacer",
|
||||
"reduce_costs_group_licenses": "Puede reducir el papeleo y reducir costos con nuestras licencias grupales con descuento.",
|
||||
"reduces_visual_distraction_by_keeping_the_cursor_solid": "Reduce la distracción visual manteniendo el cursor fijo",
|
||||
"refer_to_doc_link": "Si es necesario, puede consultar la <a href=\"__link__\">documentación de API al dorso</a>.",
|
||||
"refer_to_doc_link": "Si es necesario, puede consultar la <a href=\"__link__\">Overleaf documentación de API</a>.",
|
||||
"reference_error_relink_hint": "Si el error persiste, prueba a volver a vincular la cuenta aquí:",
|
||||
"reference_manager_linked": "Gestor de referencias vinculado",
|
||||
"reference_manager_lowercase": "gerente de referencia",
|
||||
@@ -2172,7 +2172,7 @@
|
||||
"remove_original_links": "Eliminar enlaces originales",
|
||||
"remove_original_sharing_links": "¿Eliminar los enlaces originales para compartir?",
|
||||
"remove_secondary_email_addresses": "Elimine cualquier dirección de correo electrónico secundaria asociada a su cuenta. <0>Elimínelas en la configuración de la cuenta.</0>",
|
||||
"remove_secondary_email_addresses_except_saml_email": "Elimine todas las direcciones de correo electrónico excepto <0>__institutionEmail__</0> de su cuenta al dorso. <1>Remove them in account settings.</1>",
|
||||
"remove_secondary_email_addresses_except_saml_email": "Elimine todas las direcciones de correo electrónico excepto <0>__institutionEmail__</0> de su cuenta Overleaf. <1>Remove them in account settings.</1>",
|
||||
"remove_sso_login_option": "Elimine la opción de inicio de sesión SSO para sus usuarios.",
|
||||
"remove_tag": "Eliminar etiqueta __tagName__",
|
||||
"remove_user": "Eliminar usuario",
|
||||
@@ -2199,7 +2199,7 @@
|
||||
"repository_visibility": "Visibilidad del repositorio",
|
||||
"republish": "Volver a publicar",
|
||||
"request_new_password_reset_email": "Solicitar un nuevo correo electrónico para restablecer la contraseña",
|
||||
"request_overleaf_common": "Solicitar bienes comunes al dorso",
|
||||
"request_overleaf_common": "Solicitar Overleaf Bienes Comunes",
|
||||
"request_password_reset_to_reconfirm": "Solicitar correo electrónico de restablecimiento de contraseña para reconfirmar",
|
||||
"request_reconfirmation_email": "Solicitar correo electrónico de reconfirmación",
|
||||
"request_sent_thank_you": "Solicitud enviada, gracias.",
|
||||
@@ -2248,7 +2248,7 @@
|
||||
"review": "Revisión",
|
||||
"review_panel": "Panel de revisión",
|
||||
"reviewer": "Revisor",
|
||||
"reviewer_dropbox_sync_message": "Como revisor, puede sincronizar la versión actual del proyecto con Dropbox, pero los cambios realizados en Dropbox <0>not</0> se sincronizarán nuevamente con el dorso.",
|
||||
"reviewer_dropbox_sync_message": "Como revisor, puedes sincronizar la versión actual del proyecto con Dropbox, pero los cambios realizados en Dropbox <0>not</0> se sincronizarán nuevamente con Overleaf.",
|
||||
"reviewing": "Revisando",
|
||||
"revoke": "Revocar",
|
||||
"revoke_invite": "Revocar invitación",
|
||||
@@ -2263,7 +2263,7 @@
|
||||
"saml": "SAML",
|
||||
"saml_auth_error": "Lo sentimos, su proveedor de identidad respondió con un error. Póngase en contacto con su administrador para obtener más información.",
|
||||
"saml_authentication_required_error": "El administrador de su grupo ha desactivado otros métodos de inicio de sesión. Utilice el inicio de sesión SSO de su grupo.",
|
||||
"saml_commons_reconfirmation_unable_to_find_user": "Lo sentimos, no pudimos confirmar su afiliación. Esto puede deberse a un cambio en los datos de SSO que nos envía su institución. Por favor <0>contact us</0> para obtener ayuda para volver a vincular su cuenta al dorso al SSO de su institución.",
|
||||
"saml_commons_reconfirmation_unable_to_find_user": "Lo sentimos, no pudimos confirmar su afiliación. Esto puede haber sido causado por un cambio en los datos SSO que nos envía su institución. Por favor <0>contact us</0> para obtener ayuda para volver a vincular su cuenta Overleaf a la SSO de su institución.",
|
||||
"saml_commons_unavailable": "El SSO institucional no está disponible actualmente. Para obtener más detalles, consulte <0>__linkText__</0>.",
|
||||
"saml_create_admin_instructions": "Elija una dirección de correo electrónico para la primera cuenta de administrador __appName__. Esto debe corresponder a una cuenta en el sistema SAML. Luego se le pedirá que inicie sesión con esta cuenta.",
|
||||
"saml_email_not_in_account_error_managed_users_2": "Su dirección de correo electrónico <0>__userEmail__</0> no fue reconocida. El proveedor de identidad de su organización devolvió <1>__samlEmail__</1>. Deberá cerrar sesión en <0>__userEmail__</0> y usar <1>__samlEmail__</1> para crear una cuenta a través de SSO. Puedes <2>transfer your existing projects</2> a la nueva cuenta.",
|
||||
@@ -2276,7 +2276,7 @@
|
||||
"saml_login_identity_mismatch_error": "Lo sentimos, estás intentando iniciar sesión en Overleaf como __email__ pero la identidad devuelta por tu proveedor de identidad no es la correcta para esta cuenta de Overleaf.",
|
||||
"saml_login_identity_not_found_error": "Lo sentimos, no hemos podido encontrar una cuenta de Overleaf configurada para el inicio de sesión único con este proveedor de identidad.",
|
||||
"saml_login_requested_email_not_confirmed_error": "Lo sentimos, la dirección de correo electrónico que solicitó utilizar para iniciar sesión no ha sido confirmada y no podemos completar su solicitud de inicio de sesión SSO. Si tiene otro método para iniciar sesión, inicie sesión y luego confirme su correo electrónico. Por favor <0>contact us</0> si necesita ayuda.",
|
||||
"saml_metadata": "Metadatos SAML al dorso",
|
||||
"saml_metadata": "Overleaf SAML Metadatos",
|
||||
"saml_missing_signature_error": "Lo sentimos, la información recibida de su proveedor de identidad no está firmada (se requieren las firmas de respuesta y de aserción). Póngase en contacto con su administrador para obtener más información.",
|
||||
"saml_missing_user_attribute": "Hubo un problema con su autenticación de inicio de sesión único. Su organización no proporcionó la información requerida para completar la autenticación. Comuníquese con su administrador para obtener más información.",
|
||||
"saml_request_denied_error": "Lo sentimos, su proveedor de identidad rechazó la solicitud para autenticarlo. Comuníquese con su administrador para obtener más información.",
|
||||
@@ -2365,7 +2365,7 @@
|
||||
"select_user": "Seleccionar usuario",
|
||||
"select_user_role": "Seleccionar rol de usuario",
|
||||
"selected": "Seleccionado",
|
||||
"selected_by_overleaf_staff": "Seleccionado por el personal al dorso",
|
||||
"selected_by_overleaf_staff": "Seleccionado por el personal de Overleaf",
|
||||
"selected_lowercase": "seleccionado",
|
||||
"selected_lowercase_plural": "seleccionado",
|
||||
"selected_plural": "seleccionado",
|
||||
@@ -2398,7 +2398,7 @@
|
||||
"set_up_sso": "Configurar SSO",
|
||||
"set_up_sso_for_your_account": "Configure SSO para su cuenta",
|
||||
"settings": "Opciones",
|
||||
"setup_another_account_under_a_personal_email_address": "Configure otra cuenta al dorso con una dirección de correo electrónico personal.",
|
||||
"setup_another_account_under_a_personal_email_address": "Configure otra cuenta Overleaf con una dirección de correo electrónico personal.",
|
||||
"share": "Compartir",
|
||||
"share_compiled_presentation": "Compartir presentación compilada",
|
||||
"share_compiled_presentation_info": "Publique la presentación compilada como una página independiente a la que pueda vincular, fuera del editor. Vuelva a publicarlo para actualizarlo.",
|
||||
@@ -2461,7 +2461,7 @@
|
||||
"somthing_went_wrong_compiling": "Disculpa, algo anduvo mal y tu proyecto no se pudo compilar. Por favor, intenta de nuevo en unos minutos más.",
|
||||
"sorry_detected_sales_restricted_region": "Lo sentimos, hemos detectado que se encuentra en una región desde la cual actualmente no podemos aceptar pagos. Si cree que recibió este mensaje por error, <a href=\"__link__\">contáctenos</a> con los detalles de su ubicación y lo investigaremos por usted. Pedimos disculpas por las molestias.",
|
||||
"sorry_it_looks_like_that_didnt_work_this_time": "¡Lo siento! Parece que eso no funcionó esta vez. Por favor inténtalo de nuevo.",
|
||||
"sorry_something_went_wrong_opening_the_document_please_try_again": "Lo sentimos, se produjo un error inesperado al intentar abrir este contenido en el dorso. Por favor inténtalo de nuevo.",
|
||||
"sorry_something_went_wrong_opening_the_document_please_try_again": "Lo sentimos, se produjo un error inesperado al intentar abrir este contenido en Overleaf. Por favor inténtalo de nuevo.",
|
||||
"sorry_there_are_no_experiments": "Lo sentimos, actualmente no hay experimentos en ejecución en Overleaf Labs.",
|
||||
"sorry_there_was_an_issue_adding_x_users_to_your_subscription": "Lo sentimos, hubo un problema al agregar __count__ usuarios a su suscripción. Por favor <0>contact our Support team</0> para obtener ayuda.",
|
||||
"sorry_there_was_an_issue_upgrading_your_subscription": "Lo sentimos, hubo un problema al actualizar tu suscripción. Por favor <0>contact our Support team</0> para obtener ayuda.",
|
||||
@@ -2629,7 +2629,7 @@
|
||||
"syntax_checks": "Comprobaciones de sintaxis",
|
||||
"syntax_validation": "verificación de código",
|
||||
"tab_connecting": "Conectando con el editor",
|
||||
"table": "mesa",
|
||||
"table": "tabla",
|
||||
"table_generator": "Generador de tablas",
|
||||
"tabs_open_in_preview_mode_until_you_interact_with_them": "Las pestañas se abren en modo de vista previa hasta que interactúas con ellas",
|
||||
"tag_color": "Color de etiqueta",
|
||||
@@ -2640,7 +2640,7 @@
|
||||
"take_survey": "Tomar encuesta",
|
||||
"tax_id_number": "Número de identificación fiscal",
|
||||
"tax_id_type": "Tipo de identificación fiscal",
|
||||
"tell_the_project_owner_and_ask_them_to_upgrade": "<0>Tell the project owner</0> y pídales que actualicen su plan al dorso si necesita más tiempo de compilación.",
|
||||
"tell_the_project_owner_and_ask_them_to_upgrade": "<0>Tell the project owner</0> y pídales que actualicen su plan Overleaf si necesita más tiempo de compilación.",
|
||||
"template": "Plantilla",
|
||||
"template_approved_by_publisher": "Esta plantilla ha sido aprobada por el editor.",
|
||||
"template_description": "Descripción de plantilla",
|
||||
@@ -2663,7 +2663,7 @@
|
||||
"test_configuration": "Configuración de prueba",
|
||||
"test_configuration_successful": "Configuración de prueba exitosa",
|
||||
"tex_live_version": "Versión TeX Live",
|
||||
"texgpt": "TextoGPT",
|
||||
"texgpt": "TeXGPT",
|
||||
"text": "Texto",
|
||||
"thank_you": "Gracias",
|
||||
"thank_you_email_confirmed": "Gracias, tu correo electrónico ya está confirmado.",
|
||||
@@ -2685,7 +2685,7 @@
|
||||
"the_code_editor_color_scheme_dark_mode": "El esquema de color del editor de código para el modo oscuro",
|
||||
"the_code_editor_color_scheme_light_mode": "El esquema de color del editor de código para el modo claro.",
|
||||
"the_document_contains_formatting_we_werent_able_to_convert": "El documento contiene un formato que no pudimos convertir. Asegúrese de haber corregido todos los errores de LaTeX o <0>learn more</0> acerca de los errores de conversión comunes.",
|
||||
"the_file_supplied_is_of_an_unsupported_type ": "El enlace para abrir este contenido en el dorso apuntaba al tipo de archivo incorrecto. Los tipos de archivos válidos son documentos .tex y archivos .zip. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"the_file_supplied_is_of_an_unsupported_type ": "El enlace para abrir este contenido en Overleaf apuntaba al tipo de archivo incorrecto. Los tipos de archivos válidos son documentos .tex y archivos .zip. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"the_following_files_already_exist_in_this_project": "Los siguientes archivos ya existen en este proyecto:",
|
||||
"the_following_files_and_folders_already_exist_in_this_project": "Los siguientes archivos y carpetas ya existen en este proyecto:",
|
||||
"the_following_folder_already_exists_in_this_project": "La siguiente carpeta ya existe en este proyecto:",
|
||||
@@ -2698,11 +2698,11 @@
|
||||
"the_overleaf_color_scheme": "El esquema de color __appName__",
|
||||
"the_primary_file_for_compiling_your_project": "El archivo principal para compilar su proyecto.",
|
||||
"the_project_that_contains_this_file_is_not_shared_with_you": "El proyecto que contiene este archivo no se comparte contigo",
|
||||
"the_requested_conversion_job_was_not_found": "El enlace para abrir este contenido en el dorso especificaba un trabajo de conversión que no se pudo encontrar. Es posible que el trabajo haya caducado y deba ejecutarse nuevamente. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"the_requested_publisher_was_not_found": "El enlace para abrir este contenido en el dorso especificaba un editor que no se pudo encontrar. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"the_required_parameters_were_not_supplied": "Al enlace para abrir este contenido en el dorso le faltaban algunos parámetros requeridos. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"the_supplied_parameters_were_invalid": "El enlace para abrir este contenido en el dorso incluía algunos parámetros no válidos. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"the_supplied_uri_is_invalid": "El enlace para abrir este contenido en el dorso incluía un URI no válido. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"the_requested_conversion_job_was_not_found": "El enlace para abrir este contenido en Overleaf especificaba un trabajo de conversión que no se pudo encontrar. Es posible que el trabajo haya caducado y deba ejecutarse nuevamente. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"the_requested_publisher_was_not_found": "El enlace para abrir este contenido en Overleaf especificaba un editor que no se pudo encontrar. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"the_required_parameters_were_not_supplied": "Al enlace para abrir este contenido en Overleaf le faltaban algunos parámetros requeridos. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"the_supplied_parameters_were_invalid": "El enlace para abrir este contenido en Overleaf incluía algunos parámetros no válidos. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"the_supplied_uri_is_invalid": "El enlace para abrir este contenido en Overleaf incluía un URI no válido. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"the_target_folder_could_not_be_found": "No se pudo encontrar la carpeta de destino.",
|
||||
"the_token_can_be_found_later_learn_more": "El token se puede encontrar más adelante en la tabla de captura de dominio. <0>Learn more about Domain Capture</0>.",
|
||||
"the_version_of_tex_live_used_for_compiling": "La versión de TeX Live utilizada para compilar.",
|
||||
@@ -2717,7 +2717,7 @@
|
||||
"there_was_an_error_opening_your_content": "Hubo un error al crear tu proyecto.",
|
||||
"these_settings_might_change_in_the_future": "Estas configuraciones podrían cambiar en el futuro.",
|
||||
"thesis": "Tesis",
|
||||
"they_lose_access_to_account": "Pierden inmediatamente todo acceso a esta cuenta al dorso.",
|
||||
"they_lose_access_to_account": "Pierden todo acceso a esta cuenta Overleaf inmediatamente",
|
||||
"they_will_be_removed_from_the_group": "Serán eliminados del grupo.",
|
||||
"they_will_continue_to_have_access_to_any_projects_shared_with_them": "Seguirán teniendo acceso a cualquier proyecto compartido con ellos.",
|
||||
"they_will_no_longer_be_a_managed_user": "Ya no será un usuario administrado.",
|
||||
@@ -2740,7 +2740,7 @@
|
||||
"this_project_already_has_maximum_collaborators": "Este proyecto ya cuenta con el número máximo de colaboradores permitidos en el plan del propietario. Esto significa que puede ver pero no editar ni revisar el proyecto.",
|
||||
"this_project_exceeded_collaborator_limit": "Este proyecto superó el límite de colaboradores de su plan. Todos los demás usuarios ahora tienen acceso de solo lectura.",
|
||||
"this_project_exceeded_compile_timeout_limit_on_free_plan": "Este proyecto superó el límite de tiempo de espera de compilación de nuestro plan gratuito.",
|
||||
"this_project_has_more_than_max_collabs": "Este proyecto tiene más que el número máximo de colaboradores permitido en el plan al dorso del propietario del proyecto. Esto significa que podrías perder el acceso de edición de __linkSharingDate__.",
|
||||
"this_project_has_more_than_max_collabs": "Este proyecto tiene más que el número máximo de colaboradores permitido en el plan Overleaf del propietario del proyecto. Esto significa que podrías perder el acceso de edición de __linkSharingDate__.",
|
||||
"this_project_is_compiled_using_untested_version": "Este proyecto está compilado utilizando una versión no probada de TeX Live.",
|
||||
"this_project_is_public": "Este proyecto es público y puede ser editado por cualquiera que tenga la URL.",
|
||||
"this_project_is_public_read_only": "Este proyecto es público y puede ser visto (pero no editado) por cualquiera que tenga la dirección URL",
|
||||
@@ -2854,8 +2854,8 @@
|
||||
"track_changes_explanation": "Realice y vea cambios de seguimiento.",
|
||||
"tracked_change_added": "Añadido",
|
||||
"tracked_change_deleted": "Eliminado",
|
||||
"transfer_management_of_your_account": "Gestión de transferencias de su cuenta al dorso",
|
||||
"transfer_management_of_your_account_to_x": "Transferir la gestión de su cuenta al dorso a __groupName__",
|
||||
"transfer_management_of_your_account": "Gestión de transferencias de tu cuenta Overleaf",
|
||||
"transfer_management_of_your_account_to_x": "Transferir la gestión de tu cuenta Overleaf a __groupName__",
|
||||
"transfer_management_resolve_following_issues": "Para transferir la gestión de su cuenta, debe resolver los siguientes problemas:",
|
||||
"transfer_this_users_projects": "Transferir los proyectos de este usuario",
|
||||
"transfer_this_users_projects_description": "Los proyectos de este usuario se transferirán a un nuevo propietario.",
|
||||
@@ -2873,7 +2873,7 @@
|
||||
"try_for_free": "Pruébalo gratis",
|
||||
"try_for_free_instead": "Pruébelo gratis",
|
||||
"try_now": "Intenta ahora",
|
||||
"try_overleaf_ai": "Pruebe la IA al dorso",
|
||||
"try_overleaf_ai": "Prueba Overleaf IA",
|
||||
"try_premium_for_free": "Prueba Premium gratis",
|
||||
"try_recompile_project_or_troubleshoot": "Intente recompilar el proyecto desde cero y, si eso no ayuda, siga nuestro <0>troubleshooting guide</0>.",
|
||||
"try_relinking_provider": "Parece que necesitas volver a vincular tu cuenta __provider__.",
|
||||
@@ -2886,7 +2886,7 @@
|
||||
"turn_on_password_visibility": "Activar la visibilidad de la contraseña",
|
||||
"tutorials": "Tutoriales",
|
||||
"uk": "Ucraniano",
|
||||
"unable_to_extract_the_supplied_zip_file": "No se pudo abrir este contenido en el dorso porque no se pudo extraer el archivo zip. Asegúrese de que sea un archivo zip válido. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"unable_to_extract_the_supplied_zip_file": "Error al abrir este contenido el Overleaf porque no se pudo extraer el archivo zip. Asegúrese de que sea un archivo zip válido. Si esto continúa sucediendo con los enlaces de un sitio en particular, infórmelo.",
|
||||
"unarchive": "Restaurar",
|
||||
"uncategorized": "Sin categoría",
|
||||
"uncategorized_projects": "Proyectos sin categoría",
|
||||
@@ -2906,15 +2906,15 @@
|
||||
"unlimited_collabs": "Colaboradores ilimitados",
|
||||
"unlimited_collabs_per_project_plus": "Colaboradores ilimitados por proyecto, más:",
|
||||
"unlimited_document_history": "Historial de documentos ilimitado",
|
||||
"unlimited_overleaf_ai": "IA ilimitada al dorso",
|
||||
"unlimited_overleaf_ai": "IA ilimitada Overleaf",
|
||||
"unlimited_projects": "Proyectos ilimitados",
|
||||
"unlink": "Desvincular",
|
||||
"unlink_all_users": "Desvincular a todos los usuarios",
|
||||
"unlink_all_users_explanation": "Estás a punto de eliminar la opción de inicio de sesión SSO para todos los usuarios de tu grupo. Si el SSO está habilitado, esto obligará a los usuarios a volver a autenticar sus cuentas al dorso con su IdP. Recibirán un correo electrónico pidiéndoles que hagan esto.",
|
||||
"unlink_all_users_explanation": "Estás a punto de eliminar la opción de inicio de sesión SSO para todos los usuarios de tu grupo. Si SSO está habilitado, esto obligará a los usuarios a volver a autenticar sus cuentas Overleaf con su IdP. Recibirán un correo electrónico pidiéndoles que hagan esto.",
|
||||
"unlink_commons_sso_confirm": "¿Está seguro de que desea eliminar su inicio de sesión __institutionName__?",
|
||||
"unlink_commons_sso_error": "Error al desvincular. Por favor inténtalo de nuevo.",
|
||||
"unlink_commons_sso_lose_licence": "Su cuenta perderá sus características premium institucionales. Puede volver a unirse a su suscripción institucional si tiene derecho agregando su opción de inicio de sesión institucional nuevamente a su cuenta.",
|
||||
"unlink_commons_sso_no_login": "Si no vuelve a agregar el inicio de sesión institucional, aún puede acceder a su trabajo configurando una contraseña específica al dorso usando la página de restablecimiento de contraseña.",
|
||||
"unlink_commons_sso_no_login": "Si no vuelve a agregar el inicio de sesión institucional, aún puede acceder a su trabajo configurando una contraseña específica Overleaf usando la página de restablecimiento de contraseña.",
|
||||
"unlink_commons_sso_title": "Desvincular inicio de sesión institucional",
|
||||
"unlink_commons_sso_troubleshoot": "Quitar y volver a agregar su inicio de sesión institucional a menudo puede solucionar los problemas de inicio de sesión.",
|
||||
"unlink_dropbox_folder": "Desvincular cuenta de Dropbox",
|
||||
@@ -2929,7 +2929,7 @@
|
||||
"unlink_reference": "Desvincular proveedor de referencias",
|
||||
"unlink_sso": "Desvincular SSO",
|
||||
"unlink_the_project_from_the_current_github_repo": "Desvincula el proyecto del repositorio actual de GitHub y crea una conexión a un repositorio de tu propiedad. (Necesita una suscripción __appName__ activa para configurar una sincronización de GitHub).",
|
||||
"unlink_user_explanation": "Está a punto de eliminar la opción de inicio de sesión SSO para <0>__email__</0>. Esto los obligará a volver a autenticar su cuenta al dorso con su IdP. Recibirán un correo electrónico pidiéndoles que hagan esto.",
|
||||
"unlink_user_explanation": "Estás a punto de eliminar la opción de inicio de sesión SSO para <0>__email__</0>. Esto los obligará a volver a autenticar su cuenta Overleaf con su IdP. Recibirán un correo electrónico pidiéndoles que hagan esto.",
|
||||
"unlink_users": "Desvincular usuarios",
|
||||
"unlink_warning_reference": "Aviso: al desvincular tu cuenta de este proveedor no podrás importar referencias en tus proyectos.",
|
||||
"unlinking": "Desvincular",
|
||||
@@ -2976,12 +2976,12 @@
|
||||
"url_to_fetch_the_file_from": "URL para recuperar el archivo",
|
||||
"us_gov_banner_fedramp": "<0>Now FedRAMP® authorized for LI-SaaS: </0>Suscripción al grupo Pro de Overleaf. ¿Necesita una implementación aislada? También ofrecemos una solución local. Hable con nuestro equipo del gobierno federal de EE. UU.",
|
||||
"us_gov_banner_government_purchasing": "<0>Get __appName__ for US federal government. </0>Avance más rápido a través de las adquisiciones con nuestras opciones de compra personalizadas. Habla con nuestro equipo de gobierno.",
|
||||
"us_gov_banner_small_business_reseller": "<0>Easy procurement for US federal government. </0>Nos asociamos con revendedores de pequeñas empresas para ayudarlo a comprar planes organizacionales al dorso. Habla con nuestro equipo de gobierno.",
|
||||
"us_gov_banner_small_business_reseller": "<0>Easy procurement for US federal government. </0>Nos asociamos con revendedores de pequeñas empresas para ayudarlo a comprar Overleaf planes organizacionales. Habla con nuestro equipo de gobierno.",
|
||||
"usage_limit_reached": "Límite de uso alcanzado",
|
||||
"usage_metrics": "Métricas de uso",
|
||||
"use_a_different_email": "Utilice un <0>different email</0>.",
|
||||
"use_a_different_password": "Por favor use una contraseña diferente",
|
||||
"use_saml_metadata_to_configure_sso_with_idp": "Utilice los metadatos SAML al dorso para configurar SSO con su proveedor de identidad.",
|
||||
"use_saml_metadata_to_configure_sso_with_idp": "Utilice los metadatos Overleaf SAML para configurar SSO con su proveedor de identidad.",
|
||||
"use_the_shortcut_key_to_paste": "Utilice la tecla de acceso directo para pegar",
|
||||
"use_your_own_machine": "Utilice su propia máquina, con su propia configuración",
|
||||
"used_latex_before": "¿Qué tan familiarizado estás con LaTeX?",
|
||||
@@ -3007,7 +3007,7 @@
|
||||
"user_personal_access_tokens": "Tokens de acceso personal",
|
||||
"user_sessions": "Sesiones de usuario",
|
||||
"user_wants_you_to_see_project": "__username__ quiere que veas __projectname__",
|
||||
"using_latex": "Usando látex",
|
||||
"using_latex": "Usando LaTeX",
|
||||
"using_premium_features": "Usando funciones premium",
|
||||
"using_the_overleaf_editor": "Usando el editor __appName__",
|
||||
"using_writefull": "Usando escritura completa",
|
||||
@@ -3099,15 +3099,15 @@
|
||||
"what_happens_when_sso_is_enabled": "¿Qué ocurre cuando se activa el SSO?",
|
||||
"what_should_we_call_you": "¿Cómo deberíamos llamarte?",
|
||||
"what_would_you_like_to_do": "¿Qué te gustaría hacer?",
|
||||
"when_you_join_labs": "Cuando te unes a Labs, puedes elegir de qué experimentos quieres formar parte. Una vez que haya hecho eso, podrá usar el dorso normalmente, pero verá las funciones de los laboratorios marcadas con esta insignia:",
|
||||
"when_you_join_labs": "Cuando te unes a Labs, puedes elegir de qué experimentos quieres formar parte. Una vez que haya hecho eso, puede usar Overleaf normalmente, pero verá las funciones de los laboratorios marcadas con esta insignia:",
|
||||
"when_you_tick_the_include_caption_box": "Cuando marca la casilla \"Incluir título\", la imagen se insertará en su documento con un título de marcador de posición. Para editarlo, simplemente seleccione el texto del marcador de posición y escriba para reemplazarlo con el suyo.",
|
||||
"who_can_be_invited_to_group_members_projects": "¿Quién puede ser invitado a los proyectos de los miembros del grupo?",
|
||||
"why_latex": "¿Por qué látex?",
|
||||
"why_latex": "¿Por qué LaTeX?",
|
||||
"why_not_pause_instead": "En lugar de eso, haz una pausa para continuar donde lo dejaste.",
|
||||
"wide": "ancho",
|
||||
"will_lose_edit_access_on_date": "Perderá el acceso de edición el __date__",
|
||||
"will_need_to_log_out_from_and_in_with": "Deberá <b>cerrar sesión</b> en su cuenta <b>__email1__</b> y luego iniciar sesión con <b>__email2__</b>.",
|
||||
"with_overleaf_subscription_you_also_get": "Con una suscripción al dorso también obtienes",
|
||||
"with_overleaf_subscription_you_also_get": "Con una suscripción Overleaf también obtienes",
|
||||
"word_count": "Conteo de palabras",
|
||||
"word_count_lower": "recuento de palabras",
|
||||
"words": "palabras",
|
||||
@@ -3115,7 +3115,7 @@
|
||||
"work_offline": "Trabajar sin conexión",
|
||||
"work_offline_pull_to_overleaf": "Trabaje sin conexión y luego acceda a __appName__",
|
||||
"work_or_university_sso": "Inicio de sesión único (SSO) del trabajo/universidad",
|
||||
"work_with_non_overleaf_users": "Trabajar con usuarios que no están al dorso",
|
||||
"work_with_non_overleaf_users": "Trabajar con usuarios que no sean Overleaf",
|
||||
"work_with_other_github_users": "Trabajar con otros usuarios de GitHub",
|
||||
"write_faster_smarter_with_research_ready_ai": "Escriba más rápido, más inteligente y con confianza con IA lista para la investigación",
|
||||
"writefull": "Escrito",
|
||||
@@ -3150,7 +3150,7 @@
|
||||
"you_are_on_a_paid_plan_contact_support_to_find_out_more": "Estás en un plan pago __appName__. <0>Contact Support</0> para saber más.",
|
||||
"you_are_on_x_plan_as_a_confirmed_member_of_institution_y": "Estás en nuestro plan <0>__planName__</0> como <1>confirmed member</1> de <1>__institutionName__</1>",
|
||||
"you_are_on_x_plan_as_member_of_group_subscription_y_administered_by_z": "Estás en nuestro plan <0>__planName__</0> como <1>member</1> de la suscripción grupal <1>__groupName__</1> administrada por <1>__adminEmail__</1>",
|
||||
"you_are_using_our_free_plan": "Estás usando nuestro plan gratuito. Actualice para obtener la mejor experiencia al dorso",
|
||||
"you_are_using_our_free_plan": "Estás usando nuestro plan gratuito. Actualice para obtener la mejor experiencia Overleaf",
|
||||
"you_can_also_choose_to_view_anonymously_or_leave_the_project": "También puedes elegir <0>view anonymously</0> (perderás el acceso de edición) o <1>leave the project</1>.",
|
||||
"you_can_also_right_click_a_file_to_set_it_as_main": "También puede hacer clic derecho en un archivo para configurarlo como principal.",
|
||||
"you_can_buy_this_plan_but_not_as_a_trial": "Puede comprar este plan, pero no como prueba, ya que ya completó una prueba antes.",
|
||||
|
||||
@@ -0,0 +1,216 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Retranslate only the keys that have validation issues, this time protecting
|
||||
brand names (Overleaf, Verso, LaTeX, etc.) as tokens so Google never touches them.
|
||||
|
||||
Usage:
|
||||
python3 fix_translations.py [--lang fr,de,it,es]
|
||||
"""
|
||||
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
import time
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
from deep_translator import GoogleTranslator
|
||||
|
||||
LOCALES_DIR = Path(__file__).parent
|
||||
EN_FILE = LOCALES_DIR / "en.json"
|
||||
|
||||
LANG_NAMES = {"fr": "French", "de": "German", "it": "Italian", "es": "Spanish"}
|
||||
|
||||
# Brand / technical terms that must survive translation verbatim.
|
||||
# Order matters: longer terms first so "LaTeX" is protected before "TeX".
|
||||
BRAND_TERMS = [
|
||||
"Overleaf", "Verso", "LaTeX", "BibTeX", "TeXGPT", "TeX",
|
||||
"Typst", "Quarto", "PDF", "GitHub", "Google", "ORCID", "DOI",
|
||||
"SAML", "SSO", "OAuth",
|
||||
]
|
||||
|
||||
# Matches __var__ tokens and <N>…</N> / <N/> React-Trans tags
|
||||
INTERP_RE = re.compile(r'__\w+__|<\d+>.*?</\d+>|<\d+\s*/>', re.DOTALL)
|
||||
|
||||
# Protected terms that must not appear translated in the output
|
||||
PROTECTED_RE = re.compile(
|
||||
r'\b(?:' + '|'.join(re.escape(t) for t in BRAND_TERMS) + r')\b'
|
||||
)
|
||||
|
||||
SEP = "\n||||\n"
|
||||
MAX_CHARS = 4500
|
||||
|
||||
|
||||
def tokenise(text: str) -> tuple[str, list[str]]:
|
||||
originals: list[str] = []
|
||||
|
||||
# Protect <N>…</N> tags and __placeholders__ FIRST so that brand terms
|
||||
# inside React-Trans tags are captured as part of the tag token, not separately.
|
||||
# (Doing brand terms first causes nesting: @@0@@ inside originals[1], which
|
||||
# then can't be restored after originals[1] is spliced back into the text.)
|
||||
def sub_interp(m):
|
||||
idx = len(originals)
|
||||
originals.append(m.group(0))
|
||||
return f"@@{idx}@@"
|
||||
|
||||
text = INTERP_RE.sub(sub_interp, text)
|
||||
|
||||
# Now protect any brand terms still visible in the masked text
|
||||
def sub_brand(m):
|
||||
idx = len(originals)
|
||||
originals.append(m.group(0))
|
||||
return f"@@{idx}@@"
|
||||
|
||||
text = PROTECTED_RE.sub(sub_brand, text)
|
||||
return text, originals
|
||||
|
||||
|
||||
def restore(text: str, originals: list[str]) -> str:
|
||||
for i, orig in enumerate(originals):
|
||||
text = text.replace(f"@@{i}@@", orig)
|
||||
return text
|
||||
|
||||
|
||||
def _call_google(text: str, target: str) -> str:
|
||||
try:
|
||||
return GoogleTranslator(source="en", target=target).translate(text)
|
||||
except Exception as e:
|
||||
print(f"\n [retry] {type(e).__name__} — waiting 6s…", file=sys.stderr)
|
||||
time.sleep(6)
|
||||
return GoogleTranslator(source="en", target=target).translate(text)
|
||||
|
||||
|
||||
def translate_keys(keys_vals: list[tuple[str, str]], target: str) -> list[str]:
|
||||
"""Translate (key, en_value) pairs with full token protection."""
|
||||
masked_all, orig_lists = [], []
|
||||
for _, v in keys_vals:
|
||||
m, origs = tokenise(v)
|
||||
masked_all.append(m)
|
||||
orig_lists.append(origs)
|
||||
|
||||
results: list[str] = []
|
||||
chunk_m, chunk_o = [], []
|
||||
chunk_chars = 0
|
||||
|
||||
def flush_chunk():
|
||||
if not chunk_m:
|
||||
return
|
||||
if len(chunk_m) == 1:
|
||||
t = _call_google(chunk_m[0], target)
|
||||
results.append(restore(t.strip(), chunk_o[0]))
|
||||
else:
|
||||
joined = SEP.join(chunk_m)
|
||||
translated = _call_google(joined, target)
|
||||
parts = translated.split("||||")
|
||||
if len(parts) == len(chunk_m):
|
||||
for p, o in zip(parts, chunk_o):
|
||||
results.append(restore(p.strip(), o))
|
||||
else:
|
||||
print(f"\n [warn] split mismatch, one-by-one fallback", file=sys.stderr)
|
||||
for m, o in zip(chunk_m, chunk_o):
|
||||
t = _call_google(m, target)
|
||||
results.append(restore(t.strip(), o))
|
||||
time.sleep(0.4)
|
||||
|
||||
for m, o in zip(masked_all, orig_lists):
|
||||
entry_chars = len(m) + len(SEP)
|
||||
if chunk_m and chunk_chars + entry_chars > MAX_CHARS:
|
||||
flush_chunk()
|
||||
chunk_m.clear(); chunk_o.clear(); chunk_chars = 0
|
||||
time.sleep(0.6)
|
||||
chunk_m.append(m); chunk_o.append(o); chunk_chars += entry_chars
|
||||
|
||||
flush_chunk()
|
||||
return results
|
||||
|
||||
|
||||
# ── Validation helpers (same logic as validate_translations.py) ────────────
|
||||
|
||||
PLACEHOLDER_RE = re.compile(r'__\w+__')
|
||||
TRANS_TAG_RE = re.compile(r'<\d+')
|
||||
|
||||
def has_structural_error(en_val: str, loc_val: str) -> bool:
|
||||
en_ph = set(PLACEHOLDER_RE.findall(en_val))
|
||||
loc_ph = set(PLACEHOLDER_RE.findall(loc_val))
|
||||
en_tags = sorted(re.findall(r'<(\d+)', en_val))
|
||||
loc_tags = sorted(re.findall(r'<(\d+)', loc_val))
|
||||
return en_ph != loc_ph or en_tags != loc_tags
|
||||
|
||||
def has_brand_error(en_val: str, loc_val: str) -> bool:
|
||||
for term in BRAND_TERMS:
|
||||
if term in en_val and term not in loc_val:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def fix_language(lang: str, en: dict) -> int:
|
||||
target_file = LOCALES_DIR / f"{lang}.json"
|
||||
with open(target_file, encoding="utf-8") as f:
|
||||
loc: dict = json.load(f)
|
||||
|
||||
# Collect keys that need fixing
|
||||
to_fix_brand = []
|
||||
to_fallback = [] # structural errors: fall back to English
|
||||
|
||||
for key, en_val in en.items():
|
||||
loc_val = loc.get(key, "")
|
||||
if not loc_val:
|
||||
continue
|
||||
structural = has_structural_error(en_val, loc_val)
|
||||
brand = has_brand_error(en_val, loc_val)
|
||||
if structural:
|
||||
to_fallback.append(key)
|
||||
elif brand:
|
||||
to_fix_brand.append(key)
|
||||
|
||||
print(f" {lang}: {len(to_fix_brand)} brand-term fixes + {len(to_fallback)} structural fallbacks")
|
||||
|
||||
# 1. Structural errors → fall back to English (safe, preserves all tokens)
|
||||
for key in to_fallback:
|
||||
loc[key] = en[key]
|
||||
|
||||
# 2. Brand-term errors → retranslate with full token protection
|
||||
if to_fix_brand:
|
||||
pairs = [(k, en[k]) for k in to_fix_brand]
|
||||
BATCH = 60
|
||||
for i in range(0, len(pairs), BATCH):
|
||||
batch = pairs[i:i + BATCH]
|
||||
end = min(i + BATCH, len(pairs))
|
||||
print(f" retranslating {i+1}–{end} / {len(pairs)}…", end=" ", flush=True)
|
||||
translations = translate_keys(batch, lang)
|
||||
for (key, _), translation in zip(batch, translations):
|
||||
loc[key] = translation
|
||||
print("done")
|
||||
time.sleep(1.0)
|
||||
|
||||
# Save
|
||||
sorted_loc = dict(sorted(loc.items()))
|
||||
with open(target_file, "w", encoding="utf-8") as f:
|
||||
json.dump(sorted_loc, f, ensure_ascii=False, indent=2)
|
||||
f.write("\n")
|
||||
|
||||
return len(to_fix_brand) + len(to_fallback)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--lang", default="fr,de,it,es")
|
||||
args = parser.parse_args()
|
||||
langs = [l.strip() for l in args.lang.split(",")]
|
||||
|
||||
with open(EN_FILE, encoding="utf-8") as f:
|
||||
en = json.load(f)
|
||||
print(f"Source: en.json — {len(en)} keys\n")
|
||||
|
||||
total = 0
|
||||
for lang in langs:
|
||||
if lang not in LANG_NAMES:
|
||||
continue
|
||||
print(f"── {lang} ({LANG_NAMES[lang]}) ──────────────────────────────")
|
||||
total += fix_language(lang, en)
|
||||
print()
|
||||
|
||||
print(f"Fixed {total} key(s) across {len(langs)} language(s).")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -16,7 +16,7 @@
|
||||
"Terms": "Conditions",
|
||||
"Universities": "Universités",
|
||||
"a_custom_size_has_been_used_in_the_latex_code": "Une taille personnalisée a été définie dans le code LaTeX.",
|
||||
"a_file_with_that_name_already_exists_and_will_be_overriden": "Il existe déjà un fichier du même nom. Ce fichier va sera écrasé.",
|
||||
"a_file_with_that_name_already_exists_and_will_be_overriden": "Il existe déjà un fichier du même nom. Ce fichier sera écrasé.",
|
||||
"a_great_way_to_start_writing_research_papers": "Une excellente façon de commencer à rédiger des articles de recherche.",
|
||||
"a_more_comprehensive_list_of_keyboard_shortcuts": "Une liste de raccourcis clavier plus complète est disponible dans <0>ce modèle de projet __appName__</0>",
|
||||
"a_new_reference_was_added": "Une nouvelle référence a été ajoutée",
|
||||
@@ -25,7 +25,7 @@
|
||||
"a_new_reference_was_added_to_file": "Une nouvelle référence a été ajoutée à <0>__filePath__</0>",
|
||||
"a_new_reference_was_added_to_file_from_library": "Une nouvelle référence a été ajoutée à <0>__filePath__</0> depuis votre bibliothèque",
|
||||
"a_new_reference_was_added_to_file_from_provider": "Une nouvelle référence a été ajoutée à <0>__filePath__</0> à partir de __provider__",
|
||||
"a_new_version_of_the_rolling_texlive_build_released": "Une nouvelle version de la version Rolling TeX Live a été publiée.",
|
||||
"a_new_version_of_the_rolling_texlive_build_released": "Une nouvelle version du build Rolling TeX Live a été publiée.",
|
||||
"about": "À propos",
|
||||
"about_to_archive_projects": "Vous êtes sur le point d’archiver les projets suivants :",
|
||||
"about_to_delete_cert": "Vous allez supprimer le certificat suivant :",
|
||||
@@ -45,7 +45,7 @@
|
||||
"accept_and_continue": "Accepter et continuer",
|
||||
"accept_change": "Accepter les changements",
|
||||
"accept_change_error_description": "Une erreur s’est produite lors de l’acceptation d’un suivi de modification. Veuillez réessayer dans quelques instants.",
|
||||
"accept_change_error_title": "Accepter l'erreur de modification",
|
||||
"accept_change_error_title": "Erreur d'acceptation des modifications",
|
||||
"accept_invitation": "Accepter l’invitation",
|
||||
"accept_or_reject_individual_edits": "Accepter ou refuser des modifications individuelles",
|
||||
"accept_selected_changes": "Accepter les modifications sélectionnées",
|
||||
@@ -62,7 +62,7 @@
|
||||
"account_associated_with_x": "Votre compte est associé à __companyName__.",
|
||||
"account_billed_manually": "Compte facturé manuellement",
|
||||
"account_has_been_link_to_group_account": "Votre compte __appName__ sur <b>__email__</b> a été associé à votre compte <b>__institutionName__</b>.",
|
||||
"account_has_been_link_to_institution_account": "Votre compte __appName__ en <b>__email__</b> a été lié à votre compte institutionnel <b>__institutionName__</b>.",
|
||||
"account_has_been_link_to_institution_account": "Votre compte __appName__ sur <b>__email__</b> a été lié à votre compte institutionnel <b>__institutionName__</b>.",
|
||||
"account_has_past_due_invoice_change_plan_warning": "Votre compte présente un arriéré de paiement. Vous ne pourrez pas changer d’offre tant que votre situation ne sera pas régularisée.",
|
||||
"account_help": "Compte et aide",
|
||||
"account_linking": "Liaison des comptes",
|
||||
@@ -317,7 +317,7 @@
|
||||
"by_registering_you_agree_to_our_terms_of_service": "En vous inscrivant, vous acceptez nos <0>terms of service</0> et <1>privacy notice</1>.",
|
||||
"by_sharing_link": "En partageant le lien",
|
||||
"by_subscribing_you_agree_to_our_terms_of_service": "En vous inscrivant, vous acceptez nos <0>conditions d’utilisation</0>.",
|
||||
"can_link_institution_email_acct_to_institution_acct": "Vous pouvez maintenant lier votre compte <b>__appName__</b> en <b>__email__</b> à votre compte institutionnel <b>__institutionName__</b>.",
|
||||
"can_link_institution_email_acct_to_institution_acct": "Vous pouvez maintenant lier votre compte <b>__appName__</b> sur <b>__email__</b> à votre compte institutionnel <b>__institutionName__</b>.",
|
||||
"can_link_institution_email_by_clicking": "Vous pouvez lier votre compte <b>__appName__</b> <b>__email__</b> à votre compte <b>__institutionName__</b> en cliquant <b>__clickText__</b>.",
|
||||
"can_link_institution_email_to_login": "Vous pouvez lier votre compte <b>__appName__</b> <b>__email__</b> à votre compte <b>__institutionName__</b>, ce qui vous permettra de vous connecter à <b>__appName__</b> via le portail de votre établissement.",
|
||||
"can_link_your_institution_acct_2": "Vous pouvez maintenant <0>lier</0> votre compte <0>__appName__</0> à votre compte instititionnel <0>__institutionName__</0>.",
|
||||
@@ -476,7 +476,7 @@
|
||||
"complete": "Compléter",
|
||||
"compliance": "Conformité",
|
||||
"compromised_password": "Mot de passe compromis",
|
||||
"configure_sso": "Configurer l'authentification unique",
|
||||
"configure_sso": "Configurer SSO",
|
||||
"configured": "Configuré",
|
||||
"confirm": "Confirmer",
|
||||
"confirm_accept_selected_changes": "Êtes-vous sûr de vouloir accepter la modification sélectionnée ?",
|
||||
@@ -639,7 +639,7 @@
|
||||
"disable_equation_preview_confirm": "Cela désactivera l'aperçu des équations pour vous dans tous les projets.",
|
||||
"disable_equation_preview_enable_in_settings": "Vous pouvez le réactiver dans <b>Paramètres</b>.",
|
||||
"disable_single_sign_on": "Désactiver l'authentification unique",
|
||||
"disable_sso": "Désactiver l'authentification unique",
|
||||
"disable_sso": "Désactiver SSO",
|
||||
"disable_stop_on_first_error": "Désactiver “Arrêter à la première erreur”",
|
||||
"disabled": "Désactivé",
|
||||
"disabling": "Désactivation",
|
||||
@@ -782,7 +782,7 @@
|
||||
"email_address": "Adresse e-mail",
|
||||
"email_address_is_invalid": "Adresse email invalide",
|
||||
"email_already_associated_with": "L’adresse courriel <b>__email1__</b> est déjà associée avec le compte <b>__appName__</b> <b>__email2__</b>.",
|
||||
"email_already_registered": "Cette adresse courriel est déjà utilisée",
|
||||
"email_already_registered": "Cette adresse e-mail est déjà associée à un autre compte Verso.",
|
||||
"email_already_registered_secondary": "Cette adresse courriel est déjà utilisée en tant qu’adresse secondaire",
|
||||
"email_already_registered_sso": "Cet email est déjà enregistré. Veuillez vous connecter à votre compte d’une autre manière et lier votre compte au nouveau fournisseur via vos paramètres de compte.",
|
||||
"email_attribute": "Attribut d'e-mail",
|
||||
@@ -808,7 +808,7 @@
|
||||
"enable_ai_features": "Activer les fonctionnalités d'IA",
|
||||
"enable_managed_users": "Activer les utilisateurs gérés",
|
||||
"enable_single_sign_on": "Activer l'authentification unique",
|
||||
"enable_sso": "Activer l'authentification unique",
|
||||
"enable_sso": "Activer SSO",
|
||||
"enabled": "Activé",
|
||||
"enables_real_time_syntax_checking_in_the_editor": "Permet la vérification de la syntaxe en temps réel dans l'éditeur",
|
||||
"enabling": "Activation",
|
||||
@@ -1024,7 +1024,7 @@
|
||||
"get_ready_for_overleaf_standard": "Préparez-vous à une collaboration améliorée, avec un accès accru à l’IA et jusqu’à 10 collaborateurs par projet.",
|
||||
"get_real_time_track_changes": "Obtenez un suivi des modifications en temps réel",
|
||||
"get_standard": "Obtenez la norme",
|
||||
"get_started_with_latex": "Commencez avec LaTeX au verso",
|
||||
"get_started_with_latex": "Commencez avec LaTeX dans Overleaf",
|
||||
"get_student": "Obtenir un étudiant",
|
||||
"get_the_best_overleaf_experience": "Obtenez la meilleure expérience Overleaf",
|
||||
"get_your_hands_on_the_ultimate_research_writing_ai_assistant": "Mettez la main sur l’assistant IA ultime pour la rédaction de recherches.",
|
||||
@@ -1092,7 +1092,7 @@
|
||||
"go_to_first_page": "Aller à la première page",
|
||||
"go_to_last_page": "Aller à la dernière page",
|
||||
"go_to_next_page": "Aller à la page suivante",
|
||||
"go_to_overleaf": "Aller au verso",
|
||||
"go_to_overleaf": "Accédez à Overleaf",
|
||||
"go_to_page_x": "Aller à la page __page__",
|
||||
"go_to_pdf_location_in_code": "Aller dans le code à l’emplacement du PDF",
|
||||
"go_to_pdf_location_in_code_action": "Accédez à l'emplacement PDF dans le code",
|
||||
@@ -1309,7 +1309,7 @@
|
||||
"invalid_file_name": "Nom de fichier invalide",
|
||||
"invalid_filename": "Échec de l’envoi : assurez-vous que le nom du fichier ne contienne pas de caractères spéciaux, de blancs au début ou à la fin ou plus de __nameLimit__ caractères",
|
||||
"invalid_import_type": "Type d'importation invalide",
|
||||
"invalid_institutional_email": "Le service d’authentification central de votre établissement a indiqué que votre adresse courriel était __email__, mais le domaine de cette adresse n’appartient pas à ceux que nous reconnaissons pour cet établissement. Il est peut-être possible de modifier votre adresse courriel principale depuis le profil utilisateur de votre établissement pour qu’elle soit dans un domaine reconnu. Veuillez contacter votre département informatique si vous avez des questions.",
|
||||
"invalid_institutional_email": "Le service SSO de votre institution a renvoyé votre adresse e-mail sous la forme __email__, ce qui est un domaine inattendu que nous ne reconnaissons pas comme lui appartenant. Vous pourrez peut-être changer votre adresse e-mail principale via votre profil utilisateur de votre institution en une adresse du domaine de votre institution. Veuillez contacter votre service informatique si vous avez des questions.",
|
||||
"invalid_organization_email": "Le service SSO de votre organisation a renvoyé votre adresse e-mail sous la forme <0>__institutionEmail__</0>, ce qui est un domaine inattendu que nous ne reconnaissons pas comme lui appartenant. S'il vous plaît <1>contact us</1> si vous pensez qu'il s'agit d'une erreur.",
|
||||
"invalid_password": "Mot de passe invalide.",
|
||||
"invalid_password_contains_email": "Le mot de passe ne peut pas contenir des parties de l'adresse e-mail.",
|
||||
@@ -1831,18 +1831,18 @@
|
||||
"over": "Plus de",
|
||||
"over_n_users_at_research_institutions_and_business": "Plus de __userCountMillion__ millions d'utilisateurs dans des instituts de recherche et des entreprises du monde entier adorent __appName__",
|
||||
"overall_theme": "Apparence générale",
|
||||
"overleaf": "Au verso",
|
||||
"overleaf_ai": "IA au verso",
|
||||
"overleaf": "Overleaf",
|
||||
"overleaf_ai": "Overleaf IA",
|
||||
"overleaf_ai_info": "Outils d'IA intégrés qui prennent en charge les flux de travail d'écriture, d'édition et LaTeX. Un usage équitable s’applique.",
|
||||
"overleaf_group_plans": "Régimes collectifs au verso",
|
||||
"overleaf_history_system": "Système d'historique au verso",
|
||||
"overleaf_individual_plans": "Au verso des plans individuels",
|
||||
"overleaf_group_plans": "Overleaf forfaits collectifs",
|
||||
"overleaf_history_system": "Overleaf Système d'historique",
|
||||
"overleaf_individual_plans": "Overleaf forfaits individuels",
|
||||
"overleaf_is_a_ds_product": "Overleaf est un produit de science numérique.",
|
||||
"overleaf_is_easy_to_use": "Le verso est facile à utiliser.",
|
||||
"overleaf_labs": "Laboratoires au verso",
|
||||
"overleaf_learning_center": "Centre d'apprentissage au verso",
|
||||
"overleaf_logo": "Logo au verso",
|
||||
"overleaf_multi_license_plans": "Au verso des forfaits multi-licences",
|
||||
"overleaf_is_easy_to_use": "Overleaf est facile à utiliser.",
|
||||
"overleaf_labs": "Overleaf Laboratoires",
|
||||
"overleaf_learning_center": "Overleaf centre d'apprentissage",
|
||||
"overleaf_logo": "Overleaflogo",
|
||||
"overleaf_multi_license_plans": "Overleaf forfaits multi-licences",
|
||||
"overleaf_plans_and_pricing": "au verso plans et tarifs",
|
||||
"overleaf_template_gallery": "galerie de modèles au verso",
|
||||
"overleafs_functionality_meets_my_needs": "Les fonctionnalités d’Overleaf répondent à mes besoins.",
|
||||
@@ -2203,7 +2203,7 @@
|
||||
"repository_visibility": "Visibilité du référentiel",
|
||||
"republish": "Publier à nouveau",
|
||||
"request_new_password_reset_email": "Demander un nouvel e-mail de réinitialisation de mot de passe",
|
||||
"request_overleaf_common": "Demander au verso Commons",
|
||||
"request_overleaf_common": "Demande Overleaf Commons",
|
||||
"request_password_reset_to_reconfirm": "Faites une demande de modification du mot de passe pour revalider",
|
||||
"request_reconfirmation_email": "Demander un courriel de confirmation",
|
||||
"request_sent_thank_you": "Message envoyé ! Notre équipe va l’examiner et vous répondre par courriel.",
|
||||
@@ -2268,7 +2268,7 @@
|
||||
"saml_auth_error": "Désolé, votre fournisseur d'identité a répondu avec une erreur. Veuillez contacter votre administrateur pour plus d'informations.",
|
||||
"saml_authentication_required_error": "Les autres méthodes de connexion ont été désactivées par l'administrateur de votre groupe. Veuillez utiliser la connexion SSO de votre groupe.",
|
||||
"saml_commons_reconfirmation_unable_to_find_user": "Désolé, nous n'avons pas pu confirmer votre affiliation. Cela peut être dû à une modification des données SSO qui nous sont envoyées par votre établissement. Veuillez <0>contact us</0> pour obtenir de l'aide pour relier votre compte Overleaf au SSO de votre institution.",
|
||||
"saml_commons_unavailable": "L’authentification unique de l’établissement n’est actuellement pas disponible. Pour plus de détails, veuillez consulter <0>__linkText__</0>.",
|
||||
"saml_commons_unavailable": "L'établissement SSO est actuellement indisponible. Pour plus de détails, veuillez consulter <0>__linkText__</0>.",
|
||||
"saml_create_admin_instructions": "Choisissez une adresse courriel pour le compte __appName__ initial. Celle-ci doit correspondre à un compte dans le système SAML. Vous serez ensuite invité à vous connecter avec ce compte.",
|
||||
"saml_email_not_in_account_error_managed_users_2": "Votre adresse e-mail <0>__userEmail__</0> n'a pas été reconnue. Le fournisseur d’identité de votre organisation a renvoyé <1>__samlEmail__</1>. Vous devrez vous déconnecter de <0>__userEmail__</0> et utiliser <1>__samlEmail__</1> pour créer un compte via SSO. Vous pouvez <2>transfer your existing projects</2> au nouveau compte.",
|
||||
"saml_email_not_recognized_error": "Cette adresse e-mail n'est pas configurée pour SSO. Veuillez le vérifier et réessayer ou contacter votre administrateur.",
|
||||
@@ -2280,7 +2280,7 @@
|
||||
"saml_login_identity_mismatch_error": "Désolé, vous essayez de vous connecter à Overleaf en tant que __email__ mais l'identité renvoyée par votre fournisseur d'identité n'est pas la bonne pour ce compte Overleaf.",
|
||||
"saml_login_identity_not_found_error": "Désolé, nous n'avons pas pu trouver de compte Overleaf configuré pour l'authentification unique avec ce fournisseur d'identité.",
|
||||
"saml_login_requested_email_not_confirmed_error": "Désolé, l'adresse e-mail que vous avez demandé d'utiliser pour la connexion n'a pas été confirmée et nous ne pouvons pas finaliser votre demande de connexion SSO. Si vous disposez d'une autre méthode pour vous connecter, veuillez vous connecter, puis confirmer votre adresse e-mail. Veuillez <0>contact us</0> si vous avez besoin d'aide.",
|
||||
"saml_metadata": "Métadonnées SAML au verso",
|
||||
"saml_metadata": "Overleaf SAML Métadonnées",
|
||||
"saml_missing_signature_error": "Désolé, les informations reçues de votre fournisseur d'identité ne sont pas signées (les signatures de réponse et d'assertion sont requises). Veuillez contacter votre administrateur pour plus d'informations.",
|
||||
"saml_missing_user_attribute": "Un problème est survenu avec votre authentification unique. Votre organisation n'a pas fourni les informations requises pour finaliser l'authentification. Veuillez contacter votre administrateur pour plus d'informations.",
|
||||
"saml_request_denied_error": "Désolé, votre fournisseur d'identité a refusé la demande de vous authentifier. Veuillez contacter votre administrateur pour plus d'informations.",
|
||||
@@ -2399,7 +2399,7 @@
|
||||
"set_new_password": "Changer le mot de passe",
|
||||
"set_password": "Changement de mot de passe",
|
||||
"set_up_single_sign_on": "Configurer l'authentification unique (SSO)",
|
||||
"set_up_sso": "Configurer l'authentification unique",
|
||||
"set_up_sso": "Configurer SSO",
|
||||
"set_up_sso_for_your_account": "Configurer le SSO pour votre compte",
|
||||
"settings": "Réglages",
|
||||
"setup_another_account_under_a_personal_email_address": "Créez un autre compte Overleaf sous une adresse e-mail personnelle.",
|
||||
@@ -2497,10 +2497,10 @@
|
||||
"sso_config_prop_help_last_name": "L'attribut SAML qui spécifie le nom de famille de l'utilisateur",
|
||||
"sso_config_prop_help_redirect_url": "L'URL de redirection d'authentification unique fournie par votre fournisseur d'identité (parfois appelée emplacement de redirection HTTP du service d'authentification unique)",
|
||||
"sso_config_prop_help_user_id": "L'attribut SAML fourni par votre IdP qui identifie chaque utilisateur",
|
||||
"sso_configuration": "Configuration de l'authentification unique",
|
||||
"sso_configuration": "SSOconfiguration",
|
||||
"sso_configuration_not_finalized": "Votre configuration n'est pas finalisée.",
|
||||
"sso_configuration_saved": "La configuration SSO a été enregistrée",
|
||||
"sso_disabled_by_group_admin": "L'authentification unique a été désactivée par l'administrateur de votre groupe. Vous pouvez toujours vous connecter et utiliser Overleaf comme vous le feriez normalement.",
|
||||
"sso_disabled_by_group_admin": "SSO a été désactivé par l'administrateur de votre groupe. Vous pouvez toujours vous connecter et utiliser Overleaf comme vous le feriez normalement.",
|
||||
"sso_error_audience_mismatch": "L'ID d'entité du fournisseur de services configuré dans votre IdP ne correspond pas à celui fourni dans nos métadonnées. Veuillez contacter votre service informatique pour plus d'informations.",
|
||||
"sso_error_idp_error": "Votre fournisseur d'identité a répondu avec une erreur.",
|
||||
"sso_error_invalid_external_user_id": "L'attribut SAML fourni par votre IdP qui identifie de manière unique votre utilisateur a un format non valide, une chaîne est attendue. Attribut : <0>__expecting__</0>",
|
||||
@@ -2515,10 +2515,10 @@
|
||||
"sso_feature_explanation": "SAML SSO (authentification unique) améliore la sécurité et rationalise les connexions",
|
||||
"sso_here_is_the_data_we_received": "Voici les données que nous avons reçues dans la réponse SAML :",
|
||||
"sso_integration": "Intégration SSO",
|
||||
"sso_is_disabled": "L'authentification unique est désactivée",
|
||||
"sso_is_disabled": "SSO est désactivé",
|
||||
"sso_is_disabled_explanation_1": "Les membres du groupe ne pourront pas se connecter via SSO.",
|
||||
"sso_is_disabled_explanation_2": "Tous les membres du groupe auront besoin d'un nom d'utilisateur et d'un mot de passe pour se connecter à __appName__.",
|
||||
"sso_is_enabled": "L'authentification unique est activée",
|
||||
"sso_is_enabled": "SSO est activé",
|
||||
"sso_is_enabled_explanation_1": "Les membres du groupe pourront <0>only</0> se connecter via SSO après avoir lié leurs comptes à votre IdP.",
|
||||
"sso_is_enabled_explanation_1_sso_only": "Les membres du groupe auront la possibilité de se connecter via SSO.",
|
||||
"sso_is_enabled_explanation_2": "En cas de problème avec la configuration, vous seul (en tant qu'administrateur du groupe) pourrez désactiver le SSO.",
|
||||
@@ -2590,7 +2590,7 @@
|
||||
"subscription_will_remain_active_until_end_of_billing_period_x": "Votre abonnement restera actif jusqu'à la fin de votre période de facturation, <0>__terminationDate__</0>.",
|
||||
"subscription_will_remain_active_until_end_of_trial_period_x": "Votre abonnement restera actif jusqu'à la fin de votre période d'essai, <0>__terminationDate__</0>.",
|
||||
"success_sso_set_up": "Succès! L’authentification unique est configurée pour vous.",
|
||||
"success_youve_successfully_joined_group": "Vous avez rejoint le groupe <0>__groupName__</0>. L'authentification unique est activée.",
|
||||
"success_youve_successfully_joined_group": "Vous avez rejoint le groupe <0>__groupName__</0>. SSO est activé.",
|
||||
"suggest_a_different_fix": "Suggérer une solution différente",
|
||||
"suggest_edits": "Suggérer des modifications",
|
||||
"suggest_fix": "Suggérer un correctif",
|
||||
@@ -2672,7 +2672,7 @@
|
||||
"thank_you": "Merci",
|
||||
"thank_you_email_confirmed": "Merci, votre email est maintenant confirmé",
|
||||
"thank_you_exclamation": "Merci !",
|
||||
"thank_you_for_being_part_of_our_beta_program": "Merci de votre participation au programme de bêta, qui vous permet d’accéder en avant-première aux nouvelles fonctionnalités et de nous aider à mieux comprendre vos besoins",
|
||||
"thank_you_for_being_part_of_our_beta_program": "Thank you for being part of our beta program, where you can have <0>early access to new features</0> and help us understand your needs better",
|
||||
"thank_you_for_participating_feedback": "Merci d'avoir participé à cette expérience. Nous apprécierions vos commentaires.",
|
||||
"thank_you_for_your_feedback": "Merci pour votre retour !",
|
||||
"thanks": "Merci",
|
||||
@@ -2910,7 +2910,7 @@
|
||||
"unlimited_collabs": "Collaborateurs illimités",
|
||||
"unlimited_collabs_per_project_plus": "Collaborateurs illimités par projet, plus :",
|
||||
"unlimited_document_history": "Historique illimité des documents",
|
||||
"unlimited_overleaf_ai": "IA illimitée au verso",
|
||||
"unlimited_overleaf_ai": "Illimité Overleaf IA",
|
||||
"unlimited_projects": "Projets illimités",
|
||||
"unlink": "Ne plus lier",
|
||||
"unlink_all_users": "Dissocier tous les utilisateurs",
|
||||
@@ -2931,7 +2931,7 @@
|
||||
"unlink_provider_account_title": "Dissocier le compte __provider__",
|
||||
"unlink_provider_account_warning": "Avertissement : Lorsque vous dissocierez votre compte de __provider__, vous ne pourrez plus vous connecter en utilisant __provider__.",
|
||||
"unlink_reference": "Ne plus lier le fournisseur de références",
|
||||
"unlink_sso": "Dissocier l'authentification unique",
|
||||
"unlink_sso": "Dissocier SSO",
|
||||
"unlink_the_project_from_the_current_github_repo": "Dissociez le projet du référentiel GitHub actuel et créez une connexion à un référentiel que vous possédez. (Vous avez besoin d'un abonnement __appName__ actif pour configurer une synchronisation GitHub).",
|
||||
"unlink_user_explanation": "Vous êtes sur le point de supprimer l’option de connexion SSO pour <0>__email__</0>. Cela les obligera à réauthentifier leur compte Overleaf auprès de votre IdP. Ils recevront un e-mail leur demandant de le faire.",
|
||||
"unlink_users": "Dissocier les utilisateurs",
|
||||
@@ -2985,7 +2985,7 @@
|
||||
"usage_metrics": "Métriques d'utilisation",
|
||||
"use_a_different_email": "Utilisez un <0>different email</0>.",
|
||||
"use_a_different_password": "Veuillez utiliser un mot de passe différent",
|
||||
"use_saml_metadata_to_configure_sso_with_idp": "Utilisez les métadonnées SAML au verso pour configurer l'authentification unique avec votre fournisseur d'identité.",
|
||||
"use_saml_metadata_to_configure_sso_with_idp": "Utilisez les métadonnées Overleaf SAML pour configurer SSO avec votre fournisseur d'identité.",
|
||||
"use_the_shortcut_key_to_paste": "Utilisez la touche de raccourci pour coller",
|
||||
"use_your_own_machine": "Utilisez votre propre machine, avec votre propre installation",
|
||||
"used_latex_before": "Dans quelle mesure connaissez-vous LaTeX ?",
|
||||
@@ -3078,7 +3078,7 @@
|
||||
"we_do_not_share_personal_information": "Consultez notre <0>Privacy Notice</0> pour plus de détails sur la manière dont nous traitons vos données personnelles",
|
||||
"we_got_your_request": "Nous avons votre demande",
|
||||
"we_logged_you_in": "Nous vous avons connecté.",
|
||||
"we_may_also_contact_you_from_time_to_time_by_email_with_a_survey": "Nous serons également amenés à vous inviter par courriel à participer à des sondages ou à d’autres initiatives de recherche utilisateur",
|
||||
"we_may_also_contact_you_from_time_to_time_by_email_with_a_survey": "<0>We may also contact you</0> from time to time by email with a survey, or to see if you would like to participate in other user research initiatives",
|
||||
"we_sent_code": "Nous vous avons envoyé un code de confirmation",
|
||||
"we_sent_new_code": "Nous avons envoyé un nouveau code. S’il n’arrive pas, assurez-vous de vérifier vos spams et vos éventuels dossiers de promotions.",
|
||||
"we_were_unable_to_verify_your_domain": "Nous n'avons pas pu vérifier votre domaine.",
|
||||
@@ -3134,7 +3134,7 @@
|
||||
"x_price_for_first_month": "<0>__price__</0> pour votre premier mois",
|
||||
"x_price_for_first_year": "<0>__price__</0> pour votre première année",
|
||||
"x_price_for_y_months": "<0>__price__</0> pour vos premiers __discountMonths__ mois",
|
||||
"x_price_per_month": "<0>__price__</0> par mois",
|
||||
"x_price_per_month": "__price__ per month",
|
||||
"x_price_per_user": "__price__ par utilisateur",
|
||||
"x_price_per_year": "__price__ par an",
|
||||
"x_saved_to_your_project": "__fileName__ enregistré dans votre projet",
|
||||
@@ -3165,7 +3165,7 @@
|
||||
"you_can_now_search_and_add_references_from_your_rm_library_without_needing_to_import_files": "Vous pouvez désormais rechercher et ajouter des références à partir de votre bibliothèque __referenceManager__ sans avoir besoin d'importer des fichiers : tapez simplement <code>\\cite{}</code> dans votre fichier .tex. <a>En savoir plus</a>",
|
||||
"you_can_now_sign_in_with_new_password": "Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.",
|
||||
"you_can_only_be_affiliated_with_one_group": "Vous ne pouvez être affilié qu'à un seul groupe.",
|
||||
"you_can_opt_in_and_out_of_the_program_at_any_time_on_this_page": "Vous pouvez rejoindre ou quitter le programme à tout moment depuis cette page",
|
||||
"you_can_opt_in_and_out_of_the_program_at_any_time_on_this_page": "You can <0>opt in and out</0> of the program at any time on this page",
|
||||
"you_can_select_or_invite_collaborator": "Vous pouvez sélectionner ou inviter __count__ collaborateur sur votre forfait actuel. Mettez à niveau pour ajouter plus d'éditeurs ou de réviseurs.",
|
||||
"you_can_select_or_invite_collaborator_plural": "Vous pouvez sélectionner ou inviter __count__ collaborateurs sur votre forfait actuel. Mettez à niveau pour ajouter plus d'éditeurs ou de réviseurs.",
|
||||
"you_can_still_use_your_premium_features": "Vous pouvez toujours utiliser vos fonctionnalités premium jusqu'à ce que la pause devienne active.",
|
||||
@@ -3184,7 +3184,7 @@
|
||||
"you_have_x_licenses_on_your_subscription": "Vous disposez de __groupSize__ licences sur votre abonnement.",
|
||||
"you_need_to_configure_your_sso_settings": "Vous devez configurer et tester vos paramètres SSO avant d'activer SSO",
|
||||
"you_unpaused_your_subscription": "Vous avez réactivé votre abonnement.",
|
||||
"you_will_be_able_to_contact_us_any_time_to_share_your_feedback": "Vous pourrez nous contacter à tout moment pour donner votre avis",
|
||||
"you_will_be_able_to_contact_us_any_time_to_share_your_feedback": "<0>You will be able to contact us</0> any time to share your feedback",
|
||||
"you_will_be_able_to_reassign_subscription": "Vous pourrez réattribuer leur abonnement à une autre personne de votre organisation",
|
||||
"youll_get_best_results_in_visual_but_can_be_used_in_source": "Vous obtiendrez les meilleurs résultats en utilisant cet outil dans le <0>Visual Editor</0>, même si vous pouvez toujours l'utiliser pour insérer des tableaux dans le <1>Code Editor</1>. Une fois que vous avez sélectionné le nombre de lignes et de colonnes dont vous avez besoin, le tableau apparaîtra dans votre document et vous pourrez double-cliquer dans une cellule pour y ajouter du contenu.",
|
||||
"youll_need_to_ask_the_github_repository_owner": "Vous devrez demander au propriétaire du référentiel GitHub (<0>__repoOwnerEmail__</0>) de reconnecter le projet.",
|
||||
@@ -3240,7 +3240,7 @@
|
||||
"youre_about_to_enable_single_sign_on": "Vous êtes sur le point d’activer l’authentification unique (SSO). Avant de procéder, assurez-vous que la configuration SSO est correcte et que tous·tes les membres de votre groupe disposent de comptes administrés.",
|
||||
"youre_about_to_enable_single_sign_on_sso_only": "Vous êtes sur le point d’activer l’authentification unique (SSO). Avant de procéder, vous devez vous assurer que la configuration SSO est correcte.",
|
||||
"youre_adding_x_licenses_to_your_plan_giving_you_a_total_of_y_licenses": "Vous ajoutez <0>__adding__</0> licences à votre forfait, ce qui vous donne un total de <1>__total__</1> licences.",
|
||||
"youre_already_setup_for_sso": "L’authentification unique est déjà configurée",
|
||||
"youre_already_setup_for_sso": "Vous êtes déjà configuré pour SSO",
|
||||
"youre_creating_account_for_x_it_will_be_managed_by_y": "Vous créez un compte pour __email__. Il sera géré par __companyName__.",
|
||||
"youre_joining": "Vous rejoignez",
|
||||
"youre_joining_x_as_y": "Vous rejoignez __projectName__ en tant que __email__",
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
"account_not_linked_to_dropbox": "Il tuo account non è collegato a Dropbox",
|
||||
"account_settings": "Impostazioni Account",
|
||||
"account_with_email_exists": "Sembra che esista già un account <b>__appName__</b> con l'indirizzo email <b>__email__</b>.",
|
||||
"acct_linked_to_institution_acct_2": "Puoi <0>log in</0> sul retro tramite il tuo login istituzionale <0>__institutionName__</0>.",
|
||||
"acct_linked_to_institution_acct_2": "Puoi passare da <0>log in</0> a Overleaf attraverso il tuo login istituzionale <0>__institutionName__</0>.",
|
||||
"actions": "Azioni",
|
||||
"activate": "Attiva",
|
||||
"activate_account": "Attiva il tuo account",
|
||||
@@ -109,7 +109,7 @@
|
||||
"add_on": "Componente aggiuntivo",
|
||||
"add_ons": "Componenti aggiuntivi",
|
||||
"add_ons_for_any_plan": "Componenti aggiuntivi per qualsiasi piano",
|
||||
"add_ons_for_any_plan_subheading": "Acquista componenti aggiuntivi per qualsiasi piano sul retro (incluso il piano gratuito) per sbloccare funzionalità aggiuntive.",
|
||||
"add_ons_for_any_plan_subheading": "Acquista componenti aggiuntivi per qualsiasi piano Overleaf (incluso il piano gratuito) per sbloccare funzionalità aggiuntive.",
|
||||
"add_or_remove_project_from_tag": "Aggiungi o rimuovi progetto dal tag __tagName__",
|
||||
"add_reference": "Aggiungi riferimento",
|
||||
"add_references": "Aggiungi riferimenti",
|
||||
@@ -117,8 +117,8 @@
|
||||
"add_to_dictionary": "Aggiungi al dizionario",
|
||||
"add_to_tag": "Aggiungi all'etichetta",
|
||||
"add_txt_record_to_dns_with_token": "Per completare il processo di verifica del dominio devi aggiungere un record TXT al tuo DNS con il seguente token:",
|
||||
"add_unlimited_ai_to_overleaf": "Aggiungi un'intelligenza artificiale illimitata* al retro",
|
||||
"add_unlimited_ai_to_your_overleaf_plan": "Aggiungi AI illimitata* al tuo piano sul retro __planName__",
|
||||
"add_unlimited_ai_to_overleaf": "Aggiungi AI illimitata* a Overleaf",
|
||||
"add_unlimited_ai_to_your_overleaf_plan": "Aggiungi AI illimitata* al tuo piano Overleaf __planName__",
|
||||
"add_unlimited_ai_to_your_plan": "Aggiungi AI illimitata* al tuo piano __planName__",
|
||||
"add_your_comment_here": "Aggiungi il tuo commento qui",
|
||||
"added": "aggiunto",
|
||||
@@ -409,7 +409,7 @@
|
||||
"click_here_to_view_sl_in_lng": "Clicca qui per usare __appName__ in <0>__lngName__</0>",
|
||||
"click_link_to_proceed": "Fai clic su <b>__clickText__</b> di seguito per procedere.",
|
||||
"click_recompile_and_check_your_pdf_to_see_how_its_looking": "Fai clic su Ricompila e controlla il tuo PDF per vedere come appare.",
|
||||
"click_to_unpause": "Fai clic per riattivare e riattivare le funzionalità premium sul retro.",
|
||||
"click_to_unpause": "Fai clic per riattivare e riattivare le funzionalità premium Overleaf.",
|
||||
"clicking_delete_will_remove_sso_config_and_clear_saml_data": "Facendo clic su <0>Delete</0> verrà rimossa la configurazione SSO e verranno scollegati tutti gli utenti. Puoi farlo solo quando SSO è disabilitato nelle impostazioni del tuo gruppo.",
|
||||
"clone_with_git": "Clona con Git",
|
||||
"close": "Chiudi",
|
||||
@@ -444,7 +444,7 @@
|
||||
"comment_only_upgrade_to_enable_track_changes": "Solo commento. <0>Upgrade</0> per abilitare le modifiche al rilevamento.",
|
||||
"common": "Comune",
|
||||
"commons": "Beni comuni",
|
||||
"commons_plan_tooltip": "Stai utilizzando il piano Commons fornito da __institution__. Fai clic per scoprire come sfruttare al meglio le funzionalità premium del retro.",
|
||||
"commons_plan_tooltip": "Stai utilizzando il piano Commons fornito da __institution__. Fai clic per scoprire come sfruttare al massimo le funzionalità premium Overleaf.",
|
||||
"community_articles": "Articoli comunitari",
|
||||
"community_articles_lowercase": "articoli della comunità",
|
||||
"compact": "Compatto",
|
||||
@@ -709,8 +709,8 @@
|
||||
"drag_here_paste_an_image_or": "Trascina qui, incolla un'immagine o",
|
||||
"drop_files_here_to_upload": "Trascina qui i file da caricare",
|
||||
"dropbox": "Dropbox",
|
||||
"dropbox_already_linked_error": "Il tuo account Dropbox non può essere collegato perché è già collegato a un altro account sul retro.",
|
||||
"dropbox_already_linked_error_with_email": "Il tuo account Dropbox non può essere collegato perché è già collegato a un altro account sul retro utilizzando l'indirizzo email __otherUsersEmail__.",
|
||||
"dropbox_already_linked_error": "Il tuo account Dropbox non può essere collegato poiché è già collegato a un altro account Overleaf.",
|
||||
"dropbox_already_linked_error_with_email": "Il tuo account Dropbox non può essere collegato poiché è già collegato a un altro account Overleaf utilizzando l'indirizzo email __otherUsersEmail__.",
|
||||
"dropbox_checking_sync_status": "Controllo degli aggiornamenti su Dropbox",
|
||||
"dropbox_duplicate_names_error": "Il tuo account Dropbox non può essere collegato perché hai più di un progetto con lo stesso nome:",
|
||||
"dropbox_duplicate_project_names": "Il tuo account Dropbox è stato scollegato perché hai più di un progetto chiamato <0>\"__projectName__\"</0>.",
|
||||
@@ -730,9 +730,9 @@
|
||||
"dropbox_sync_now_running": "È stata avviata in background una sincronizzazione manuale per questo progetto. Ti preghiamo di attendere qualche minuto per l'elaborazione.",
|
||||
"dropbox_sync_out": "Invio di aggiornamenti a Dropbox",
|
||||
"dropbox_sync_troubleshoot": "Le modifiche non vengono visualizzate in Dropbox? Per favore attendi qualche minuto. Se le modifiche ancora non vengono visualizzate, puoi <0>sync this project now</0>.",
|
||||
"dropbox_synced": "Sul retro e Dropbox hanno elaborato tutti gli aggiornamenti. Tieni presente che il tuo Dropbox locale potrebbe essere ancora in fase di sincronizzazione",
|
||||
"dropbox_synced": "Overleaf e Dropbox hanno elaborato tutti gli aggiornamenti. Tieni presente che il tuo Dropbox locale potrebbe essere ancora in fase di sincronizzazione",
|
||||
"dropbox_unlinked_because_access_denied": "Il tuo account Dropbox è stato scollegato perché il servizio Dropbox ha rifiutato le tue credenziali archiviate. Ricollega il tuo account Dropbox per continuare a utilizzarlo con Overleaf.",
|
||||
"dropbox_unlinked_because_full": "Il tuo account Dropbox è stato scollegato perché è pieno e non possiamo più inviargli aggiornamenti. Libera spazio e ricollega il tuo account Dropbox per continuare a utilizzarlo con il retro.",
|
||||
"dropbox_unlinked_because_full": "Il tuo account Dropbox è stato scollegato perché è pieno e non possiamo più inviargli aggiornamenti. Libera spazio e ricollega il tuo account Dropbox per continuare a utilizzarlo con Overleaf.",
|
||||
"dropbox_unlinked_because_suspended": "Abbiamo scollegato il tuo account Dropbox perché è stato sospeso da Dropbox. Potrai ricollegarti una volta risolto il problema con Dropbox.",
|
||||
"dropbox_unlinked_premium_feature": "<0>Your Dropbox account has been unlinked</0> perché Dropbox Sync è una funzionalità premium di cui disponevi tramite una licenza istituzionale.",
|
||||
"due_date": "Scadenza __date__",
|
||||
@@ -969,7 +969,7 @@
|
||||
"free_7_day_trial_billed_monthly": "Prova gratuita di 7 giorni, poi fatturazione mensile",
|
||||
"free_dropbox_and_history": "Dropbox e storia gratuita",
|
||||
"free_plan_label": "Hai scelto il <b>piano gratuito</b>",
|
||||
"free_plan_tooltip": "Fai clic per scoprire come puoi trarre vantaggio dalle funzionalità premium sul retro.",
|
||||
"free_plan_tooltip": "Fai clic per scoprire come puoi trarre vantaggio dalle funzionalità premium Overleaf.",
|
||||
"frequently_asked_questions": "domande frequenti",
|
||||
"from_another_project": "Da un altro progetto",
|
||||
"from_enforcement_date": "Da __enforcementDate__ eventuali redattori aggiuntivi di questo progetto verranno resi spettatori.",
|
||||
@@ -1021,9 +1021,9 @@
|
||||
"get_ready_for_overleaf_standard": "Preparati per una collaborazione migliorata, con un maggiore accesso all'intelligenza artificiale e fino a 10 collaboratori per progetto.",
|
||||
"get_real_time_track_changes": "Ottieni modifiche alla traccia in tempo reale",
|
||||
"get_standard": "Ottieni standard",
|
||||
"get_started_with_latex": "Inizia con LaTeX nel retro",
|
||||
"get_started_with_latex": "Inizia con LaTeX in Overleaf",
|
||||
"get_student": "Ottieni Studente",
|
||||
"get_the_best_overleaf_experience": "Ottieni la migliore esperienza sul retro",
|
||||
"get_the_best_overleaf_experience": "Ottieni la migliore esperienza Overleaf",
|
||||
"get_your_hands_on_the_ultimate_research_writing_ai_assistant": "Metti le mani sull'assistente AI per la scrittura di ricerche definitivo.",
|
||||
"git": "Git",
|
||||
"git_authentication_token": "Token di autenticazione Git",
|
||||
@@ -1050,7 +1050,7 @@
|
||||
"github_file_sync_error": "Non siamo in grado di sincronizzare i seguenti file:",
|
||||
"github_git_and_dropbox_integrations": "Integrazioni <0>GitHub</0>, <0>Git</0> e <0>Dropbox</0>",
|
||||
"github_git_and_reference_manager_integrations": "Integrazioni con GitHub, Git e il gestore dei riferimenti",
|
||||
"github_git_folder_error": "Questo progetto contiene una cartella .git al livello più alto, indicando che è già un repository git. Il servizio di sincronizzazione GitHub sul retro non può sincronizzare le cronologie Git. Rimuovi la cartella .git e riprova.",
|
||||
"github_git_folder_error": "Questo progetto contiene una cartella .git al livello più alto, indicando che è già un repository git. Il servizio di sincronizzazione Overleaf GitHub non può sincronizzare le cronologie git. Rimuovi la cartella .git e riprova.",
|
||||
"github_integration": "Integrazione con GitHub",
|
||||
"github_integration_lowercase": "Integrazione Git e GitHub",
|
||||
"github_is_no_longer_connected": "GitHub non è più connesso a questo progetto.",
|
||||
@@ -1068,7 +1068,7 @@
|
||||
"github_sync_description": "Con GitHub Sync puoi collegare i tuoi progetti __appName__ a repository GitHub. Crea nuovi commit da __appName__ e unisci con commit fatti offline o su GitHub.",
|
||||
"github_sync_error": "Spiacenti, c’è stato un errore con la comunicazione con GitHub. Si prega di riprovare fra poco.",
|
||||
"github_sync_repository_not_found_description": "Il repository collegato è stato rimosso oppure non puoi più accedervi. Puoi impostare la sincronizzazione con un nuovo repository clonando il progetto e utilizzando la voce di menu \"GitHub\". Puoi anche scollegare il repository da questo progetto.",
|
||||
"github_timeout_error": "La sincronizzazione del tuo progetto sul retro con GitHub è scaduta. Ciò potrebbe essere dovuto alla dimensione complessiva del progetto o al numero di file/modifiche da sincronizzare che sono troppo grandi.",
|
||||
"github_timeout_error": "La sincronizzazione del tuo progetto Overleaf con GitHub è scaduta. Ciò potrebbe essere dovuto alla dimensione complessiva del progetto o al numero di file/modifiche da sincronizzare che sono troppo grandi.",
|
||||
"github_too_many_files_error": "Questo repository non può essere importato poiché supera il numero massimo di file consentiti",
|
||||
"github_validation_check": "Per favore, controlla che il nome del repository sia valido, e che tu abbia i permessi per crearlo.",
|
||||
"github_workflow_authorize": "Autorizza i file del flusso di lavoro GitHub",
|
||||
@@ -1089,7 +1089,7 @@
|
||||
"go_to_first_page": "Vai alla prima pagina",
|
||||
"go_to_last_page": "Vai all'ultima pagina",
|
||||
"go_to_next_page": "Vai alla pagina successiva",
|
||||
"go_to_overleaf": "Vai al retro",
|
||||
"go_to_overleaf": "Vai a Overleaf",
|
||||
"go_to_page_x": "Vai alla pagina __page__",
|
||||
"go_to_pdf_location_in_code": "Vai a locazione PDF in codice",
|
||||
"go_to_pdf_location_in_code_action": "Vai alla posizione PDF nel codice",
|
||||
@@ -1116,9 +1116,9 @@
|
||||
"group_managers": "Dirigenti del gruppo",
|
||||
"group_members": "Membri del gruppo",
|
||||
"group_plan_admins_can_easily_add_and_remove_users_from_a_group": "Gli amministratori del piano di gruppo possono facilmente aggiungere e rimuovere utenti da un gruppo. Per i piani a livello di sito, gli utenti vengono aggiornati automaticamente quando si registrano o aggiungono il proprio indirizzo e-mail a Overleaf (registrazione basata sul dominio o SSO).",
|
||||
"group_plan_tooltip": "Stai utilizzando il piano __plan__ come membro di un abbonamento di gruppo. Fai clic per scoprire come sfruttare al meglio le funzionalità premium del retro.",
|
||||
"group_plan_tooltip": "Stai utilizzando il piano __plan__ come membro di un abbonamento di gruppo. Fai clic per scoprire come sfruttare al massimo le funzionalità premium Overleaf.",
|
||||
"group_plan_upgrade_description": "Hai il piano <0>__currentPlan__</0> e stai passando al piano <0>__nextPlan__</0>. Se sei interessato a un piano Overleaf Commons a livello di sito, per favore <1>get in touch</1>.",
|
||||
"group_plan_with_name_tooltip": "Stai utilizzando il piano __plan__ come membro di un abbonamento di gruppo, __groupName__. Fai clic per scoprire come sfruttare al meglio le funzionalità premium del retro.",
|
||||
"group_plan_with_name_tooltip": "Utilizzi il piano __plan__ come membro di un abbonamento di gruppo, __groupName__. Fai clic per scoprire come sfruttare al massimo le funzionalità premium Overleaf.",
|
||||
"group_professional": "Gruppo Pro",
|
||||
"group_settings": "Impostazioni del gruppo",
|
||||
"group_sso_configuration_idp_metadata": "Le informazioni che fornisci qui provengono dal tuo provider di identità (IdP). Questo viene spesso definito <0>SAML metadata</0>. Puoi aggiungerlo manualmente o fare clic su <1>Import IdP metadata</1> per importare un file XML.",
|
||||
@@ -1136,7 +1136,7 @@
|
||||
"help_editor_settings": "Impostazioni della guida e dell'editor",
|
||||
"help_guides": "Guide di aiuto",
|
||||
"help_improve_group_audit_logs": "Aiutaci a migliorare gli audit log del gruppo rispondendo a 3 brevi domande.",
|
||||
"help_improve_overleaf_fill_out_this_survey": "Se desideri aiutarci a migliorare il retro, ti preghiamo di dedicare un momento a compilare <0>this survey</0>.",
|
||||
"help_improve_overleaf_fill_out_this_survey": "Se desideri aiutarci a migliorare Overleaf, ti preghiamo di dedicare un momento a compilare <0>this survey</0>.",
|
||||
"help_improve_screen_reader_fill_out_this_survey": "Aiutaci a migliorare la tua esperienza utilizzando uno screen reader con __appName__ compilando questo breve sondaggio.",
|
||||
"hide": "Nasconditi",
|
||||
"hide_configuration": "Nascondi configurazione",
|
||||
@@ -1256,7 +1256,7 @@
|
||||
"inline": "In linea",
|
||||
"inline_math": "Matematica in linea",
|
||||
"inr_discount_modal_info": "Ottieni la cronologia dei documenti, tieni traccia delle modifiche, dei collaboratori aggiuntivi e altro ancora ai prezzi della parità di potere d'acquisto.",
|
||||
"inr_discount_modal_title": "Sconto del 70% su tutti i piani premium sul retro per gli utenti in India",
|
||||
"inr_discount_modal_title": "Sconto del 70% su tutti i piani premium Overleaf per gli utenti in India",
|
||||
"inr_discount_offer_plans_page_banner": "__flag__ <b>Ottime notizie!</b> Abbiamo applicato uno <b>sconto del 70%</b> ai piani premium per i nostri utenti in India. Dai un'occhiata ai nuovi prezzi più bassi qui sotto.",
|
||||
"insert": "Inserisci",
|
||||
"insert_citation": "Inserisci citazione",
|
||||
@@ -1287,7 +1287,7 @@
|
||||
"institution_account_tried_to_add_affiliated_with_another_institution_2": "L'e-mail <b>__email__</b> è <b>già associata</b> al tuo account ma affiliato con un'altra istituzione.",
|
||||
"institution_account_tried_to_add_already_linked": "Questa istituzione è <b>già collegata</b> al tuo account tramite un altro indirizzo email.",
|
||||
"institution_account_tried_to_add_already_registered": "L'account e-mail/istituto che hai tentato di aggiungere è <b>già registrato</b> con __appName__.",
|
||||
"institution_account_tried_to_add_not_affiliated_2": "L'indirizzo email che ci hai fornito al momento dell'accesso non era un indirizzo email istituzionale. Il tuo istituto ha fornito l'e-mail <b>__email__</b>, che non è considerata un'e-mail istituzionale. Il retro attualmente richiede l'invio di un indirizzo e-mail istituzionale come parte dell'accesso SSO. Contatta il tuo team dei servizi IT per assicurarti che venga fornito un indirizzo istituzionale al momento dell'accesso.",
|
||||
"institution_account_tried_to_add_not_affiliated_2": "L'indirizzo email che ci hai fornito al momento dell'accesso non era un indirizzo email istituzionale. Il tuo istituto ha fornito l'e-mail <b>__email__</b>, che non è considerata un'e-mail istituzionale. Overleaf attualmente richiede l'invio di un indirizzo email istituzionale come parte del login SSO. Contatta il tuo team dei servizi IT per assicurarti che venga fornito un indirizzo istituzionale al momento dell'accesso.",
|
||||
"institution_account_tried_to_confirm_saml": "Questa email non può essere confermata. Rimuovi l'e-mail dal tuo account e prova ad aggiungerla di nuovo.",
|
||||
"institution_acct_successfully_linked_2": "Il tuo account <0>__appName__</0> è stato collegato con successo al tuo account istituzionale <0>__institutionName__</0>.",
|
||||
"institution_and_role": "Istituzione e ruolo",
|
||||
@@ -1348,7 +1348,7 @@
|
||||
"is_longer_than_n_characters": "è lungo almeno __n__ caratteri",
|
||||
"is_not_used_on_any_other_website": "non viene utilizzato su nessun altro sito web",
|
||||
"iso_certification": "Certificazione ISO",
|
||||
"iso_certification_explanation": "Il retro è certificato in conformità alla norma ISO/IEC 27001:2022.",
|
||||
"iso_certification_explanation": "Overleaf è certificato in conformità alla norma ISO/IEC 27001:2022.",
|
||||
"issued_on": "Emesso: __date__",
|
||||
"it": "Italiano",
|
||||
"it_looks_like_that_didnt_work_you_can_try_again_or_get_in_touch": "Sembra che non abbia funzionato. Puoi riprovare oppure <0>get in touch</0> rivolgerti al nostro team di supporto per ulteriore assistenza.",
|
||||
@@ -1362,7 +1362,7 @@
|
||||
"join_group": "Unisciti al gruppo",
|
||||
"join_labs": "Partecipa ai laboratori",
|
||||
"join_now": "Iscriviti ora",
|
||||
"join_overleaf_labs": "Partecipa ai laboratori sul retro",
|
||||
"join_overleaf_labs": "Partecipa a Overleaf Labs",
|
||||
"join_project": "Partecipa al progetto",
|
||||
"join_project_lowercase": "Partecipa al progetto",
|
||||
"join_sl_to_view_project": "Unisciti a __appName__ per vedere questo progetto",
|
||||
@@ -1388,7 +1388,7 @@
|
||||
"labels_help_you_to_easily_reference_your_figures": "Le etichette ti aiutano a fare facilmente riferimento alle figure in tutto il documento. Per fare riferimento a una figura all'interno del testo, fare riferimento all'etichetta utilizzando il comando <0>\\ref{...}</0>. Ciò semplifica il riferimento alle figure senza la necessità di ricordare manualmente la numerazione delle figure. <1>Learn more</1>",
|
||||
"labels_help_you_to_reference_your_tables": "Le etichette ti aiutano a fare facilmente riferimento alle tabelle in tutto il documento. Per fare riferimento a una tabella all'interno del testo, fare riferimento all'etichetta utilizzando il comando <0>\\ref{...}</0>. Ciò semplifica il riferimento alle tabelle senza ricordare manualmente la numerazione delle tabelle. <1>Read about labels and cross-references</1>.",
|
||||
"labs": "Laboratori",
|
||||
"labs_ongoing_experiments": "Labs sul retro: esperimenti in corso",
|
||||
"labs_ongoing_experiments": "Overleaf Labs: esperimenti in corso",
|
||||
"labs_program_benefits": "Iscrivendoti a Overleaf Labs puoi mettere le mani sulle funzionalità in sviluppo e provarle quanto vuoi. Tutto ciò che chiediamo in cambio è il tuo feedback onesto per aiutarci a sviluppare e migliorare. È importante notare che le funzionalità disponibili in questo programma sono ancora in fase di test e sviluppo attivo. Ciò significa che potrebbero cambiare, essere rimossi o diventare parte di un piano premium.",
|
||||
"labs_settings": "Impostazioni dei laboratori",
|
||||
"language": "Lingua",
|
||||
@@ -1444,7 +1444,7 @@
|
||||
"leave": "Partire",
|
||||
"leave_any_group_subscriptions": "Lascia eventuali iscrizioni a gruppi diversi da quello che gestirà il tuo account. <0>Leave them from the Subscription page.</0>",
|
||||
"leave_group": "Lascia il gruppo",
|
||||
"leave_labs": "Lasciare i laboratori sul retro",
|
||||
"leave_labs": "Lascia Overleaf Labs",
|
||||
"leave_now": "Vattene adesso",
|
||||
"leave_project": "Abbandona il progetto",
|
||||
"leave_projects": "Lascia i progetti",
|
||||
@@ -1529,7 +1529,7 @@
|
||||
"login_or_password_wrong_try_again": "Il tuo login o la tua password non sono corretti. Per favore riprova",
|
||||
"login_register_or": "o",
|
||||
"login_to_accept_invitation": "Accedi per accettare l'invito",
|
||||
"login_to_overleaf": "Accedi al retro",
|
||||
"login_to_overleaf": "Accedi a Overleaf",
|
||||
"login_with_service": "Accedi con __service__",
|
||||
"logs": "Registri",
|
||||
"logs_and_output_files": "Log e file di output",
|
||||
@@ -1638,7 +1638,7 @@
|
||||
"more_options": "Più opzioni",
|
||||
"more_project_collaborators": "<0>More</0> progetto <0>collaborators</0>",
|
||||
"more_space_to_write_revise_and_collaborate": "Più spazio per scrivere, rivedere e collaborare.",
|
||||
"more_than_one_kind_of_snippet_was_requested": "Il collegamento per aprire questo contenuto sul retro includeva alcuni parametri non validi. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"more_than_one_kind_of_snippet_was_requested": "Il collegamento per aprire questo contenuto su Overleaf includeva alcuni parametri non validi. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"most_popular": "più popolare",
|
||||
"most_popular_uppercase": "Il più popolare",
|
||||
"move_to_the_left": "Spostati a sinistra",
|
||||
@@ -1740,7 +1740,7 @@
|
||||
"normally_x_price_per_year": "Normalmente __price__ all'anno",
|
||||
"not_a_student": "Non sei uno studente?",
|
||||
"not_found": "Non trovato",
|
||||
"not_found_error_from_the_supplied_url": "Il collegamento per aprire questo contenuto sul retro puntava a un file che non è stato trovato. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"not_found_error_from_the_supplied_url": "Il collegamento per aprire questo contenuto su Overleaf puntava a un file che non è stato trovato. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"not_managed": "Non gestito",
|
||||
"not_now": "Non adesso",
|
||||
"not_permitted_by_your_organization": "Non consentito dalla tua organizzazione",
|
||||
@@ -1826,21 +1826,21 @@
|
||||
"over": "su",
|
||||
"over_n_users_at_research_institutions_and_business": "Oltre __userCountMillion__ milioni di utenti presso istituti di ricerca e aziende in tutto il mondo adorano __appName__",
|
||||
"overall_theme": "Tema generale",
|
||||
"overleaf": "Sul retro",
|
||||
"overleaf_ai": "Sul retro dell'IA",
|
||||
"overleaf": "Overleaf",
|
||||
"overleaf_ai": "Overleaf AI",
|
||||
"overleaf_ai_info": "Strumenti IA integrati che supportano la scrittura, la modifica e i flussi di lavoro LaTeX. Si applica il fair use.",
|
||||
"overleaf_group_plans": "Piani di gruppo sul retro",
|
||||
"overleaf_history_system": "Sistema storico sul retro",
|
||||
"overleaf_individual_plans": "Sul retro piani individuali",
|
||||
"overleaf_is_a_ds_product": "Sul retro è un prodotto di scienza digitale.",
|
||||
"overleaf_is_easy_to_use": "Il retro è facile da usare.",
|
||||
"overleaf_labs": "Labs sul retro",
|
||||
"overleaf_learning_center": "Centro di apprendimento sul retro",
|
||||
"overleaf_logo": "Logo sul retro",
|
||||
"overleaf_multi_license_plans": "Sul retro piani multilicenza",
|
||||
"overleaf_group_plans": "Overleaf piani di gruppo",
|
||||
"overleaf_history_system": "Overleaf Sistema storico",
|
||||
"overleaf_individual_plans": "Overleaf piani individuali",
|
||||
"overleaf_is_a_ds_product": "Overleaf è un prodotto di scienza digitale.",
|
||||
"overleaf_is_easy_to_use": "Overleaf è facile da usare.",
|
||||
"overleaf_labs": "Overleaf Laboratori",
|
||||
"overleaf_learning_center": "Overleaf centro di apprendimento",
|
||||
"overleaf_logo": "Overleaf logo",
|
||||
"overleaf_multi_license_plans": "Overleaf Piani multilicenza",
|
||||
"overleaf_plans_and_pricing": "piani e prezzi sul retro",
|
||||
"overleaf_template_gallery": "galleria di modelli sul retro",
|
||||
"overleafs_functionality_meets_my_needs": "La funzionalità del retro soddisfa le mie esigenze.",
|
||||
"overleafs_functionality_meets_my_needs": "La funzionalità di Overleaf soddisfa le mie esigenze.",
|
||||
"overview": "Panoramica",
|
||||
"overwrite": "Sovrascrivi",
|
||||
"overwriting_the_original_folder": "La sovrascrittura della cartella originale la cancellerà insieme a tutti i file in essa contenuti.",
|
||||
@@ -1931,7 +1931,7 @@
|
||||
"pl": "Polacco",
|
||||
"plan": "Piano",
|
||||
"plan_24x_basic_compile_timeout": "24x Timeout di compilazione base",
|
||||
"plan_tooltip": "Hai aderito al piano __plan__. Fai clic per scoprire come sfruttare al meglio le funzionalità premium del retro.",
|
||||
"plan_tooltip": "Hai aderito al piano __plan__. Fai clic per scoprire come sfruttare al massimo le funzionalità premium Overleaf.",
|
||||
"planned_maintenance": "Manutenzione Pianificata",
|
||||
"plans_and_pricing": "Piani e Costi",
|
||||
"plans_and_pricing_lowercase": "piani e prezzi",
|
||||
@@ -2087,7 +2087,7 @@
|
||||
"reactivating": "Riattivazione",
|
||||
"read_lines_from_path": "Leggi le righe da __path__",
|
||||
"read_more": "Leggi di più",
|
||||
"read_only_dropbox_sync_message": "Come visualizzatore di sola lettura puoi sincronizzare la versione corrente del progetto su Dropbox, ma le modifiche apportate in Dropbox verranno <0>not</0> sincronizzate nuovamente sul retro.",
|
||||
"read_only_dropbox_sync_message": "Come visualizzatore di sola lettura puoi sincronizzare la versione corrente del progetto con Dropbox, ma le modifiche apportate in Dropbox verranno <0>not</0> sincronizzate nuovamente con Overleaf.",
|
||||
"read_only_token": "Token di sola lettura",
|
||||
"read_write_token": "Token di lettura-scrittura",
|
||||
"ready_to_join_x": "Sei pronto per partecipare a __inviterName__",
|
||||
@@ -2121,7 +2121,7 @@
|
||||
"redo": "Rifare",
|
||||
"reduce_costs_group_licenses": "Puoi ridurre le pratiche burocratiche e ridurre i costi con le nostre licenze di gruppo scontate.",
|
||||
"reduces_visual_distraction_by_keeping_the_cursor_solid": "Riduce la distrazione visiva mantenendo il cursore solido",
|
||||
"refer_to_doc_link": "Se necessario, puoi fare riferimento alla <a href=\"__link__\">documentazione API sul retro</a>.",
|
||||
"refer_to_doc_link": "Se necessario, puoi fare riferimento alla <a href=\"__link__\">documentazione API Overleaf</a>.",
|
||||
"reference_error_relink_hint": "Se l'errore persiste, prova a ricollegare il tuo account qui:",
|
||||
"reference_manager_linked": "Gestore di riferimento collegato",
|
||||
"reference_manager_lowercase": "responsabile di riferimento",
|
||||
@@ -2171,7 +2171,7 @@
|
||||
"remove_original_links": "Rimuovi i collegamenti originali",
|
||||
"remove_original_sharing_links": "Rimuovere i collegamenti di condivisione originali?",
|
||||
"remove_secondary_email_addresses": "Rimuovi eventuali indirizzi email secondari associati al tuo account. <0>Remove them in account settings.</0>",
|
||||
"remove_secondary_email_addresses_except_saml_email": "Rimuovi tutti gli indirizzi email tranne <0>__institutionEmail__</0> dal tuo account sul retro. <1>Remove them in account settings.</1>",
|
||||
"remove_secondary_email_addresses_except_saml_email": "Rimuovi tutti gli indirizzi email tranne <0>__institutionEmail__</0> dal tuo account Overleaf. <1>Remove them in account settings.</1>",
|
||||
"remove_sso_login_option": "Rimuovi l'opzione di accesso SSO per i tuoi utenti.",
|
||||
"remove_tag": "Rimuovi tag __tagName__",
|
||||
"remove_user": "Rimuovi utente",
|
||||
@@ -2198,7 +2198,7 @@
|
||||
"repository_visibility": "Visibilità del repository",
|
||||
"republish": "Ri-pubblica",
|
||||
"request_new_password_reset_email": "Richiedi una nuova email per la reimpostazione della password",
|
||||
"request_overleaf_common": "Richiedi Commons sul retro",
|
||||
"request_overleaf_common": "Richiedi Overleaf Comuni",
|
||||
"request_password_reset_to_reconfirm": "Richiedi un'e-mail di reimpostazione della password per riconfermare",
|
||||
"request_reconfirmation_email": "Richiedi email di riconferma",
|
||||
"request_sent_thank_you": "Messaggio inviato! Il nostro team lo esaminerà e risponderà via e-mail.",
|
||||
@@ -2247,7 +2247,7 @@
|
||||
"review": "Recensione",
|
||||
"review_panel": "Pannello di revisione",
|
||||
"reviewer": "Revisore",
|
||||
"reviewer_dropbox_sync_message": "In qualità di revisore puoi sincronizzare la versione corrente del progetto su Dropbox, ma le modifiche apportate in Dropbox verranno <0>not</0> sincronizzate nuovamente sul retro.",
|
||||
"reviewer_dropbox_sync_message": "In qualità di revisore puoi sincronizzare la versione corrente del progetto su Dropbox, ma le modifiche apportate in Dropbox verranno <0>not</0> sincronizzate nuovamente su Overleaf.",
|
||||
"reviewing": "Revisione",
|
||||
"revoke": "Revoca",
|
||||
"revoke_invite": "Revoca invito",
|
||||
@@ -2262,20 +2262,20 @@
|
||||
"saml": "SAML",
|
||||
"saml_auth_error": "Siamo spiacenti, il tuo provider di identità ha risposto con un errore. Per ulteriori informazioni, contatta l'amministratore.",
|
||||
"saml_authentication_required_error": "Altri metodi di accesso sono stati disabilitati dall'amministratore del tuo gruppo. Utilizza il login SSO del tuo gruppo.",
|
||||
"saml_commons_reconfirmation_unable_to_find_user": "Siamo spiacenti, non siamo riusciti a confermare la tua affiliazione. Ciò potrebbe essere stato causato da una modifica nei dati SSO che ci vengono inviati dal tuo istituto. Ti invitiamo a <0>contact us</0> per ricevere assistenza su come ricollegare il tuo account sul retro all'SSO del tuo istituto.",
|
||||
"saml_commons_reconfirmation_unable_to_find_user": "Siamo spiacenti, non siamo riusciti a confermare la tua affiliazione. Ciò potrebbe essere stato causato da una modifica nei dati SSO che ci vengono inviati dal tuo istituto. Ti invitiamo a <0>contact us</0> per aiutarti a ricollegare il tuo account Overleaf a SSO del tuo istituto.",
|
||||
"saml_commons_unavailable": "L'SSO dell'istituto non è al momento disponibile. Per ulteriori dettagli, vedere <0>__linkText__</0>.",
|
||||
"saml_create_admin_instructions": "Scegli un indirizzo email per il primo account amministratore __appName__. Dovrebbe corrispondere a un account nel sistema SAML. Ti verrà quindi chiesto di accedere con questo account.",
|
||||
"saml_email_not_in_account_error_managed_users_2": "Il tuo indirizzo email <0>__userEmail__</0> non è stato riconosciuto. Il provider di identità della tua organizzazione ha restituito <1>__samlEmail__</1>. Sarà necessario disconnettersi da <0>__userEmail__</0> e utilizzare <1>__samlEmail__</1> per creare un account tramite SSO. Puoi <2>transfer your existing projects</2> sul nuovo account.",
|
||||
"saml_email_not_recognized_error": "Questo indirizzo email non è configurato per SSO. Controllalo e riprova oppure contatta l'amministratore.",
|
||||
"saml_email_on_another_account_error": "Il tuo provider di identità ha restituito __email__, che si trova su un altro account __appName__. Esci e accedi con l'altro account per unirti al tuo gruppo aziendale __teamName__.",
|
||||
"saml_identity_exists_error": "Siamo spiacenti, l'identità restituita dal tuo provider di identità è già collegata a un altro account sul retro. Per ulteriori informazioni, contatta l'amministratore.",
|
||||
"saml_identity_exists_error": "Siamo spiacenti, l'identità restituita dal tuo provider di identità è già collegata a un altro account Overleaf. Per ulteriori informazioni, contatta l'amministratore.",
|
||||
"saml_invalid_signature_error": "Siamo spiacenti, le informazioni ricevute dal tuo provider di identità hanno una firma non valida. Per ulteriori informazioni, contatta l'amministratore.",
|
||||
"saml_login_disabled_error": "Siamo spiacenti, l'accesso Single Sign-On è stato disabilitato per __email__. Per ulteriori informazioni, contatta l'amministratore.",
|
||||
"saml_login_failure": "Siamo spiacenti, si è verificato un problema durante l'accesso. Contatta l'amministratore per ulteriori informazioni.",
|
||||
"saml_login_identity_mismatch_error": "Spiacenti, stai tentando di accedere a Overleaf come __email__ ma l'identità restituita dal tuo provider di identità non è quella corretta per questo account Overleaf.",
|
||||
"saml_login_identity_not_found_error": "Spiacenti, non siamo riusciti a trovare un account sul retro configurato per il Single Sign-On con questo provider di identità.",
|
||||
"saml_login_identity_not_found_error": "Spiacenti, non siamo riusciti a trovare un account Overleaf configurato per Single Sign-On con questo provider di identità.",
|
||||
"saml_login_requested_email_not_confirmed_error": "Siamo spiacenti, l'indirizzo email che hai richiesto di utilizzare per l'accesso non è stato confermato e non possiamo completare la tua richiesta di accesso SSO. Se disponi di un altro metodo per accedere, effettua l'accesso e conferma la tua email. Per favore <0>contact us</0> se hai bisogno di assistenza.",
|
||||
"saml_metadata": "Metadati SAML sul retro",
|
||||
"saml_metadata": "Overleaf SAML Metadati",
|
||||
"saml_missing_signature_error": "Siamo spiacenti, le informazioni ricevute dal tuo provider di identità non sono firmate (sono richieste sia la firma di risposta che quella di asserzione). Per ulteriori informazioni, contatta l'amministratore.",
|
||||
"saml_missing_user_attribute": "Si è verificato un problema con l'autenticazione Single Sign-on. La tua organizzazione non ha fornito le informazioni richieste per completare l'autenticazione. Per ulteriori informazioni, contatta l'amministratore.",
|
||||
"saml_request_denied_error": "Siamo spiacenti, il tuo provider di identità ha rifiutato la richiesta di autenticarti. Per ulteriori informazioni, contatta l'amministratore.",
|
||||
@@ -2364,7 +2364,7 @@
|
||||
"select_user": "Seleziona utente",
|
||||
"select_user_role": "Seleziona il ruolo utente",
|
||||
"selected": "Selezionato",
|
||||
"selected_by_overleaf_staff": "Selezionato dallo staff sul retro",
|
||||
"selected_by_overleaf_staff": "Selezionato dallo staff di Overleaf",
|
||||
"selected_lowercase": "selezionato",
|
||||
"selected_lowercase_plural": "selezionato",
|
||||
"selected_plural": "selezionato",
|
||||
@@ -2397,7 +2397,7 @@
|
||||
"set_up_sso": "Configura l'SSO",
|
||||
"set_up_sso_for_your_account": "Configura SSO per il tuo account",
|
||||
"settings": "Impostazioni",
|
||||
"setup_another_account_under_a_personal_email_address": "Configura un altro account sul retro con un indirizzo email personale.",
|
||||
"setup_another_account_under_a_personal_email_address": "Configura un altro account Overleaf con un indirizzo email personale.",
|
||||
"share": "Condividi",
|
||||
"share_compiled_presentation": "Condividi la presentazione compilata",
|
||||
"share_compiled_presentation_info": "Pubblica la presentazione compilata come una pagina autonoma a cui puoi collegarti, all'esterno dell'editor. Ripubblicare per aggiornarlo.",
|
||||
@@ -2460,7 +2460,7 @@
|
||||
"somthing_went_wrong_compiling": "Spiacenti, qualcosa è andato storto e il tuo progetto non è stato compilato. Si prega di riprovare fra qualche momento.",
|
||||
"sorry_detected_sales_restricted_region": "Siamo spiacenti, abbiamo rilevato che ti trovi in una regione dalla quale al momento non possiamo accettare pagamenti. Se ritieni di aver ricevuto questo messaggio per errore, <a href=\"__link__\">contattaci</a> con i dettagli della tua posizione e noi esamineremo il problema per te. Ci scusiamo per l'inconveniente.",
|
||||
"sorry_it_looks_like_that_didnt_work_this_time": "Scusa! Sembra che questa volta non abbia funzionato. Per favore riprova.",
|
||||
"sorry_something_went_wrong_opening_the_document_please_try_again": "Siamo spiacenti, si è verificato un errore imprevisto durante il tentativo di aprire questo contenuto sul retro. Per favore riprova.",
|
||||
"sorry_something_went_wrong_opening_the_document_please_try_again": "Siamo spiacenti, si è verificato un errore imprevisto durante il tentativo di aprire questo contenuto su Overleaf. Per favore riprova.",
|
||||
"sorry_there_are_no_experiments": "Spiacenti, non ci sono esperimenti attualmente in esecuzione in Overleaf Labs.",
|
||||
"sorry_there_was_an_issue_adding_x_users_to_your_subscription": "Spiacenti, si è verificato un problema durante l'aggiunta di __count__ utenti al tuo abbonamento. Per favore <0>contact our Support team</0> per aiuto.",
|
||||
"sorry_there_was_an_issue_upgrading_your_subscription": "Siamo spiacenti, si è verificato un problema durante l'aggiornamento del tuo abbonamento. Per favore <0>contact our Support team</0> per aiuto.",
|
||||
@@ -2639,7 +2639,7 @@
|
||||
"take_survey": "Partecipa al sondaggio",
|
||||
"tax_id_number": "Codice fiscale",
|
||||
"tax_id_type": "Tipo di codice fiscale",
|
||||
"tell_the_project_owner_and_ask_them_to_upgrade": "<0>Tell the project owner</0> e chiedi loro di aggiornare il loro piano sul retro se hai bisogno di più tempo di compilazione.",
|
||||
"tell_the_project_owner_and_ask_them_to_upgrade": "<0>Tell the project owner</0> e chiedi loro di aggiornare il loro piano Overleaf se hai bisogno di più tempo di compilazione.",
|
||||
"template": "Modello",
|
||||
"template_approved_by_publisher": "Questo modello è stato approvato dall'editore",
|
||||
"template_description": "Descrizione del Modello",
|
||||
@@ -2662,7 +2662,7 @@
|
||||
"test_configuration": "Provare la configurazione",
|
||||
"test_configuration_successful": "Test di configurazione riuscito",
|
||||
"tex_live_version": "Versione TeX Live",
|
||||
"texgpt": "TestoGPT",
|
||||
"texgpt": "TeXGPT",
|
||||
"text": "Testo",
|
||||
"thank_you": "Grazie",
|
||||
"thank_you_email_confirmed": "Grazie, la tua email è ora confermata",
|
||||
@@ -2684,7 +2684,7 @@
|
||||
"the_code_editor_color_scheme_dark_mode": "La combinazione di colori dell'editor di codice per la modalità oscura",
|
||||
"the_code_editor_color_scheme_light_mode": "La combinazione di colori dell'editor di codice per la modalità luce",
|
||||
"the_document_contains_formatting_we_werent_able_to_convert": "Il documento contiene una formattazione che non siamo riusciti a convertire. Assicurati di aver corretto tutti gli errori LaTeX o <0>learn more</0> sugli errori di conversione comuni.",
|
||||
"the_file_supplied_is_of_an_unsupported_type ": "Il collegamento per aprire questo contenuto sul retro puntava al tipo di file sbagliato. I tipi di file validi sono documenti .tex e file .zip. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"the_file_supplied_is_of_an_unsupported_type ": "Il collegamento per aprire questo contenuto su Overleaf puntava al tipo di file sbagliato. I tipi di file validi sono documenti .tex e file .zip. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"the_following_files_already_exist_in_this_project": "I seguenti file esistono già in questo progetto:",
|
||||
"the_following_files_and_folders_already_exist_in_this_project": "I seguenti file e cartelle esistono già in questo progetto:",
|
||||
"the_following_folder_already_exists_in_this_project": "La seguente cartella esiste già in questo progetto:",
|
||||
@@ -2697,11 +2697,11 @@
|
||||
"the_overleaf_color_scheme": "La combinazione di colori __appName__",
|
||||
"the_primary_file_for_compiling_your_project": "Il file principale per compilare il tuo progetto.",
|
||||
"the_project_that_contains_this_file_is_not_shared_with_you": "Il progetto che contiene questo file non è condiviso con te",
|
||||
"the_requested_conversion_job_was_not_found": "Il collegamento per aprire questo contenuto sul retro specificava un processo di conversione che non è stato trovato. È possibile che il lavoro sia scaduto e debba essere eseguito nuovamente. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"the_requested_publisher_was_not_found": "Il collegamento per aprire questo contenuto sul retro specificava un editore che non è stato trovato. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"the_required_parameters_were_not_supplied": "Nel collegamento per aprire questo contenuto sul retro mancavano alcuni parametri richiesti. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"the_supplied_parameters_were_invalid": "Il collegamento per aprire questo contenuto sul retro includeva alcuni parametri non validi. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"the_supplied_uri_is_invalid": "Il collegamento per aprire questo contenuto sul retro includeva un URI non valido. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"the_requested_conversion_job_was_not_found": "Il collegamento per aprire questo contenuto su Overleaf specificava un processo di conversione che non è stato trovato. È possibile che il lavoro sia scaduto e debba essere eseguito nuovamente. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"the_requested_publisher_was_not_found": "Il collegamento per aprire questo contenuto su Overleaf specificava un editore che non è stato trovato. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"the_required_parameters_were_not_supplied": "Nel collegamento per aprire questo contenuto su Overleaf mancavano alcuni parametri richiesti. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"the_supplied_parameters_were_invalid": "Il collegamento per aprire questo contenuto su Overleaf includeva alcuni parametri non validi. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"the_supplied_uri_is_invalid": "Il collegamento per aprire questo contenuto su Overleaf includeva un URI non valido. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"the_target_folder_could_not_be_found": "Impossibile trovare la cartella di destinazione.",
|
||||
"the_token_can_be_found_later_learn_more": "Il token può essere trovato più avanti nella tabella di acquisizione del dominio. <0>Learn more about Domain Capture</0>.",
|
||||
"the_version_of_tex_live_used_for_compiling": "La versione di TeX Live utilizzata per la compilazione",
|
||||
@@ -2716,7 +2716,7 @@
|
||||
"there_was_an_error_opening_your_content": "Si è verificato un errore durante la creazione del tuo progetto",
|
||||
"these_settings_might_change_in_the_future": "Queste impostazioni potrebbero cambiare in futuro.",
|
||||
"thesis": "Tesi",
|
||||
"they_lose_access_to_account": "Perdono immediatamente ogni accesso a questo account sul retro",
|
||||
"they_lose_access_to_account": "Perderanno immediatamente ogni accesso a questo account Overleaf",
|
||||
"they_will_be_removed_from_the_group": "Verranno rimossi dal gruppo.",
|
||||
"they_will_continue_to_have_access_to_any_projects_shared_with_them": "Continueranno ad avere accesso a tutti i progetti condivisi con loro.",
|
||||
"they_will_no_longer_be_a_managed_user": "Non sarà più un utente gestito.",
|
||||
@@ -2739,7 +2739,7 @@
|
||||
"this_project_already_has_maximum_collaborators": "Questo progetto ha già il numero massimo di collaboratori consentito nel piano del proprietario. Ciò significa che puoi visualizzare ma non modificare o rivedere il progetto.",
|
||||
"this_project_exceeded_collaborator_limit": "Questo progetto ha superato il limite di collaboratori del tuo piano. Tutti gli altri utenti ora hanno accesso di sola visualizzazione.",
|
||||
"this_project_exceeded_compile_timeout_limit_on_free_plan": "Questo progetto ha superato il limite di timeout di compilazione del nostro piano gratuito.",
|
||||
"this_project_has_more_than_max_collabs": "Questo progetto ha un numero di collaboratori superiore a quello massimo consentito nel piano sul retro del proprietario del progetto. Ciò significa che potresti perdere l'accesso in modifica da __linkSharingDate__.",
|
||||
"this_project_has_more_than_max_collabs": "Questo progetto ha un numero di collaboratori superiore a quello massimo consentito nel piano Overleaf del proprietario del progetto. Ciò significa che potresti perdere l'accesso in modifica da __linkSharingDate__.",
|
||||
"this_project_is_compiled_using_untested_version": "Questo progetto è compilato utilizzando una versione non testata di TeX Live",
|
||||
"this_project_is_public": "Questo progetto è pubblico e può essere modificato da chiunque con la URL.",
|
||||
"this_project_is_public_read_only": "Questo progetto è pubblico e può essere visualizzato, ma non modificato, da chiunque abbia la URL",
|
||||
@@ -2853,8 +2853,8 @@
|
||||
"track_changes_explanation": "Apporta e visualizza le modifiche apportate.",
|
||||
"tracked_change_added": "Aggiunto",
|
||||
"tracked_change_deleted": "Eliminato",
|
||||
"transfer_management_of_your_account": "Gestione dei trasferimenti del tuo account sul retro",
|
||||
"transfer_management_of_your_account_to_x": "Trasferisci la gestione del tuo account sul retro a __groupName__",
|
||||
"transfer_management_of_your_account": "Gestione dei trasferimenti del tuo account Overleaf",
|
||||
"transfer_management_of_your_account_to_x": "Trasferisci la gestione del tuo account Overleaf a __groupName__",
|
||||
"transfer_management_resolve_following_issues": "Per trasferire la gestione del tuo account, devi risolvere i seguenti problemi:",
|
||||
"transfer_this_users_projects": "Trasferisci i progetti di questo utente",
|
||||
"transfer_this_users_projects_description": "I progetti di questo utente verranno trasferiti a un nuovo proprietario.",
|
||||
@@ -2872,7 +2872,7 @@
|
||||
"try_for_free": "Prova gratuitamente",
|
||||
"try_for_free_instead": "Prova invece gratuitamente",
|
||||
"try_now": "Prova Ora",
|
||||
"try_overleaf_ai": "Prova l'intelligenza artificiale sul retro",
|
||||
"try_overleaf_ai": "Prova Overleaf AI",
|
||||
"try_premium_for_free": "Prova Premium gratuitamente",
|
||||
"try_recompile_project_or_troubleshoot": "Prova a ricompilare il progetto da zero e, se il problema persiste, segui il nostro <0>troubleshooting guide</0>.",
|
||||
"try_relinking_provider": "Sembra che tu debba ricollegare il tuo account __provider__.",
|
||||
@@ -2885,7 +2885,7 @@
|
||||
"turn_on_password_visibility": "Attiva la visibilità della password",
|
||||
"tutorials": "Tutorial",
|
||||
"uk": "Ucraino",
|
||||
"unable_to_extract_the_supplied_zip_file": "L'apertura di questo contenuto sul retro non è riuscita perché non è stato possibile estrarre il file zip. Assicurati che si tratti di un file zip valido. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"unable_to_extract_the_supplied_zip_file": "L'apertura di questo contenuto su Overleaf non è riuscita perché non è stato possibile estrarre il file zip. Assicurati che si tratti di un file zip valido. Se il problema persiste per i collegamenti su un particolare sito, segnalalo.",
|
||||
"unarchive": "Ripristina",
|
||||
"uncategorized": "Senza categoria",
|
||||
"uncategorized_projects": "Progetti senza categoria",
|
||||
@@ -2905,15 +2905,15 @@
|
||||
"unlimited_collabs": "Collaboratori illimitati",
|
||||
"unlimited_collabs_per_project_plus": "Collaboratori illimitati per progetto, più:",
|
||||
"unlimited_document_history": "Cronologia dei documenti illimitata",
|
||||
"unlimited_overleaf_ai": "IA sul retro illimitata",
|
||||
"unlimited_overleaf_ai": "Overleaf AI illimitato",
|
||||
"unlimited_projects": "Progetti illimitati",
|
||||
"unlink": "Scollega",
|
||||
"unlink_all_users": "Scollega tutti gli utenti",
|
||||
"unlink_all_users_explanation": "Stai per rimuovere l'opzione di accesso SSO per tutti gli utenti del tuo gruppo. Se SSO è abilitato, ciò obbligherà gli utenti a riautenticare i propri account sul retro con il tuo IdP. Riceveranno un'e-mail che chiede loro di farlo.",
|
||||
"unlink_all_users_explanation": "Stai per rimuovere l'opzione di accesso SSO per tutti gli utenti del tuo gruppo. Se SSO è abilitato, ciò obbligherà gli utenti a riautenticare i propri account Overleaf con il tuo IdP. Riceveranno un'e-mail che chiede loro di farlo.",
|
||||
"unlink_commons_sso_confirm": "Sei sicuro di voler rimuovere il tuo login __institutionName__?",
|
||||
"unlink_commons_sso_error": "Scollegamento non riuscito. Per favore riprova.",
|
||||
"unlink_commons_sso_lose_licence": "Il tuo account perderà le funzionalità premium istituzionali. Puoi iscriverti nuovamente al tuo abbonamento istituzionale se ne hai diritto aggiungendo nuovamente l'opzione di accesso istituzionale al tuo account.",
|
||||
"unlink_commons_sso_no_login": "Se non aggiungi nuovamente il login istituzionale, puoi comunque accedere al tuo lavoro impostando una password specifica sul retro utilizzando la pagina di reimpostazione della password.",
|
||||
"unlink_commons_sso_no_login": "Se non aggiungi nuovamente il login istituzionale, puoi comunque accedere al tuo lavoro impostando una password specifica per Overleaf utilizzando la pagina di reimpostazione della password.",
|
||||
"unlink_commons_sso_title": "Scollega login istituzionale",
|
||||
"unlink_commons_sso_troubleshoot": "Rimuovere e aggiungere nuovamente il tuo login istituzionale può spesso risolvere i problemi di accesso.",
|
||||
"unlink_dropbox_folder": "Scollega l'account Dropbox",
|
||||
@@ -2928,7 +2928,7 @@
|
||||
"unlink_reference": "Scollega fornitore di riferimenti",
|
||||
"unlink_sso": "Scollega SSO",
|
||||
"unlink_the_project_from_the_current_github_repo": "Scollega il progetto dall'attuale repository GitHub e crea una connessione a un repository di tua proprietà. (È necessario un abbonamento __appName__ attivo per configurare una sincronizzazione GitHub).",
|
||||
"unlink_user_explanation": "Stai per rimuovere l'opzione di accesso SSO per <0>__email__</0>. Ciò li costringerà a riautenticare il loro account sul retro con il tuo IdP. Riceveranno un'e-mail che chiede loro di farlo.",
|
||||
"unlink_user_explanation": "Stai per rimuovere l'opzione di accesso SSO per <0>__email__</0>. Ciò li obbligherà a riautenticare il proprio account Overleaf con il tuo IdP. Riceveranno un'e-mail che chiede loro di farlo.",
|
||||
"unlink_users": "Scollega utenti",
|
||||
"unlink_warning_reference": "Attenzione: quando scolleghi il tuo account da questo provider non sarai in grado di importare riferimenti nei tuoi progetti.",
|
||||
"unlinking": "Scollegamento",
|
||||
@@ -2975,12 +2975,12 @@
|
||||
"url_to_fetch_the_file_from": "URL da cui recuperare il file",
|
||||
"us_gov_banner_fedramp": "<0>Now FedRAMP® authorized for LI-SaaS: </0>Abbonamento al gruppo Pro di Overleaf. Hai bisogno di una distribuzione air-gapped? Offriamo anche una soluzione on-premise. Parla con il nostro team del governo federale degli Stati Uniti.",
|
||||
"us_gov_banner_government_purchasing": "<0>Get __appName__ for US federal government. </0>Muoviti più velocemente nell'approvvigionamento con le nostre opzioni di acquisto personalizzate. Parla con il nostro team governativo.",
|
||||
"us_gov_banner_small_business_reseller": "<0>Easy procurement for US federal government. </0>Collaboriamo con rivenditori di piccole imprese per aiutarti ad acquistare piani organizzativi sul retro. Parla con il nostro team governativo.",
|
||||
"us_gov_banner_small_business_reseller": "<0>Easy procurement for US federal government. </0>Collaboriamo con rivenditori di piccole imprese per aiutarti ad acquistare piani organizzativi Overleaf. Parla con il nostro team governativo.",
|
||||
"usage_limit_reached": "Limite di utilizzo raggiunto",
|
||||
"usage_metrics": "Metriche di utilizzo",
|
||||
"use_a_different_email": "Utilizzare un <0>different email</0>.",
|
||||
"use_a_different_password": "Utilizza una password diversa",
|
||||
"use_saml_metadata_to_configure_sso_with_idp": "Utilizza i metadati SAML sul retro per configurare SSO con il tuo provider di identità.",
|
||||
"use_saml_metadata_to_configure_sso_with_idp": "Utilizza i metadati Overleaf SAML per configurare SSO con il tuo provider di identità.",
|
||||
"use_the_shortcut_key_to_paste": "Utilizzare il tasto di scelta rapida per incollare",
|
||||
"use_your_own_machine": "Usa la tua macchina, con la tua configurazione",
|
||||
"used_latex_before": "Quanta familiarità hai con LaTeX?",
|
||||
@@ -3098,7 +3098,7 @@
|
||||
"what_happens_when_sso_is_enabled": "Cosa succede quando SSO è abilitato?",
|
||||
"what_should_we_call_you": "Come dovremmo chiamarti?",
|
||||
"what_would_you_like_to_do": "Cosa ti piacerebbe fare?",
|
||||
"when_you_join_labs": "Quando ti iscrivi a Labs, puoi scegliere a quali esperimenti vuoi far parte. Dopo averlo fatto, potrai utilizzare il retro come di consueto, ma vedrai tutte le funzionalità dei lab contrassegnate da questo badge:",
|
||||
"when_you_join_labs": "Quando ti iscrivi a Labs, puoi scegliere a quali esperimenti vuoi far parte. Dopo averlo fatto, puoi utilizzare Overleaf normalmente, ma vedrai tutte le funzionalità dei lab contrassegnate da questo badge:",
|
||||
"when_you_tick_the_include_caption_box": "Quando selezioni la casella \"Includi didascalia\", l'immagine verrà inserita nel tuo documento con una didascalia segnaposto. Per modificarlo, seleziona semplicemente il testo segnaposto e digita per sostituirlo con il tuo.",
|
||||
"who_can_be_invited_to_group_members_projects": "Chi può essere invitato ai progetti dei membri del gruppo?",
|
||||
"why_latex": "Perchè LaTeX?",
|
||||
@@ -3106,7 +3106,7 @@
|
||||
"wide": "Largo",
|
||||
"will_lose_edit_access_on_date": "Perderà l'accesso in modifica il giorno __date__",
|
||||
"will_need_to_log_out_from_and_in_with": "Dovrai <b>disconnettersi</b> dal tuo account <b>__email1__</b> e quindi accedere con <b>__email2__</b>.",
|
||||
"with_overleaf_subscription_you_also_get": "Con un abbonamento sul retro ottieni anche",
|
||||
"with_overleaf_subscription_you_also_get": "Con un abbonamento Overleaf ottieni anche",
|
||||
"word_count": "Conteggio Parole",
|
||||
"word_count_lower": "Conteggio delle parole",
|
||||
"words": "Parole",
|
||||
@@ -3114,7 +3114,7 @@
|
||||
"work_offline": "Lavora offline",
|
||||
"work_offline_pull_to_overleaf": "Lavora offline, quindi passa a __appName__",
|
||||
"work_or_university_sso": "Single Sign-On lavoro/università",
|
||||
"work_with_non_overleaf_users": "Lavora con utenti non sul retro",
|
||||
"work_with_non_overleaf_users": "Lavora con utenti non Overleaf",
|
||||
"work_with_other_github_users": "Lavora con altri utenti GitHub",
|
||||
"write_faster_smarter_with_research_ready_ai": "Scrivi più velocemente, in modo più intelligente e con sicurezza grazie all'intelligenza artificiale pronta per la ricerca",
|
||||
"writefull": "Writeful",
|
||||
@@ -3149,7 +3149,7 @@
|
||||
"you_are_on_a_paid_plan_contact_support_to_find_out_more": "Hai un piano a pagamento __appName__. <0>Contact Support</0> per saperne di più.",
|
||||
"you_are_on_x_plan_as_a_confirmed_member_of_institution_y": "Sei sul nostro piano <0>__planName__</0> come <1>confirmed member</1> di <1>__institutionName__</1>",
|
||||
"you_are_on_x_plan_as_member_of_group_subscription_y_administered_by_z": "Sei iscritto al nostro piano <0>__planName__</0> come <1>member</1> dell'abbonamento di gruppo <1>__groupName__</1> gestito da <1>__adminEmail__</1>",
|
||||
"you_are_using_our_free_plan": "Stai utilizzando il nostro piano gratuito. Esegui l'upgrade per ottenere la migliore esperienza sul retro",
|
||||
"you_are_using_our_free_plan": "Stai utilizzando il nostro piano gratuito. Esegui l'upgrade per ottenere la migliore esperienza Overleaf",
|
||||
"you_can_also_choose_to_view_anonymously_or_leave_the_project": "Puoi anche scegliere <0>view anonymously</0> (perderai l'accesso in modifica) o <1>leave the project</1>.",
|
||||
"you_can_also_right_click_a_file_to_set_it_as_main": "Puoi anche fare clic con il pulsante destro del mouse su un file per impostarlo come principale.",
|
||||
"you_can_buy_this_plan_but_not_as_a_trial": "Puoi acquistare questo piano ma non come prova, poiché hai già completato una prova in precedenza.",
|
||||
@@ -3182,7 +3182,7 @@
|
||||
"you_will_be_able_to_reassign_subscription": "Potrai riassegnare l'abbonamento al suo abbonamento a un'altra persona nella tua organizzazione",
|
||||
"youll_get_best_results_in_visual_but_can_be_used_in_source": "Otterrai i migliori risultati utilizzando questo strumento in <0>Visual Editor</0>, anche se puoi comunque usarlo per inserire tabelle in <1>Code Editor</1>. Una volta selezionato il numero di righe e colonne di cui hai bisogno, la tabella apparirà nel tuo documento e potrai fare doppio clic in una cella per aggiungervi contenuti.",
|
||||
"youll_need_to_ask_the_github_repository_owner": "Dovrai chiedere al proprietario del repository GitHub (<0>__repoOwnerEmail__</0>) di riconnettersi al progetto.",
|
||||
"youll_no_longer_need_to_remember_credentials": "Non avrai più bisogno di ricordare un indirizzo email e una password separati. Utilizzerai invece il Single Sign-On per accedere al retro. <0>Read more about SSO</0>.",
|
||||
"youll_no_longer_need_to_remember_credentials": "Non avrai più bisogno di ricordare un indirizzo email e una password separati. Utilizzerai invece l'accesso singolo per accedere a Overleaf. <0>Read more about @@1@@</0>.",
|
||||
"your_account_is_managed_by_admin_cant_join_additional_group": "Il tuo account __appName__ è gestito dall'attuale amministratore del gruppo (__admin__). Ciò significa che non puoi unirti ad abbonamenti di gruppo aggiuntivi. <0>Read more about Managed Users.</0>",
|
||||
"your_account_is_managed_by_your_group_admin": "Il tuo account è gestito dall'amministratore del tuo gruppo. Non puoi modificare o eliminare il tuo indirizzo email.",
|
||||
"your_account_is_suspended": "Il tuo account è sospeso",
|
||||
|
||||
@@ -0,0 +1,196 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Translate missing keys in Verso locale files using Google Translate (free, no API key).
|
||||
|
||||
Usage:
|
||||
python3 translate_missing.py [--lang fr,de,it,es] [--batch 80] [--dry-run]
|
||||
|
||||
Re-run safely: already-translated keys are skipped.
|
||||
"""
|
||||
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
import time
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
from deep_translator import GoogleTranslator
|
||||
|
||||
LOCALES_DIR = Path(__file__).parent
|
||||
EN_FILE = LOCALES_DIR / "en.json"
|
||||
|
||||
LANG_NAMES = {
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"es": "Spanish",
|
||||
}
|
||||
|
||||
# Placeholder pattern: __varName__ and <0>…</N> tags
|
||||
# We replace them with stable tokens before translating and restore after.
|
||||
INTERP_RE = re.compile(r'__\w+__|<\d+>.*?</\d+>|<\d+\s*/>', re.DOTALL)
|
||||
|
||||
|
||||
def tokenise(text: str) -> tuple[str, list[str]]:
|
||||
"""Replace variable/tag fragments with @@0@@, @@1@@, … Return (masked, originals)."""
|
||||
originals: list[str] = []
|
||||
def replace(m):
|
||||
idx = len(originals)
|
||||
originals.append(m.group(0))
|
||||
return f"@@{idx}@@"
|
||||
return INTERP_RE.sub(replace, text), originals
|
||||
|
||||
|
||||
def restore(text: str, originals: list[str]) -> str:
|
||||
for i, orig in enumerate(originals):
|
||||
text = text.replace(f"@@{i}@@", orig)
|
||||
return text
|
||||
|
||||
|
||||
SEP = "\n||||\n"
|
||||
MAX_CHARS = 4500 # stay well under Google's 5000-char limit
|
||||
|
||||
|
||||
def _call_google(text: str, target: str) -> str:
|
||||
"""Single Google Translate call with one retry on transient errors."""
|
||||
try:
|
||||
return GoogleTranslator(source="en", target=target).translate(text)
|
||||
except Exception as e:
|
||||
print(f"\n [retry] {type(e).__name__} — waiting 6s…", file=sys.stderr)
|
||||
time.sleep(6)
|
||||
return GoogleTranslator(source="en", target=target).translate(text)
|
||||
|
||||
|
||||
def _translate_chunk(masked: list[str], orig_lists: list[list[str]], target: str) -> list[str]:
|
||||
"""Translate one chunk (guaranteed to fit within MAX_CHARS)."""
|
||||
if len(masked) == 1:
|
||||
translated_text = _call_google(masked[0], target)
|
||||
return [restore(translated_text.strip(), orig_lists[0])]
|
||||
|
||||
joined = SEP.join(masked)
|
||||
translated_joined = _call_google(joined, target)
|
||||
parts = translated_joined.split("||||")
|
||||
|
||||
if len(parts) == len(masked):
|
||||
return [restore(p.strip(), origs) for p, origs in zip(parts, orig_lists)]
|
||||
|
||||
# Split-count mismatch: fall back to individual calls
|
||||
print(f"\n [warn] split mismatch ({len(parts)} vs {len(masked)}), going one-by-one", file=sys.stderr)
|
||||
results = []
|
||||
for m, origs in zip(masked, orig_lists):
|
||||
try:
|
||||
t = _call_google(m, target)
|
||||
results.append(restore(t.strip(), origs))
|
||||
time.sleep(0.4)
|
||||
except Exception as e:
|
||||
print(f" [skip] could not translate: {e}", file=sys.stderr)
|
||||
results.append(restore(m, origs)) # fall back to English
|
||||
return results
|
||||
|
||||
|
||||
def translate_batch(texts: list[str], target: str) -> list[str]:
|
||||
"""Translate a list of strings, auto-splitting to respect MAX_CHARS."""
|
||||
masked_all = []
|
||||
orig_lists_all = []
|
||||
for t in texts:
|
||||
m, origs = tokenise(t)
|
||||
masked_all.append(m)
|
||||
orig_lists_all.append(origs)
|
||||
|
||||
# Group into sub-chunks that fit within MAX_CHARS
|
||||
results: list[str] = []
|
||||
chunk_m: list[str] = []
|
||||
chunk_o: list[list[str]] = []
|
||||
chunk_chars = 0
|
||||
|
||||
for m, origs in zip(masked_all, orig_lists_all):
|
||||
entry_chars = len(m) + len(SEP)
|
||||
if chunk_m and chunk_chars + entry_chars > MAX_CHARS:
|
||||
results.extend(_translate_chunk(chunk_m, chunk_o, target))
|
||||
chunk_m, chunk_o, chunk_chars = [], [], 0
|
||||
time.sleep(0.5)
|
||||
chunk_m.append(m)
|
||||
chunk_o.append(origs)
|
||||
chunk_chars += entry_chars
|
||||
|
||||
if chunk_m:
|
||||
results.extend(_translate_chunk(chunk_m, chunk_o, target))
|
||||
|
||||
return results
|
||||
|
||||
|
||||
def process_language(lang: str, en: dict, batch_size: int, dry_run: bool) -> int:
|
||||
"""Fill missing keys for one language. Returns number of keys translated."""
|
||||
target_file = LOCALES_DIR / f"{lang}.json"
|
||||
existing: dict = {}
|
||||
if target_file.exists():
|
||||
with open(target_file, encoding="utf-8") as f:
|
||||
existing = json.load(f)
|
||||
|
||||
missing_keys = [k for k in en if k not in existing or not existing[k]]
|
||||
if not missing_keys:
|
||||
print(f" {lang}: nothing to translate.")
|
||||
return 0
|
||||
|
||||
print(f" {lang} ({LANG_NAMES[lang]}): {len(missing_keys)} keys to translate")
|
||||
translated_count = 0
|
||||
|
||||
for batch_start in range(0, len(missing_keys), batch_size):
|
||||
batch_keys = missing_keys[batch_start:batch_start + batch_size]
|
||||
batch_values = [en[k] for k in batch_keys]
|
||||
|
||||
end = min(batch_start + batch_size, len(missing_keys))
|
||||
print(f" batch {batch_start + 1}–{end} / {len(missing_keys)}…", end=" ", flush=True)
|
||||
|
||||
if dry_run:
|
||||
print("(dry-run, skipped)")
|
||||
continue
|
||||
|
||||
translations = translate_batch(batch_values, lang)
|
||||
|
||||
for key, translation in zip(batch_keys, translations):
|
||||
existing[key] = translation
|
||||
translated_count += len(batch_keys)
|
||||
|
||||
# Write after every batch so progress is saved if interrupted
|
||||
sorted_existing = dict(sorted(existing.items()))
|
||||
with open(target_file, "w", encoding="utf-8") as f:
|
||||
json.dump(sorted_existing, f, ensure_ascii=False, indent=2)
|
||||
f.write("\n")
|
||||
|
||||
print(f"done, saved.")
|
||||
# Polite pause to avoid rate-limiting
|
||||
time.sleep(1.2)
|
||||
|
||||
return translated_count
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Translate missing Verso locale keys.")
|
||||
parser.add_argument("--lang", default="fr,de,it,es",
|
||||
help="Comma-separated language codes (default: fr,de,it,es)")
|
||||
parser.add_argument("--batch", type=int, default=80,
|
||||
help="Keys per Google Translate call (default: 80)")
|
||||
parser.add_argument("--dry-run", action="store_true",
|
||||
help="Report what would be translated without writing files")
|
||||
args = parser.parse_args()
|
||||
|
||||
langs = [l.strip() for l in args.lang.split(",")]
|
||||
|
||||
with open(EN_FILE, encoding="utf-8") as f:
|
||||
en = json.load(f)
|
||||
print(f"Source: en.json — {len(en)} keys\n")
|
||||
|
||||
total = 0
|
||||
for lang in langs:
|
||||
if lang not in LANG_NAMES:
|
||||
print(f" [skip] unknown language: {lang}")
|
||||
continue
|
||||
total += process_language(lang, en, args.batch, args.dry_run)
|
||||
print()
|
||||
|
||||
print(f"Done. {total} keys translated across {len(langs)} language(s).")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,186 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Validate translated locale files for mechanical errors.
|
||||
|
||||
Checks:
|
||||
1. Missing/altered __placeholder__ tokens
|
||||
2. Missing/altered <N>…</N> React-Trans tags
|
||||
3. Technical terms that must never be translated
|
||||
4. Empty or whitespace-only values
|
||||
5. Keys present in locale but absent from en.json (orphan keys)
|
||||
|
||||
Usage:
|
||||
python3 validate_translations.py [--lang fr,de,it,es] [--fix]
|
||||
|
||||
--fix: auto-correct placeholder/tag issues by copying the English value
|
||||
for that key (safer than a wrong translation).
|
||||
"""
|
||||
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
LOCALES_DIR = Path(__file__).parent
|
||||
EN_FILE = LOCALES_DIR / "en.json"
|
||||
|
||||
LANG_NAMES = {"fr": "French", "de": "German", "it": "Italian", "es": "Spanish"}
|
||||
|
||||
# Regex patterns
|
||||
PLACEHOLDER_RE = re.compile(r'__\w+__')
|
||||
TRANS_TAG_RE = re.compile(r'<\d+\s*(?:/|>[^<]*</\d+)>')
|
||||
|
||||
# Technical terms that must appear verbatim (case-sensitive where it matters)
|
||||
PROTECTED_TERMS = [
|
||||
"LaTeX", "BibTeX", "TeX", "Typst", "Quarto", "PDF", "GitHub",
|
||||
"Google", "ORCID", "DOI",
|
||||
"Overleaf", # brand name inherited from upstream
|
||||
"Verso", # our brand name
|
||||
# SSO, SAML, OAuth are acronyms that may legitimately be expanded in translation
|
||||
]
|
||||
|
||||
|
||||
def check_placeholders(key: str, en_val: str, loc_val: str) -> list[str]:
|
||||
"""Return error messages for missing or extra __placeholder__ tokens."""
|
||||
en_tokens = set(PLACEHOLDER_RE.findall(en_val))
|
||||
loc_tokens = set(PLACEHOLDER_RE.findall(loc_val))
|
||||
errors = []
|
||||
for t in en_tokens - loc_tokens:
|
||||
errors.append(f"missing placeholder {t!r}")
|
||||
for t in loc_tokens - en_tokens:
|
||||
errors.append(f"extra placeholder {t!r}")
|
||||
return errors
|
||||
|
||||
|
||||
def check_trans_tags(key: str, en_val: str, loc_val: str) -> list[str]:
|
||||
"""Return error messages for missing or extra <N> React-Trans tags."""
|
||||
# Extract just the tag numbers from both
|
||||
en_nums = sorted(re.findall(r'<(\d+)', en_val))
|
||||
loc_nums = sorted(re.findall(r'<(\d+)', loc_val))
|
||||
if en_nums != loc_nums:
|
||||
return [f"React-Trans tags differ: EN has {en_nums}, translation has {loc_nums}"]
|
||||
return []
|
||||
|
||||
|
||||
def check_protected_terms(key: str, en_val: str, loc_val: str) -> list[str]:
|
||||
"""Return error messages for protected terms found in EN but not in translation."""
|
||||
errors = []
|
||||
for term in PROTECTED_TERMS:
|
||||
if term in en_val and term not in loc_val:
|
||||
# Allow the term to appear in a different case only if the EN also has it that way
|
||||
errors.append(f"protected term {term!r} missing from translation")
|
||||
return errors
|
||||
|
||||
|
||||
def validate_language(lang: str, en: dict, fix: bool) -> dict[str, list[str]]:
|
||||
"""Validate one locale file. Returns {key: [error, …]} for all issues found."""
|
||||
target_file = LOCALES_DIR / f"{lang}.json"
|
||||
if not target_file.exists():
|
||||
print(f" {lang}: file not found, skipping.")
|
||||
return {}
|
||||
|
||||
with open(target_file, encoding="utf-8") as f:
|
||||
loc: dict = json.load(f)
|
||||
|
||||
issues: dict[str, list[str]] = {}
|
||||
|
||||
for key, en_val in en.items():
|
||||
loc_val = loc.get(key)
|
||||
|
||||
# 1. Missing key
|
||||
if loc_val is None:
|
||||
issues[key] = ["key missing entirely"]
|
||||
continue
|
||||
|
||||
# 2. Empty value
|
||||
if not loc_val.strip():
|
||||
issues[key] = ["empty or whitespace-only value"]
|
||||
continue
|
||||
|
||||
errs = []
|
||||
# 3. Placeholder integrity
|
||||
errs.extend(check_placeholders(key, en_val, loc_val))
|
||||
# 4. React-Trans tag integrity
|
||||
errs.extend(check_trans_tags(key, en_val, loc_val))
|
||||
# 5. Protected terms
|
||||
errs.extend(check_protected_terms(key, en_val, loc_val))
|
||||
|
||||
if errs:
|
||||
issues[key] = errs
|
||||
|
||||
# Orphan keys (in locale but not in EN) — informational only
|
||||
orphans = [k for k in loc if k not in en]
|
||||
if orphans:
|
||||
print(f" [{lang}] {len(orphans)} orphan key(s) not in en.json (ignored)")
|
||||
|
||||
if fix and issues:
|
||||
fixed = 0
|
||||
for key, errs in issues.items():
|
||||
# Only auto-fix structural errors (placeholders / tags / empty)
|
||||
# Don't auto-fix protected-term-only issues (might be a valid translation choice)
|
||||
structural = [e for e in errs if "protected term" not in e]
|
||||
if structural:
|
||||
loc[key] = en[key] # fall back to English
|
||||
fixed += 1
|
||||
if fixed:
|
||||
sorted_loc = dict(sorted(loc.items()))
|
||||
with open(target_file, "w", encoding="utf-8") as f:
|
||||
json.dump(sorted_loc, f, ensure_ascii=False, indent=2)
|
||||
f.write("\n")
|
||||
print(f" [{lang}] auto-fixed {fixed} structural error(s) by falling back to English")
|
||||
|
||||
return issues
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--lang", default="fr,de,it,es")
|
||||
parser.add_argument("--fix", action="store_true",
|
||||
help="Auto-fix structural errors (placeholders/tags/empty) by using English fallback")
|
||||
args = parser.parse_args()
|
||||
langs = [l.strip() for l in args.lang.split(",")]
|
||||
|
||||
with open(EN_FILE, encoding="utf-8") as f:
|
||||
en = json.load(f)
|
||||
print(f"Source: en.json — {len(en)} keys\n")
|
||||
|
||||
grand_total = 0
|
||||
for lang in langs:
|
||||
if lang not in LANG_NAMES:
|
||||
print(f"Unknown language: {lang}")
|
||||
continue
|
||||
|
||||
print(f"── {lang} ({LANG_NAMES[lang]}) ──────────────────────────────")
|
||||
issues = validate_language(lang, en, args.fix)
|
||||
|
||||
if not issues:
|
||||
print(f" No issues found.\n")
|
||||
continue
|
||||
|
||||
# Group by error type for a cleaner summary
|
||||
by_type: dict[str, list[str]] = {}
|
||||
for key, errs in issues.items():
|
||||
for e in errs:
|
||||
by_type.setdefault(e if len(e) < 60 else e[:57]+"…", []).append(key)
|
||||
|
||||
for err_type, keys in sorted(by_type.items(), key=lambda x: -len(x[1])):
|
||||
print(f" [{len(keys):3d}x] {err_type}")
|
||||
# Show up to 5 example keys per error type
|
||||
for k in keys[:5]:
|
||||
loc_val = json.load(open(LOCALES_DIR / f"{lang}.json")).get(k, "")
|
||||
print(f" {k!r}")
|
||||
print(f" EN : {en[k][:90]!r}")
|
||||
print(f" {lang.upper()} : {loc_val[:90]!r}")
|
||||
|
||||
print(f" → {len(issues)} key(s) with issues\n")
|
||||
grand_total += len(issues)
|
||||
|
||||
print(f"Total: {grand_total} issue(s) across {len(langs)} language(s).")
|
||||
if grand_total and not args.fix:
|
||||
print("Re-run with --fix to auto-correct structural errors.")
|
||||
sys.exit(0 if grand_total == 0 else 1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user