Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using lazy_gettext in boot-time translations #37

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

mesemus
Copy link

@mesemus mesemus commented Oct 23, 2024

Description

This pull request fixes premature evaluation of i18n strings inside static fields. gettext call, that causes
the evaluation to be performed at boot time, was replaced with gettext_lazy that is performed at
request time. This fixes sort options not being translated when language is changed.

Checklist

Ticks in all boxes and 🟢 on all GitHub actions status checks are required to merge:

Frontend

Reminder

By using GitHub, you have already agreed to the GitHub’s Terms of Service including that:

  1. You license your contribution under the same terms as the current repository’s license.
  2. You agree that you have the right to license your contribution under the current repository’s license.

@mesemus
Copy link
Author

mesemus commented Oct 23, 2024

Please backport this change to RDM 12

* the problem was that with gettext the translations for facets
  have been only be calculated on boot time.

* using lazy_gettext instead fixes that, because it calculates
  the translation at the request level

Co-authored-by: Mirek Simek <[email protected]>
* there were no tests for translations in administration interface in this package

* this commit adds tests that at least some of the strings get translated and translations work

Note: In order that the test runs successfully, you need to invoke python setup.py compile_catalog prior running the tests
@Samk13
Copy link
Member

Samk13 commented Oct 25, 2024

LGTM! Thanks for the great addition!

I noticed that some packages register translations as:

invenio_i18n.translations =
    messages = invenio_i18n

while others use:

invenio_i18n.translations =
    invenio_i18n = invenio_i18n

see: here
For clarity and consistency, we should standardize on invenio_pkg_name = invenio_pkg_name across packages, although it doesn't make a big difference here. Using the package name as the namespace avoids ambiguity and prevents potential conflicts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants