-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathi18n.py
64 lines (64 loc) · 1.38 KB
/
i18n.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# coding=utf-8
import copy, fnmatch, os, configobj
import pkg_resources
i18n_global = {}
try:
files = pkg_resources.resource_listdir(__name__,'')
except:
files = os.listdir('.') + os.listdir('./hvsi')
for file in fnmatch.filter(files, "i18n_*.ini"):
if 'diff' in file:
continue
data = pkg_resources.resource_stream(__name__, file)
c = configobj.ConfigObj(data, interpolation=False, indent_type='\t', encoding='utf-8', default_encoding='utf-8')
lang = file.replace('i18n_','').replace('.ini','')
i18n_global[lang] = c
def update_dict(orig, new):
for k in new:
if isinstance(new[k], dict):
if k not in orig:
orig[k] = new[k]
else:
update_dict(orig[k], new[k])
else:
orig[k] = new[k]
class i18n_over():
def __init__(self, over=None):
self.o = True if over else False
if over:
self.i18n = copy.deepcopy(i18n_global)
update_dict(self.i18n, over)
def __getitem__(self, i):
if self.o:
return self.i18n[i]
else:
return i18n_global[i]
def __iter__(self):
if self.o:
return self.i18n.__iter__()
else:
return i18n_global.__iter__()
def keys(self):
if self.o:
return self.i18n.keys()
else:
return i18n_global.keys()
def override_title(page, en, fr):
return i18n_over(
{
'e': {
'pages': {
page: {
'title': en
}
}
},
'f': {
'pages': {
page: {
'title': fr
}
}
}
})
i18n = i18n_over()