Skip to content

Commit 018384d

Browse files
committed
Add localization for UI
1 parent 7ee2217 commit 018384d

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

src/bitmessagekivy/base_navigation.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
"""
33
Base class for Navigation Drawer
44
"""
5-
5+
import gettext
6+
import os
67
from kivy.lang import Observable
78

89
from kivy.properties import (
@@ -35,9 +36,36 @@ def __init__(self, defaultlang):
3536
self.ugettext = None
3637
self.lang = defaultlang
3738

38-
@staticmethod
39-
def _(text):
40-
return text
39+
def _(self, text):
40+
# return text
41+
return self.ugettext(text)
42+
43+
def fbind(self, name, func, args, **kwargs):
44+
"""Function for binding to observers """
45+
if name == "_":
46+
self.observers.append((func, args, kwargs))
47+
else:
48+
return super(BaseLanguage, self).fbind(name, func, *args, **kwargs)
49+
50+
def funbind(self, name, func, args, **kwargs):
51+
"""Function for unbinding to observers """
52+
if name == "_":
53+
key = (func, args, kwargs)
54+
if key in self.observers:
55+
self.observers.remove(key)
56+
else:
57+
return super(BaseLanguage, self).funbind(name, func, *args, **kwargs)
58+
59+
def switch_lang(self, lang):
60+
"""Function language switching """
61+
# get the right locales directory, and instanciate a gettext
62+
locale_dir = os.path.join(os.path.dirname(__file__), 'translations', 'locales')
63+
locales = gettext.translation('langapp', locale_dir, languages=[lang])
64+
self.ugettext = locales.gettext
65+
66+
# update all the kv rules attached to this text
67+
for func, largs, in self.observers:
68+
func(largs, None, None)
4169

4270

4371
class BaseNavigationItem(OneLineAvatarIconListItem):

0 commit comments

Comments
 (0)