Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv13259/Lib Modified Files: gettext.py Log Message: Add a per-message fallback mechanism for translations. Index: gettext.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/gettext.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** gettext.py 2002/01/11 06:33:28 1.12 --- gettext.py 2002/01/11 06:58:49 1.13 *************** *** 47,50 **** --- 47,51 ---- import sys import struct + import copy from errno import ENOENT *************** *** 103,106 **** --- 104,108 ---- self._info = {} self._charset = None + self._fallback = None if fp: self._parse(fp) *************** *** 109,116 **** --- 111,128 ---- pass + def add_fallback(self, fallback): + if self._fallback: + self._fallback.add_fallback(fallback) + else: + self._fallback = fallback + def gettext(self, message): + if self._fallback: + return self._fallback.gettext(message) return message def ugettext(self, message): + if self._fallback: + return self._fallback.ugettext(message) return unicode(message) *************** *** 189,196 **** def gettext(self, message): ! return self._catalog.get(message, message) def ugettext(self, message): ! tmsg = self._catalog.get(message, message) return unicode(tmsg, self._charset) --- 201,218 ---- def gettext(self, message): ! try: ! return self._catalog[message] ! except KeyError: ! if self._fallback: ! return self._fallback.gettext(message) ! return message def ugettext(self, message): ! try: ! tmsg = self._catalog[message] ! except KeyError: ! if self._fallback: ! return self._fallback.ugettext(message) ! tmsg = message return unicode(tmsg, self._charset) *************** *** 198,202 **** # Locate a .mo file using the gettext strategy ! def find(domain, localedir=None, languages=None): # Get some reasonable defaults for arguments that were not supplied if localedir is None: --- 220,224 ---- # Locate a .mo file using the gettext strategy ! def find(domain, localedir=None, languages=None, all=0): # Get some reasonable defaults for arguments that were not supplied if localedir is None: *************** *** 218,221 **** --- 240,247 ---- nelangs.append(nelang) # select a language + if all: + result = [] + else: + result = None for lang in nelangs: if lang == 'C': *************** *** 223,228 **** mofile = os.path.join(localedir, lang, 'LC_MESSAGES', '%s.mo' % domain) if os.path.exists(mofile): ! return mofile ! return None --- 249,257 ---- mofile = os.path.join(localedir, lang, 'LC_MESSAGES', '%s.mo' % domain) if os.path.exists(mofile): ! if all: ! result.append(mofile) ! else: ! return mofile ! return result *************** *** 235,252 **** if class_ is None: class_ = GNUTranslations ! mofile = find(domain, localedir, languages) ! if mofile is None: if fallback: return NullTranslations() raise IOError(ENOENT, 'No translation file found for domain', domain) - key = os.path.abspath(mofile) # TBD: do we need to worry about the file pointer getting collected? # Avoid opening, reading, and parsing the .mo file after it's been done # once. ! t = _translations.get(key) ! if t is None: ! t = _translations.setdefault(key, class_(open(mofile, 'rb'))) ! return t ! --- 264,289 ---- if class_ is None: class_ = GNUTranslations ! mofiles = find(domain, localedir, languages, all=1) ! if len(mofiles)==0: if fallback: return NullTranslations() raise IOError(ENOENT, 'No translation file found for domain', domain) # TBD: do we need to worry about the file pointer getting collected? # Avoid opening, reading, and parsing the .mo file after it's been done # once. ! result = None ! for mofile in mofiles: ! key = os.path.abspath(mofile) ! t = _translations.get(key) ! if t is None: ! t = _translations.setdefault(key, class_(open(mofile, 'rb'))) ! # Copy the translation object to allow setting fallbacks. ! # All other instance data is shared with the cached object. ! t = copy.copy(t) ! if result is None: ! result = t ! else: ! result.add_fallback(t) ! return result
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4