def getlanguage(code): """This returns a language class. :param code: The ISO 639 language code """ if code: code = code.replace("-", "_").replace("@", "_").lower() try: if code is None: raise ImportError("Can't determine language code") if code in ('or', 'is'): internal_code = prefix + code else: internal_code = code module = __import__("translate.lang.%s" % internal_code, globals(), {}, internal_code) langclass = getattr(module, internal_code) return langclass(code) except ImportError, e: simplercode = data.simplercode(code) if simplercode: relatedlanguage = getlanguage(simplercode) if isinstance(relatedlanguage, common.Common): relatedlanguage = relatedlanguage.__class__(code) return relatedlanguage else: return common.Common(code)
def getlanguage(code): """This returns a language class. @param code: The ISO 639 language code """ if code: code = code.replace("-", "_").replace("@", "_") try: try: if code is None: raise ImportError ("Can't determine language code") exec("from translate.lang import %s" % code) exec("langclass = %s.%s" % (code, code)) return langclass(code) except SyntaxError, e: # Someone is probably trying to import a language of which the code # is a reserved word in python (like Icelandic (is) / Oriya (or)) # The convention to handle these is to have it in a file like # code_is, for example. exec("from translate.lang import %s%s" % (prefix, code)) exec("langclass = %s%s.%s%s" % (prefix, code, prefix, code)) return langclass(code) except ImportError, e: if code and code.startswith(prefix): code = code[:len(prefix)] simplercode = data.simplercode(code) if simplercode: relatedlanguage = getlanguage(simplercode) if isinstance(relatedlanguage, common.Common): relatedlanguage = relatedlanguage.__class__(code) return relatedlanguage else: return common.Common(code)