summaryrefslogtreecommitdiffstats
path: root/pyanaconda/language.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyanaconda/language.py')
-rw-r--r--pyanaconda/language.py216
1 files changed, 0 insertions, 216 deletions
diff --git a/pyanaconda/language.py b/pyanaconda/language.py
deleted file mode 100644
index 9c37e79db..000000000
--- a/pyanaconda/language.py
+++ /dev/null
@@ -1,216 +0,0 @@
-#
-# language.py: install data component that stores information about both
-# installer runtime language choice and installed system
-# language support.
-#
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009 Red Hat, Inc.
-# All rights reserved.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-
-import os
-import string
-import locale
-
-import gettext
-from pyanaconda.constants import ROOT_PATH, DEFAULT_LANG
-import localization
-from simpleconfig import SimpleConfigFile
-
-import logging
-log = logging.getLogger("anaconda")
-
-class Language(object):
- def _setInstLang(self, value):
- # Always store in its full form so we know what we're comparing with.
- try:
- self._instLang = self._canonLang(value)
- except ValueError:
- # If the language isn't listed in lang-table, we won't know what
- # keyboard/etc. to use. However, we can still set the $LANG
- # to that and make sure it works in the installed system.
- self._instLang = value
-
- # If we're running in text mode, value may not be a supported language
- # to display. Fall back to the default for now.
- if self.displayMode == 't':
- for (lang, info) in self.localeInfo.iteritems():
- if lang == self._instLang and info[2] == "False":
- self._instLang = self._default
- break
-
- # Now set some things to make sure the language setting takes effect
- # right now.
- os.environ["LANG"] = self._instLang
- os.environ["LC_NUMERIC"] = "C"
-
- try:
- locale.setlocale(locale.LC_ALL, "")
- except locale.Error:
- pass
-
- # XXX: oh ick. this is the sort of thing which you should never do...
- # but we switch languages at runtime and thus need to invalidate
- # the set of languages/mofiles which gettext knows about
- gettext._translations = {}
-
- def _getInstLang(self):
- # If we were given a language that's not in lang-table, lie and say
- # we're using the default. This prevents us from having to check all
- # over the place.
- if self._instLang in self.localeInfo.keys():
- return self._instLang
- else:
- return self._default
-
- # The language being displayed while anaconda is running.
- instLang = property(lambda s: s._getInstLang(), lambda s, v: s._setInstLang(v))
-
- def _setSystemLang(self, value):
- # Always store in its full form so we know what we're comparing with.
- try:
- self._systemLang = self._canonLang(value)
- except ValueError:
- # If the language isn't listed in lang-table, we won't know what
- # keyboard/etc. to use. However, we can still set the $LANG
- # to that and make sure it works in the installed system.
- self._systemLang = value
-
- # Now set a bunch of other things that'll get written to
- # /etc/sysconfig/i18n on the installed system.
- self.info["LANG"] = self._systemLang
-
- if not self.localeInfo.has_key(self._systemLang):
- return
-
- if self.localeInfo[self._systemLang][2] == "False":
- self.info["SYSFONT"] = None
- else:
- self.info["SYSFONT"] = "latarcyrheb-sun16"
-
- # XXX hack - because of exceptional cases on the var - zh_CN.GB2312
- if self._systemLang == "zh_CN.GB18030":
- self.info["LANGUAGE"] = "zh_CN.GB18030:zh_CN.GB2312:zh_CN"
-
- # The language to use on the installed system. This can differ from the
- # language being used during anaconda. For instance, text installs cannot
- # display all languages (CJK, Indic, etc.).
- systemLang = property(lambda s: s._systemLang, lambda s, v: s._setSystemLang(v))
-
- def __init__ (self, display_mode = 'g'):
- self._default = DEFAULT_LANG
- self.displayMode = display_mode
- self.info = {}
- self.nativeLangNames = {}
-
- # English name -> native name mapping
- search = ('lang-names', '/usr/share/anaconda/lang-names')
- for path in search:
- if os.access(path, os.R_OK):
- f = open(path, 'r')
- for line in f.readlines():
- lang, native = string.split(line, '\t')
- native = native.strip()
- self.nativeLangNames[lang] = native
-
- f.close()
- break
-
- self.localeInfo = localeinfo.get(self._default)
-
- # instLang must be set after localeInfo is populated, in case the
- # current setting is unsupported by anaconda..
- self.instLang = os.environ.get("LANG", self._default)
- self.systemLang = os.environ.get("LANG", self._default)
-
- def _canonLang(self, lang):
- """Convert the shortened form of a language name into the full
- version. If it's not found, raise ValueError.
-
- Example: fr -> fr_FR.UTF-8
- fr_FR -> fr_FR.UTF-8
- fr_CA -> ValueError
- """
- for key in self.localeInfo.keys():
- if lang in localization.expand_langs(key):
- return key
-
- raise ValueError
-
- def available(self):
- return self.nativeLangNames.keys()
-
- def dracutSetupArgs(self):
- args=set()
-
- for (key, val) in self.info.iteritems():
- if val != None:
- args.add("%s=%s" % (key, val))
-
- return args
-
- def getCurrentLangSearchList(self):
- return localization.expand_langs(self.systemLang) + ['C']
-
- def getDefaultTimeZone(self):
- try:
- return self.localeInfo[self.systemLang][4]
- except KeyError:
- # If doing an upgrade and the system language is something not
- # recognized by anaconda, we should try to see if we can figure
- # it out from the running system.
- if os.path.exists(ROOT_PATH + "/etc/sysconfig/clock"):
- cfg = SimpleConfigFile()
- cfg.read(ROOT_PATH + "/etc/sysconfig/clock")
-
- try:
- return cfg.get("ZONE")
- except:
- return self.localeInfo[self._default][4]
- else:
- return self.localeInfo[self._default][4]
-
- def textSupported(self, lang):
- try:
- l = self._canonLang(lang)
- except ValueError:
- l = self._default
-
- return self.localeInfo[l][2]
-
- def getLangName(self, lang):
- try:
- l = self._canonLang(lang)
- except ValueError:
- l = self._default
-
- return self.localeInfo[l][0]
-
- def getLangByName(self, name):
- for (key, val) in self.localeInfo.iteritems():
- if val[0] == name:
- return key
-
- def getNativeLangName(self, lang):
- return self.nativeLangNames[lang]
-
- def write(self):
- f = open(ROOT_PATH + "/etc/sysconfig/i18n", "w")
-
- for (key, val) in self.info.iteritems():
- if val != None:
- f.write("%s=\"%s\"\n" % (key, val))
-
- f.close()