diff --git a/panels/menu.py b/panels/menu.py index cbdba50b..0c328379 100644 --- a/panels/menu.py +++ b/panels/menu.py @@ -6,7 +6,7 @@ import json gi.require_version("Gtk", "3.0") from gi.repository import Gtk -from jinja2 import Environment, Template +from jinja2 import Template from ks_includes.screen_panel import ScreenPanel @@ -75,26 +75,23 @@ class MenuPanel(ScreenPanel): key = list(self.items[i])[0] item = self.items[i][key] - env = Environment(extensions=["jinja2.ext.i18n"], autoescape=True) - env.install_gettext_translations(self._config.get_lang()) - printer = self._printer.get_printer_status_data() - name = env.from_string(item['name']).render(printer) - icon = env.from_string(item['icon']).render(printer) if item['icon'] else None - style = env.from_string(item['style']).render(printer) if item['style'] else None + name = self._screen.env.from_string(item['name']).render(printer) + icon = self._screen.env.from_string(item['icon']).render(printer) if item['icon'] else None + style = self._screen.env.from_string(item['style']).render(printer) if item['style'] else None b = self._gtk.Button(icon, name, style or f"color{i % 4 + 1}") if item['panel'] is not None: - panel = env.from_string(item['panel']).render(printer) + panel = self._screen.env.from_string(item['panel']).render(printer) b.connect("clicked", self.menu_item_clicked, panel, item) elif item['method'] is not None: params = {} if item['params'] is not False: try: - p = env.from_string(item['params']).render(printer) + p = self._screen.env.from_string(item['params']).render(printer) params = json.loads(p) except Exception as e: logging.exception(f"Unable to parse parameters for [{name}]:\n{e}") diff --git a/screen.py b/screen.py index 9bd9f7b1..ec799654 100755 --- a/screen.py +++ b/screen.py @@ -109,6 +109,8 @@ class KlipperScreen(Gtk.Window): self._config = KlipperScreenConfig(configfile, self) self.lang_ltr = set_text_direction(self._config.get_main_config().get("language", None)) + self.env = Environment(extensions=["jinja2.ext.i18n"], autoescape=True) + self.env.install_gettext_translations(self._config.get_lang()) self.connect("key-press-event", self._key_press_event) self.connect("configure_event", self.update_size) @@ -681,6 +683,7 @@ class KlipperScreen(Gtk.Window): def change_language(self, widget, lang): self._config.install_language(lang) self.lang_ltr = set_text_direction(lang) + self.env.install_gettext_translations(self._config.get_lang()) self._config._create_configurable_options(self) self.reload_panels() @@ -750,9 +753,7 @@ class KlipperScreen(Gtk.Window): ] try: - env = Environment(extensions=["jinja2.ext.i18n"], autoescape=True) - env.install_gettext_translations(self._config.get_lang()) - j2_temp = env.from_string(text) + j2_temp = self.env.from_string(text) text = j2_temp.render() except Exception as e: logging.debug(f"Error parsing jinja for confirm_send_action\n{e}")