|
2 | 2 | """
|
3 | 3 | Base class for Navigation Drawer
|
4 | 4 | """
|
5 |
| - |
| 5 | +import gettext |
| 6 | +import os |
6 | 7 | from kivy.lang import Observable
|
7 | 8 |
|
8 | 9 | from kivy.properties import (
|
@@ -35,9 +36,35 @@ def __init__(self, defaultlang):
|
35 | 36 | self.ugettext = None
|
36 | 37 | self.lang = defaultlang
|
37 | 38 |
|
38 |
| - @staticmethod |
39 |
| - def _(text): |
40 |
| - return text |
| 39 | + def _(self, text): |
| 40 | + return self.ugettext(text) |
| 41 | + |
| 42 | + def fbind(self, name, func, args, **kwargs): |
| 43 | + """Function for binding to observers """ |
| 44 | + if name == "_": |
| 45 | + self.observers.append((func, args, kwargs)) |
| 46 | + else: |
| 47 | + return super(BaseLanguage, self).fbind(name, func, *args, **kwargs) |
| 48 | + |
| 49 | + def funbind(self, name, func, args, **kwargs): |
| 50 | + """Function for unbinding to observers """ |
| 51 | + if name == "_": |
| 52 | + key = (func, args, kwargs) |
| 53 | + if key in self.observers: |
| 54 | + self.observers.remove(key) |
| 55 | + else: |
| 56 | + return super(BaseLanguage, self).funbind(name, func, *args, **kwargs) |
| 57 | + |
| 58 | + def switch_lang(self, lang): |
| 59 | + """Function language switching """ |
| 60 | + # get the right locales directory, and instanciate a gettext |
| 61 | + locale_dir = os.path.join(os.path.dirname(__file__), 'translations', 'locales') |
| 62 | + locales = gettext.translation('langapp', locale_dir, languages=[lang]) |
| 63 | + self.ugettext = locales.gettext |
| 64 | + |
| 65 | + # update all the kv rules attached to this text |
| 66 | + for func, largs, in self.observers: |
| 67 | + func(largs, None, None) |
41 | 68 |
|
42 | 69 |
|
43 | 70 | class BaseNavigationItem(OneLineAvatarIconListItem):
|
|
0 commit comments