1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 """This module provides a factory to instantiate language classes."""
23
24 from translate.lang import common
25 from translate.lang import data
26
27 prefix = "code_"
28
29
31 """This returns a language class.
32
33 @param code: The ISO 639 language code
34 """
35 if code:
36 code = code.replace("-", "_").replace("@", "_").lower()
37 try:
38 if code is None:
39 raise ImportError("Can't determine language code")
40 if code in ('or', 'is'):
41 internal_code = prefix + code
42 else:
43 internal_code = code
44 module = __import__("translate.lang.%s" % internal_code, globals(), {}, internal_code)
45 langclass = getattr(module, internal_code)
46 return langclass(code)
47 except ImportError, e:
48 simplercode = data.simplercode(code)
49 if simplercode:
50 relatedlanguage = getlanguage(simplercode)
51 if isinstance(relatedlanguage, common.Common):
52 relatedlanguage = relatedlanguage.__class__(code)
53 return relatedlanguage
54 else:
55 return common.Common(code)
56