From 0e69f1baac934c8f1dc0928188598e508695c00c Mon Sep 17 00:00:00 2001 From: Mirek Simek Date: Tue, 10 Dec 2024 13:59:19 +0100 Subject: [PATCH] i18n: Fix untranslated strings in vocabularies In a couple of places (administration, jobs, subjects) the texts that will be visible in UI were not marked as translatable or were marked incorrectly with gettext where lazy_gettext should be used. This commit fixes that. --- .../administration/views/vocabularies.py | 16 ++++++-------- invenio_vocabularies/jobs.py | 22 +++++++++---------- invenio_vocabularies/records/models.py | 5 ++++- .../services/custom_fields/subject.py | 8 +++---- 4 files changed, 26 insertions(+), 25 deletions(-) diff --git a/invenio_vocabularies/administration/views/vocabularies.py b/invenio_vocabularies/administration/views/vocabularies.py index aaa65749..e814f254 100644 --- a/invenio_vocabularies/administration/views/vocabularies.py +++ b/invenio_vocabularies/administration/views/vocabularies.py @@ -9,10 +9,8 @@ """Vocabularies admin interface.""" -from invenio_administration.views.base import ( - AdminResourceEditView, - AdminResourceListView, -) +from invenio_administration.views.base import AdminResourceListView +from invenio_i18n import lazy_gettext as _ class VocabulariesListView(AdminResourceListView): @@ -20,11 +18,11 @@ class VocabulariesListView(AdminResourceListView): api_endpoint = "/vocabularies/" name = "vocabulary-types" - menu_label = "Vocabulary Types" + menu_label = _("Vocabulary Types") resource_config = "vocabulary_admin_resource" search_request_headers = {"Accept": "application/json"} - title = "Vocabulary Types" - category = "Site management" + title = _("Vocabulary Types") + category = _("Site management") pid_path = "id" icon = "exchange" @@ -36,8 +34,8 @@ class VocabulariesListView(AdminResourceListView): display_create = False item_field_list = { - "id": {"text": "Name", "order": 1}, - "count": {"text": "Number of entries", "order": 2}, + "id": {"text": _("Name"), "order": 1}, + "count": {"text": _("Number of entries"), "order": 2}, } search_config_name = "VOCABULARIES_TYPES_SEARCH" diff --git a/invenio_vocabularies/jobs.py b/invenio_vocabularies/jobs.py index c3ede3e3..0468b950 100644 --- a/invenio_vocabularies/jobs.py +++ b/invenio_vocabularies/jobs.py @@ -10,7 +10,7 @@ import datetime -from invenio_i18n import gettext as _ +from invenio_i18n import lazy_gettext as _ from invenio_jobs.jobs import JobType from invenio_vocabularies.services.tasks import process_datastream @@ -27,8 +27,8 @@ class ProcessDataStreamJob(JobType): class ProcessRORAffiliationsJob(ProcessDataStreamJob): """Process ROR affiliations datastream registered task.""" - description = "Process ROR affiliations" - title = "Load ROR affiliations" + description = _("Process ROR affiliations") + title = _("Load ROR affiliations") id = "process_ror_affiliations" @classmethod @@ -65,8 +65,8 @@ def build_task_arguments(cls, job_obj, since=None, **kwargs): class ProcessRORFundersJob(ProcessDataStreamJob): """Process ROR funders datastream registered task.""" - description = "Process ROR funders" - title = "Load ROR funders" + description = _("Process ROR funders") + title = _("Load ROR funders") id = "process_ror_funders" @classmethod @@ -103,8 +103,8 @@ def build_task_arguments(cls, job_obj, since=None, **kwargs): class ImportAwardsOpenAIREJob(ProcessDataStreamJob): """Import awards from OpenAIRE registered task.""" - description = "Import awards from OpenAIRE" - title = "Import Awards OpenAIRE" + description = _("Import awards from OpenAIRE") + title = _("Import Awards OpenAIRE") id = "import_awards_openaire" @classmethod @@ -138,8 +138,8 @@ def build_task_arguments(cls, job_obj, since=None, **kwargs): class UpdateAwardsCordisJob(ProcessDataStreamJob): """Update awards from CORDIS registered task.""" - description = "Update awards from CORDIS" - title = "Update Awards CORDIS" + description = _("Update awards from CORDIS") + title = _("Update Awards CORDIS") id = "update_awards_cordis" @classmethod @@ -166,8 +166,8 @@ def build_task_arguments(cls, job_obj, since=None, **kwargs): class ImportORCIDJob(ProcessDataStreamJob): """Import ORCID data registered task.""" - description = "Import ORCID data" - title = "Import ORCID data" + description = _("Import ORCID data") + title = _("Import ORCID data") id = "import_orcid" @classmethod diff --git a/invenio_vocabularies/records/models.py b/invenio_vocabularies/records/models.py index a58045d4..8e03b4af 100644 --- a/invenio_vocabularies/records/models.py +++ b/invenio_vocabularies/records/models.py @@ -9,6 +9,7 @@ """Vocabulary models.""" from invenio_db import db +from invenio_i18n import gettext as _ from invenio_records.models import RecordMetadataBase @@ -79,7 +80,9 @@ def create(cls, **data): """Create a new vocabulary subtype.""" banned = [",", ":"] for b in banned: - assert b not in data["id"], f"No '{b}' allowed in VocabularyScheme.id" + assert b not in data["id"], _( + "No '{banned_char}' allowed in VocabularyScheme.id" + ).format(banned_char=b) with db.session.begin_nested(): obj = cls(**data) diff --git a/invenio_vocabularies/services/custom_fields/subject.py b/invenio_vocabularies/services/custom_fields/subject.py index df4e2c31..bb7cfda3 100644 --- a/invenio_vocabularies/services/custom_fields/subject.py +++ b/invenio_vocabularies/services/custom_fields/subject.py @@ -54,12 +54,12 @@ def mapping(self): ui_widget="SubjectAutocompleteDropdown", isGenericVocabulary=False, props=dict( - label="Keywords and subjects", + label=_("Keywords and subjects"), icon="tag", - description="The subjects related to the community", - placeholder="Search for a subject by name e.g. Psychology ...", + description=_("The subjects related to the community"), + placeholder=_("Search for a subject by name e.g. Psychology ..."), autocompleteFrom="api/subjects", - noQueryMessage="Search for subjects...", + noQueryMessage=_("Search for subjects..."), autocompleteFromAcceptHeader="application/vnd.inveniordm.v1+json", required=False, multiple=True,