Добавлены методы для объекта локали

legacy27
Mike Hiretsky 6 years ago
parent 7488b12f39
commit c875d7390c

@ -29,7 +29,6 @@ setLocalTranslate('cl_lib3', sys.modules[__name__])
__ = getLazyLocalTranslate(_)
class Locale(object):
# http://www.localeplanet.com/icu/
langData = OrderedDict([
@ -415,6 +414,8 @@ class Locale(object):
})
])
fields = list(langData['en_US'].keys())
def getLangs(self):
return self.langData.keys()
@ -439,6 +440,31 @@ class Locale(object):
return self.langData.get(self.getLangByField('keymap', keymap),
self.langData['en_US'])[field]
def getLang(self, **kw):
"""
Получить язык по указанному полю.
getLang(keymap="ua-utf")
"""
if not kw:
raise AttributeError("getLang: field missed")
field = next(iter(kw.keys()))
if field not in self.fields:
raise AttributeError("getLang: wrong field")
return self.getLangByField(field, kw[field])
def __getattr__(self, attrname):
"""
Обработка getKeymap, getXkblayout
"""
if attrname.startswith('get'):
fieldname = attrname[3:].lower()
if fieldname in self.fields:
def wrapper(fieldvalue):
return self.getFieldByLang(fieldname, fieldvalue)
return wrapper
raise AttributeError("'Locale' object has no attribute '%s'" % attrname)
def getLangByField(self, field, value):
value = value or ""
if field == 'locale':

Loading…
Cancel
Save