D7net Mini Sh3LL v1
Current File : //lib/python3/dist-packages/secretstorage/../LanguageSelector/LanguageSelector.py |
# (c) 2006 Canonical
# Author: Michael Vogt <michael.vogt@ubuntu.com>
#
# Released under the GPL
#
from __future__ import print_function
from __future__ import absolute_import
import warnings
warnings.filterwarnings("ignore", "apt API not stable yet", FutureWarning)
import apt
import dbus
import os
import language_support_pkgs
from LanguageSelector.LocaleInfo import LocaleInfo
import LanguageSelector.LangCache
from LanguageSelector.utils import *
from LanguageSelector import macros
# the language-selector abstraction
class LanguageSelectorBase(object):
""" base class for language-selector code """
def __init__(self, datadir=""):
self._datadir = datadir
# load the localeinfo "database"
self._localeinfo = LocaleInfo("languagelist", self._datadir)
self._cache = None
def openCache(self, progress):
self._cache = LanguageSelector.LangCache.LanguageSelectorPkgCache(self._localeinfo, progress)
def getMissingLangPacks(self):
"""
return a list of language packs that are not installed
but should be installed
"""
if self._datadir:
ls = language_support_pkgs.LanguageSupport(self._cache,
os.path.join(self._datadir, "data", "pkg_depends"))
else:
ls = language_support_pkgs.LanguageSupport(self._cache)
missing = []
for pack in ls.missing(): # ls.missing() returns a set; we need a list
missing.append(pack)
return missing
def writeSysFormatsSetting(self, sysFormats):
""" write various LC_* variables (e.g. de_DE.UTF-8) """
bus = dbus.SystemBus()
obj = bus.get_object('com.ubuntu.LanguageSelector','/')
iface = dbus.Interface(obj,dbus_interface="com.ubuntu.LanguageSelector")
iface.SetSystemDefaultFormatsEnv(sysFormats)
def writeSysLanguageSetting(self, sysLanguage):
""" write the system "LANGUAGE" and "LANG" variables """
bus = dbus.SystemBus()
obj = bus.get_object('com.ubuntu.LanguageSelector','/')
iface = dbus.Interface(obj,dbus_interface="com.ubuntu.LanguageSelector")
iface.SetSystemDefaultLanguageEnv(sysLanguage)
def writeUserFormatsSetting(self, userFormats):
""" write various LC_* variables (e.g. de_DE.UTF-8) """
uid = os.getuid()
if uid == 0:
warnings.warn("No formats locale saved for user '%s'." % os.getenv('USER'))
return
bus = dbus.SystemBus()
obj = bus.get_object('org.freedesktop.Accounts',
'/org/freedesktop/Accounts/User%i' % uid)
iface = dbus.Interface(obj, dbus_interface='org.freedesktop.Accounts.User')
macr = macros.LangpackMacros(self._datadir, userFormats)
iface.SetFormatsLocale(macr['SYSLOCALE'])
def writeUserLanguageSetting(self, userLanguage):
""" write the user "LANGUAGE" and "LANG" variables """
uid = os.getuid()
if uid == 0:
warnings.warn("No language saved for user '%s'." % os.getenv('USER'))
return
bus = dbus.SystemBus()
obj = bus.get_object('org.freedesktop.Accounts',
'/org/freedesktop/Accounts/User%i' % uid)
iface = dbus.Interface(obj, dbus_interface='org.freedesktop.Accounts.User')
iface.SetLanguage(self.validateLangList(userLanguage))
def validateLangList(self, userLanguage):
"""
remove elements which can be assumed to cause user confusion
"""
tmp = []
is_eng = False
for lang in userLanguage.split(':'):
if lang == 'en_US':
tmp.extend(['en_US', 'en'])
break
elif lang.startswith('en_') or lang == 'en':
tmp.append(lang)
is_eng = True
elif not is_eng:
tmp.append(lang)
validatedLangList = ':'.join(tmp)
if validatedLangList != userLanguage:
warnings.warn('The language list was modified by the program.')
return validatedLangList
if __name__ == "__main__":
lsb = LanguageSelectorBase(datadir="..")
lsb.openCache(apt.progress.OpProgress())
print(lsb.verifyPackageLists())
AnonSec - 2021 | Recode By D7net