Server IP : 127.0.0.2 / Your IP : 18.119.122.86 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/python3/dist-packages/LanguageSelector/ |
Upload File : |
# (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 possible non-English elements after the first English element """ tmp = [] is_eng = False for lang in userLanguage.split(':'): if 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, since there ' + 'should not be any non-English items after an English item.') return validatedLangList if __name__ == "__main__": lsb = LanguageSelectorBase(datadir="..") lsb.openCache(apt.progress.OpProgress()) print(lsb.verifyPackageLists())