From 0b8b8294836dfc949ec552e89d571b64d909dbea Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Tue, 11 Apr 2023 11:59:19 +0530 Subject: [PATCH] perf: dont cache intermediate translation files Just caching final files for each language is enough, duplicating doesn't help much. --- .../doctype/translation/test_translation.py | 10 +------- frappe/translate.py | 25 ++++++++----------- 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/frappe/core/doctype/translation/test_translation.py b/frappe/core/doctype/translation/test_translation.py index 13ce711c66..a64715a32e 100644 --- a/frappe/core/doctype/translation/test_translation.py +++ b/frappe/core/doctype/translation/test_translation.py @@ -3,7 +3,7 @@ import frappe from frappe import _ from frappe.tests.utils import FrappeTestCase -from frappe.translate import APP_TRANSLATION_KEY, clear_cache +from frappe.translate import clear_cache class TestTranslation(FrappeTestCase): @@ -37,20 +37,16 @@ class TestTranslation(FrappeTestCase): frappe.local.lang = "es" - clear_translation_cache() self.assertTrue(_(data[0][0]), data[0][1]) - clear_translation_cache() self.assertTrue(_(data[1][0]), data[1][1]) frappe.local.lang = "es-MX" # different translation for es-MX - clear_translation_cache() self.assertTrue(_(data[2][0]), data[2][1]) # from spanish (general) - clear_translation_cache() self.assertTrue(_(data[1][0]), data[1][1]) def test_multi_language_translations(self): @@ -112,7 +108,3 @@ def create_translation(key, val): translation.translated_text = val[1] translation.save() return translation - - -def clear_translation_cache(): - frappe.cache().delete_key(APP_TRANSLATION_KEY) diff --git a/frappe/translate.py b/frappe/translate.py index 03bd49e4c6..041e983432 100644 --- a/frappe/translate.py +++ b/frappe/translate.py @@ -56,7 +56,6 @@ CSV_STRIP_WHITESPACE_PATTERN = re.compile(r"{\s?([0-9]+)\s?}") # Cache keys MERGED_TRANSLATION_KEY = "merged_translations" -APP_TRANSLATION_KEY = "translations_from_apps" USER_TRANSLATION_KEY = "lang_user_translations" @@ -308,20 +307,17 @@ def get_translations_from_apps(lang, apps=None): if lang == "en": return {} - def _get_from_disk(): - translations = {} - for app in apps or frappe.get_installed_apps(_ensure_on_bench=True): - path = os.path.join(frappe.get_pymodule_path(app), "translations", lang + ".csv") - translations.update(get_translation_dict_from_file(path, lang, app) or {}) - if "-" in lang: - parent = lang.split("-", 1)[0] - parent_translations = get_translations_from_apps(parent) - parent_translations.update(translations) - return parent_translations + translations = {} + for app in apps or frappe.get_installed_apps(_ensure_on_bench=True): + path = os.path.join(frappe.get_pymodule_path(app), "translations", lang + ".csv") + translations.update(get_translation_dict_from_file(path, lang, app) or {}) + if "-" in lang: + parent = lang.split("-", 1)[0] + parent_translations = get_translations_from_apps(parent) + parent_translations.update(translations) + return parent_translations - return translations - - return frappe.cache().hget(APP_TRANSLATION_KEY, lang, generator=_get_from_disk) + return translations def get_translation_dict_from_file(path, lang, app, throw=False) -> dict[str, str]: @@ -376,7 +372,6 @@ def clear_cache(): # clear translations saved in boot cache cache.delete_key("bootinfo") cache.delete_key("translation_assets") - cache.delete_key(APP_TRANSLATION_KEY) cache.delete_key(USER_TRANSLATION_KEY) cache.delete_key(MERGED_TRANSLATION_KEY)