Philipp Hörist pushed to branch master at gajim / gajim

Commits:
e5fe30cb by Philipp Hörist at 2018-10-12T21:42:38Z
Add get_builder() for plugins

- - - - -
c43714e4 by Philipp Hörist at 2018-10-12T21:42:38Z
Dont monkey patch _() into plugins

Plugins can import _() from plugins_i18n

- - - - -


3 changed files:

- gajim/gtk/util.py
- gajim/plugins/helpers.py
- gajim/plugins/pluginmanager.py


Changes:

=====================================
gajim/gtk/util.py
=====================================
@@ -13,6 +13,7 @@
 # along with Gajim. If not, see <http://www.gnu.org/licenses/>.
 
 from typing import Tuple
+from typing import Any
 
 import os
 import sys
@@ -35,9 +36,19 @@ log = logging.getLogger('gajim.gtk.util')
 
 
 class Builder:
-    def __init__(self, filename: str, widget: str = None) -> None:
+    def __init__(self,
+                 filename: str,
+                 widget: str = None,
+                 domain: str = None,
+                 gettext_: Any = None) -> None:
         self._builder = Gtk.Builder()
-        self._builder.set_translation_domain(i18n.DOMAIN)
+
+        if domain is None:
+            domain = i18n.DOMAIN
+        self._builder.set_translation_domain(domain)
+
+        if gettext_ is None:
+            gettext_ = _
 
         file_path = os.path.join(configpaths.get('GUI'), filename)
 
@@ -46,7 +57,8 @@ class Builder:
             tree = ET.parse(file_path)
             for node in tree.iter():
                 if 'translatable' in node.attrib and node.text is not None:
-                    node.text = _(node.text)
+                    node.text = gettext_(node.text)
+
             xml_text = ET.tostring(tree.getroot(),
                                    encoding='unicode',
                                    method='xml')


=====================================
gajim/plugins/helpers.py
=====================================
@@ -26,6 +26,9 @@ __all__ = ['log', 'log_calls', 'Singleton']
 import logging
 import functools
 
+from gajim.plugins import plugins_i18n
+from gajim.gtk.util import Builder
+
 log = logging.getLogger('gajim.plugin_system')
 '''
 Logger for code related to plug-in system.
@@ -130,3 +133,10 @@ class Singleton(type):
                 #'classname' : cls.__name__})
 
         return cls.instance
+
+
+def get_builder(file_name: str, widget: str = None) -> Builder:
+    return Builder(file_name,
+                   widget,
+                   domain=plugins_i18n.DOMAIN,
+                   gettext_=plugins_i18n._)


=====================================
gajim/plugins/pluginmanager.py
=====================================
@@ -694,11 +694,7 @@ class PluginManager(metaclass=Singleton):
 
                     plugins_found.append(module_attr)
                 except TypeError:
-                    # set plugin localization
-                    try:
-                        module_attr._ = plugins_i18n._
-                    except AttributeError:
-                        pass
+                    pass
                 except configparser.NoOptionError:
                     # all fields are required
                     log.debug(



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/compare/00c8e5c01dd92f54505fef6e96117e5710d118a2...c43714e4c2d49278e88013a7ef434eb252603b90

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/compare/00c8e5c01dd92f54505fef6e96117e5710d118a2...c43714e4c2d49278e88013a7ef434eb252603b90
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
Commits@gajim.org
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to