feat: optionally use gettext for translation

This commit is contained in:
barredterra 2023-10-29 15:32:01 +01:00
parent 39e12ba14c
commit c38ff0e83f
4 changed files with 20 additions and 4 deletions

View file

@ -90,9 +90,13 @@ def _(msg: str, lang: str | None = None, context: str | None = None) -> str:
_('Change')
_('Change', context='Coins')
"""
from frappe.translate import get_all_translations
from frappe.utils import is_html, strip_html_tags
if conf.use_gettext:
from frappe.gettext.translate import get_all_translations
else:
from frappe.translate import get_all_translations
if not hasattr(local, "lang"):
local.lang = lang or "en"

View file

@ -259,7 +259,10 @@ def get_user_pages_or_reports(parent, cache=False):
def load_translations(bootinfo):
from frappe.translate import get_messages_for_boot
if frappe.conf.use_gettext:
from frappe.gettext.translate import get_messages_for_boot
else:
from frappe.translate import get_messages_for_boot
bootinfo["lang"] = frappe.lang
bootinfo["__messages"] = get_messages_for_boot()

View file

@ -3,7 +3,6 @@
import frappe
from frappe import _
from frappe.tests.utils import FrappeTestCase
from frappe.translate import clear_cache
class TestTranslation(FrappeTestCase):
@ -12,6 +11,11 @@ class TestTranslation(FrappeTestCase):
def tearDown(self):
frappe.local.lang = "en"
if frappe.conf.use_gettext:
from frappe.gettext.translate import clear_cache
else:
from frappe.translate import clear_cache
clear_cache()
def test_doctype(self):

View file

@ -6,7 +6,7 @@ import json
import frappe
from frappe.geo.country_info import get_country_info
from frappe.permissions import AUTOMATIC_ROLES
from frappe.translate import get_messages_for_boot, send_translations, set_default_language
from frappe.translate import send_translations, set_default_language
from frappe.utils import cint, now, strip
from frappe.utils.password import update_password
@ -300,6 +300,11 @@ def disable_future_access():
def load_messages(language):
"""Load translation messages for given language from all `setup_wizard_requires`
javascript files"""
if frappe.conf.use_gettext:
from frappe.gettext.translate import get_messages_for_boot
else:
from frappe.translate import get_messages_for_boot
frappe.clear_cache()
set_default_language(get_language_code(language))
frappe.db.commit()