|
|
|
@ -19,6 +19,7 @@ import os
|
|
|
|
|
from calculate.lib.datavars import ReadonlyVariable
|
|
|
|
|
from calculate.lib.utils.common import (getValueFromCmdLine,
|
|
|
|
|
getValueFromConfig)
|
|
|
|
|
from collections import OrderedDict
|
|
|
|
|
|
|
|
|
|
import sys
|
|
|
|
|
from calculate.lib.cl_lang import setLocalTranslate, getLazyLocalTranslate
|
|
|
|
@ -31,8 +32,8 @@ __ = getLazyLocalTranslate(_)
|
|
|
|
|
|
|
|
|
|
class Locale(object):
|
|
|
|
|
# http://www.localeplanet.com/icu/
|
|
|
|
|
langData = {
|
|
|
|
|
'be_BY': {
|
|
|
|
|
langData = OrderedDict([
|
|
|
|
|
('be_BY', {
|
|
|
|
|
'name': 'Беларуская (Беларусь)',
|
|
|
|
|
'locale': 'be_BY.UTF-8',
|
|
|
|
|
'keymap': 'by',
|
|
|
|
@ -41,8 +42,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'us,by',
|
|
|
|
|
'language': 'be',
|
|
|
|
|
},
|
|
|
|
|
'bg_BG': {
|
|
|
|
|
}),
|
|
|
|
|
('bg_BG', {
|
|
|
|
|
'name': 'Български (България)',
|
|
|
|
|
'locale': 'bg_BG.UTF-8',
|
|
|
|
|
'keymap': 'bg_bds-utf8',
|
|
|
|
@ -51,8 +52,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'us,bg',
|
|
|
|
|
'language': 'bg',
|
|
|
|
|
},
|
|
|
|
|
'bs_BA': {
|
|
|
|
|
}),
|
|
|
|
|
('bs_BA', {
|
|
|
|
|
'name': 'Bosanski (Bosna i Hercegovina)',
|
|
|
|
|
'locale': 'bs_BA.UTF-8',
|
|
|
|
|
'keymap': 'slovene',
|
|
|
|
@ -61,8 +62,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'ba',
|
|
|
|
|
'language': 'bs',
|
|
|
|
|
},
|
|
|
|
|
'cs_CZ': {
|
|
|
|
|
}),
|
|
|
|
|
('cs_CZ', {
|
|
|
|
|
'name': 'Čeština (Česká republika)',
|
|
|
|
|
'locale': 'cs_CZ.UTF-8',
|
|
|
|
|
'keymap': 'cz',
|
|
|
|
@ -71,8 +72,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'cz',
|
|
|
|
|
'language': 'cs',
|
|
|
|
|
},
|
|
|
|
|
'da_DK': {
|
|
|
|
|
}),
|
|
|
|
|
('da_DK', {
|
|
|
|
|
'name': 'Dansk (Danmark)',
|
|
|
|
|
'locale': 'da_DK.UTF-8',
|
|
|
|
|
'keymap': 'dk-latin1',
|
|
|
|
@ -81,8 +82,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'dk',
|
|
|
|
|
'language': 'da',
|
|
|
|
|
},
|
|
|
|
|
'de_DE': {
|
|
|
|
|
}),
|
|
|
|
|
('de_DE', {
|
|
|
|
|
'name': 'Deutsch (Deutschland)',
|
|
|
|
|
'locale': 'de_DE.UTF-8',
|
|
|
|
|
'keymap': 'de-latin1',
|
|
|
|
@ -91,8 +92,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'de',
|
|
|
|
|
'language': 'de',
|
|
|
|
|
},
|
|
|
|
|
'en_AU': {
|
|
|
|
|
}),
|
|
|
|
|
('en_AU', {
|
|
|
|
|
'name': 'English (Australia)',
|
|
|
|
|
'locale': 'en_AU.UTF-8',
|
|
|
|
|
'keymap': 'us',
|
|
|
|
@ -101,8 +102,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'us',
|
|
|
|
|
'language': 'en_AU',
|
|
|
|
|
},
|
|
|
|
|
'en_GB': {
|
|
|
|
|
}),
|
|
|
|
|
('en_GB', {
|
|
|
|
|
'name': 'English (United Kingdom)',
|
|
|
|
|
'locale': 'en_GB.UTF-8',
|
|
|
|
|
'keymap': 'uk',
|
|
|
|
@ -111,8 +112,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'gb',
|
|
|
|
|
'language': 'en_GB',
|
|
|
|
|
},
|
|
|
|
|
'en_US': {
|
|
|
|
|
}),
|
|
|
|
|
('en_US', {
|
|
|
|
|
'name': 'English (United States)',
|
|
|
|
|
'locale': 'en_US.UTF-8',
|
|
|
|
|
'keymap': 'us',
|
|
|
|
@ -121,8 +122,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'us',
|
|
|
|
|
'language': 'en',
|
|
|
|
|
},
|
|
|
|
|
'es_ES': {
|
|
|
|
|
}),
|
|
|
|
|
('es_ES', {
|
|
|
|
|
'name': 'Español (España)',
|
|
|
|
|
'locale': 'es_ES.UTF-8',
|
|
|
|
|
'keymap': 'es euro2',
|
|
|
|
@ -131,8 +132,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'es',
|
|
|
|
|
'language': 'es',
|
|
|
|
|
},
|
|
|
|
|
'es_UY': {
|
|
|
|
|
}),
|
|
|
|
|
('es_UY', {
|
|
|
|
|
'name': 'Español (Uruguay)',
|
|
|
|
|
'locale': 'es_UY.UTF-8',
|
|
|
|
|
'keymap': 'la-latin1',
|
|
|
|
@ -141,8 +142,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'latam',
|
|
|
|
|
'language': 'es_UY',
|
|
|
|
|
},
|
|
|
|
|
'es_VE': {
|
|
|
|
|
}),
|
|
|
|
|
('es_VE', {
|
|
|
|
|
'name': 'Español (Venezuela)',
|
|
|
|
|
'locale': 'es_VE.UTF-8',
|
|
|
|
|
'keymap': 'la-latin1',
|
|
|
|
@ -151,8 +152,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'latam',
|
|
|
|
|
'language': 'es_UY',
|
|
|
|
|
},
|
|
|
|
|
'et_EE': {
|
|
|
|
|
}),
|
|
|
|
|
('et_EE', {
|
|
|
|
|
'name': 'Eesti (Eesti)',
|
|
|
|
|
'locale': 'et_EE.UTF-8',
|
|
|
|
|
'keymap': 'et',
|
|
|
|
@ -161,18 +162,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'ee',
|
|
|
|
|
'language': 'et',
|
|
|
|
|
},
|
|
|
|
|
'fi_FI': {
|
|
|
|
|
'name': 'Suomi (Suomi)',
|
|
|
|
|
'locale': 'fi_FI.UTF-8',
|
|
|
|
|
'keymap': 'fi-latin9',
|
|
|
|
|
'timezone': 'Europe/Helsinki',
|
|
|
|
|
'dumpkeys_charset': '',
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'fi',
|
|
|
|
|
'language': 'fi',
|
|
|
|
|
},
|
|
|
|
|
'fr_BE': {
|
|
|
|
|
}),
|
|
|
|
|
('fr_BE', {
|
|
|
|
|
'name': 'Français (Belgique)',
|
|
|
|
|
'locale': 'fr_BE.UTF-8',
|
|
|
|
|
'keymap': 'be-latin1',
|
|
|
|
@ -181,8 +172,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'be',
|
|
|
|
|
'language': 'fr',
|
|
|
|
|
},
|
|
|
|
|
'fr_CA': {
|
|
|
|
|
}),
|
|
|
|
|
('fr_CA', {
|
|
|
|
|
'name': 'Français (Canada)',
|
|
|
|
|
'locale': 'fr_CA.UTF-8',
|
|
|
|
|
'keymap': 'cf',
|
|
|
|
@ -191,8 +182,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'ca',
|
|
|
|
|
'language': 'fr',
|
|
|
|
|
},
|
|
|
|
|
'fr_FR': {
|
|
|
|
|
}),
|
|
|
|
|
('fr_FR', {
|
|
|
|
|
'name': 'Français (France)',
|
|
|
|
|
'locale': 'fr_FR.UTF-8',
|
|
|
|
|
'keymap': 'fr-latin9',
|
|
|
|
@ -201,8 +192,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'fr',
|
|
|
|
|
'language': 'fr',
|
|
|
|
|
},
|
|
|
|
|
'hu_HU': {
|
|
|
|
|
}),
|
|
|
|
|
('hu_HU', {
|
|
|
|
|
'name': 'Magyar (Magyarország)',
|
|
|
|
|
'locale': 'hu_HU.UTF-8',
|
|
|
|
|
'keymap': 'hu',
|
|
|
|
@ -211,8 +202,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'hu',
|
|
|
|
|
'language': 'hu',
|
|
|
|
|
},
|
|
|
|
|
'is_IS': {
|
|
|
|
|
}),
|
|
|
|
|
('is_IS', {
|
|
|
|
|
'name': 'Íslenska (Ísland)',
|
|
|
|
|
'locale': 'is_IS.UTF-8',
|
|
|
|
|
'keymap': 'is-latin1',
|
|
|
|
@ -221,8 +212,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'is',
|
|
|
|
|
'language': 'is',
|
|
|
|
|
},
|
|
|
|
|
'it_IT': {
|
|
|
|
|
}),
|
|
|
|
|
('it_IT', {
|
|
|
|
|
'name': 'Italiano (Italia)',
|
|
|
|
|
'locale': 'it_IT.UTF-8',
|
|
|
|
|
'keymap': 'it',
|
|
|
|
@ -231,8 +222,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'it',
|
|
|
|
|
'language': 'it',
|
|
|
|
|
},
|
|
|
|
|
'kk_KZ': {
|
|
|
|
|
}),
|
|
|
|
|
('kk_KZ', {
|
|
|
|
|
'name': 'Қазақ тілі (Қазақстан)',
|
|
|
|
|
'locale': 'kk_KZ.UTF-8',
|
|
|
|
|
'keymap': 'kaz_gost-unicode',
|
|
|
|
@ -241,8 +232,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'us,kz',
|
|
|
|
|
'language': 'kk',
|
|
|
|
|
},
|
|
|
|
|
'lt_LT': {
|
|
|
|
|
}),
|
|
|
|
|
('lt_LT', {
|
|
|
|
|
'name': 'Lietuvių (Lietuva)',
|
|
|
|
|
'locale': 'lt_LT.UTF-8',
|
|
|
|
|
'keymap': 'lt.baltic',
|
|
|
|
@ -251,8 +242,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'lt',
|
|
|
|
|
'language': 'lt',
|
|
|
|
|
},
|
|
|
|
|
'lv_LV': {
|
|
|
|
|
}),
|
|
|
|
|
('lv_LV', {
|
|
|
|
|
'name': 'Latviešu (Latvija)',
|
|
|
|
|
'locale': 'lv_LV.UTF-8',
|
|
|
|
|
'keymap': 'lv',
|
|
|
|
@ -261,8 +252,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'lv',
|
|
|
|
|
'language': 'lv',
|
|
|
|
|
},
|
|
|
|
|
'nl_BE': {
|
|
|
|
|
}),
|
|
|
|
|
('nl_BE', {
|
|
|
|
|
'name': 'Nederlands (België)',
|
|
|
|
|
'locale': 'nl_BE.UTF-8',
|
|
|
|
|
'keymap': 'nl',
|
|
|
|
@ -271,8 +262,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'lat9w-16',
|
|
|
|
|
'xkblayout': 'nl',
|
|
|
|
|
'language': 'nl_BE',
|
|
|
|
|
},
|
|
|
|
|
'nl_NL': {
|
|
|
|
|
}),
|
|
|
|
|
('nl_NL', {
|
|
|
|
|
'name': 'Nederlands (Nederland)',
|
|
|
|
|
'locale': 'nl_NL.UTF-8',
|
|
|
|
|
'keymap': 'nl',
|
|
|
|
@ -281,8 +272,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'nl',
|
|
|
|
|
'language': 'nl_NL',
|
|
|
|
|
},
|
|
|
|
|
'nn_NO': {
|
|
|
|
|
}),
|
|
|
|
|
('nn_NO', {
|
|
|
|
|
'name': 'Nynorsk (Noreg)',
|
|
|
|
|
'locale': 'nn_NO.UTF-8',
|
|
|
|
|
'keymap': 'no-latin1',
|
|
|
|
@ -291,8 +282,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'no',
|
|
|
|
|
'language': 'nn',
|
|
|
|
|
},
|
|
|
|
|
'pl_PL': {
|
|
|
|
|
}),
|
|
|
|
|
('pl_PL', {
|
|
|
|
|
'name': 'Polski (Polska)',
|
|
|
|
|
'locale': 'pl_PL.UTF-8',
|
|
|
|
|
'keymap': 'pl',
|
|
|
|
@ -301,8 +292,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'pl',
|
|
|
|
|
'language': 'pl',
|
|
|
|
|
},
|
|
|
|
|
'pt_BR': {
|
|
|
|
|
}),
|
|
|
|
|
('pt_BR', {
|
|
|
|
|
'name': 'Português (Brasil)',
|
|
|
|
|
'locale': 'pt_BR.UTF-8',
|
|
|
|
|
'keymap': 'br-abnt2',
|
|
|
|
@ -311,8 +302,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'br',
|
|
|
|
|
'language': 'pt_BR',
|
|
|
|
|
},
|
|
|
|
|
'pt_PT': {
|
|
|
|
|
}),
|
|
|
|
|
('pt_PT', {
|
|
|
|
|
'name': 'Português (Portugal)',
|
|
|
|
|
'locale': 'pt_PT.UTF-8@euro',
|
|
|
|
|
'keymap': 'pt-latin9',
|
|
|
|
@ -321,8 +312,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'pt',
|
|
|
|
|
'language': 'pt',
|
|
|
|
|
},
|
|
|
|
|
'ro_RO': {
|
|
|
|
|
}),
|
|
|
|
|
('ro_RO', {
|
|
|
|
|
'name': 'Română (România)',
|
|
|
|
|
'locale': 'ro_RO.UTF-8',
|
|
|
|
|
'keymap': 'ro_win',
|
|
|
|
@ -331,8 +322,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'ro',
|
|
|
|
|
'language': 'ro',
|
|
|
|
|
},
|
|
|
|
|
'ru_RU': {
|
|
|
|
|
}),
|
|
|
|
|
('ru_RU', {
|
|
|
|
|
'name': 'Русский (Россия)',
|
|
|
|
|
'locale': 'ru_RU.UTF-8',
|
|
|
|
|
'keymap': '-u ruwin_cplk-UTF-8',
|
|
|
|
@ -341,8 +332,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'us,ru',
|
|
|
|
|
'language': 'ru',
|
|
|
|
|
},
|
|
|
|
|
'sk_SK': {
|
|
|
|
|
}),
|
|
|
|
|
('sk_SK', {
|
|
|
|
|
'name': 'Slovenčina (Slovenská republika)',
|
|
|
|
|
'locale': 'sk_SK.UTF-8',
|
|
|
|
|
'keymap': 'sk-qwertz',
|
|
|
|
@ -351,8 +342,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'sk',
|
|
|
|
|
'language': 'sk',
|
|
|
|
|
},
|
|
|
|
|
'sl_SI': {
|
|
|
|
|
}),
|
|
|
|
|
('sl_SI', {
|
|
|
|
|
'name': 'Slovenščina (Slovenija)',
|
|
|
|
|
'locale': 'sl_SI.UTF-8',
|
|
|
|
|
'keymap': 'slovene',
|
|
|
|
@ -361,8 +352,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'si',
|
|
|
|
|
'language': 'sl',
|
|
|
|
|
},
|
|
|
|
|
'sq_AL': {
|
|
|
|
|
}),
|
|
|
|
|
('sq_AL', {
|
|
|
|
|
'name': 'Shqip (Shqipëria)',
|
|
|
|
|
'locale': 'sq_AL.UTF-8',
|
|
|
|
|
'keymap': 'al',
|
|
|
|
@ -371,8 +362,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'al',
|
|
|
|
|
'language': 'sq',
|
|
|
|
|
},
|
|
|
|
|
'sr_RS': {
|
|
|
|
|
}),
|
|
|
|
|
('sr_RS', {
|
|
|
|
|
'name': 'Српски (Србија)',
|
|
|
|
|
'locale': 'sr_RS.UTF-8',
|
|
|
|
|
'keymap': 'sr-unicode',
|
|
|
|
@ -381,8 +372,18 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'us,rs',
|
|
|
|
|
'language': 'sr',
|
|
|
|
|
},
|
|
|
|
|
'sv_SE': {
|
|
|
|
|
}),
|
|
|
|
|
('fi_FI', {
|
|
|
|
|
'name': 'Suomi (Suomi)',
|
|
|
|
|
'locale': 'fi_FI.UTF-8',
|
|
|
|
|
'keymap': 'fi-latin9',
|
|
|
|
|
'timezone': 'Europe/Helsinki',
|
|
|
|
|
'dumpkeys_charset': '',
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'fi',
|
|
|
|
|
'language': 'fi',
|
|
|
|
|
}),
|
|
|
|
|
('sv_SE', {
|
|
|
|
|
'name': 'Svenska (Sverige)',
|
|
|
|
|
'locale': 'sv_SE.UTF-8',
|
|
|
|
|
'keymap': 'sv-latin1',
|
|
|
|
@ -391,8 +392,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'lat0-16',
|
|
|
|
|
'xkblayout': 'us,se',
|
|
|
|
|
'language': 'sv',
|
|
|
|
|
},
|
|
|
|
|
'uk_UA': {
|
|
|
|
|
}),
|
|
|
|
|
('uk_UA', {
|
|
|
|
|
'name': 'Українська (Україна)',
|
|
|
|
|
'locale': 'uk_UA.UTF-8',
|
|
|
|
|
'keymap': 'ua-utf',
|
|
|
|
@ -401,8 +402,8 @@ class Locale(object):
|
|
|
|
|
'consolefont': 'ter-v14n',
|
|
|
|
|
'xkblayout': 'us,ua',
|
|
|
|
|
'language': 'ua',
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
def getLangs(self):
|
|
|
|
|
return self.langData.keys()
|
|
|
|
@ -524,7 +525,7 @@ class VariableOsLang(ReadonlyVariable, Locale):
|
|
|
|
|
type = "list"
|
|
|
|
|
|
|
|
|
|
def get(self):
|
|
|
|
|
return list(sorted(list(set(self.getLangs()))))
|
|
|
|
|
return self.getLangs()
|
|
|
|
|
|
|
|
|
|
def humanReadable(self):
|
|
|
|
|
return map(lambda x: self.getFieldByLang("name", x),
|
|
|
|
|