Changeset View
Changeset View
Standalone View
Standalone View
pology/__init__.py
Show All 25 Lines | |||||
26 | @author: Nicolas Ternisien <nicolas.ternisien@gmail.com> | 26 | @author: Nicolas Ternisien <nicolas.ternisien@gmail.com> | ||
27 | @author: Goran Rakic (Горан Ракић) <grakic@devbase.net> | 27 | @author: Goran Rakic (Горан Ракић) <grakic@devbase.net> | ||
28 | @author: Nick Shaforostoff (Николай Шафоростов) <shaforostoff@kde.ru> | 28 | @author: Nick Shaforostoff (Николай Шафоростов) <shaforostoff@kde.ru> | ||
29 | 29 | | |||
30 | @license: GPLv3 | 30 | @license: GPLv3 | ||
31 | """ | 31 | """ | ||
32 | 32 | | |||
33 | import gettext | 33 | import gettext | ||
34 | import locale | | |||
35 | import os | 34 | import os | ||
36 | import re | 35 | import re | ||
37 | 36 | | |||
38 | 37 | | |||
39 | from pology.colors import ColorString | 38 | from pology.colors import ColorString | ||
40 | 39 | | |||
41 | 40 | | |||
42 | def datadir (): | 41 | def datadir (): | ||
43 | """ | 42 | """ | ||
44 | Get data directory of Pology installation. | 43 | Get data directory of Pology installation. | ||
45 | 44 | | |||
46 | @return: absolute directory path | 45 | @return: absolute directory path | ||
47 | @rtype: string | 46 | @rtype: string | ||
48 | """ | 47 | """ | ||
49 | 48 | | |||
50 | lenc = locale.getpreferredencoding() | 49 | datadir = "@CONFIG_DATADIR@" # configured if installed | ||
51 | datadir = "@CONFIG_DATADIR@".decode(lenc) # configured if installed | | |||
52 | if not os.path.isdir(datadir): # if running from source dir | 50 | if not os.path.isdir(datadir): # if running from source dir | ||
53 | srcdir = os.path.dirname(os.path.dirname(__file__)) | 51 | datadir = os.path.dirname(os.path.dirname(__file__)) | ||
54 | datadir = srcdir.decode(lenc) | | |||
55 | return datadir | 52 | return datadir | ||
56 | 53 | | |||
57 | 54 | | |||
58 | def localedir (): | 55 | def localedir (): | ||
59 | """ | 56 | """ | ||
60 | Get locale directory of Pology installation. | 57 | Get locale directory of Pology installation. | ||
61 | 58 | | |||
62 | @return: absolute directory path | 59 | @return: absolute directory path | ||
63 | @rtype: string | 60 | @rtype: string | ||
64 | """ | 61 | """ | ||
65 | 62 | | |||
66 | lenc = locale.getpreferredencoding() | 63 | localedir = "@CONFIG_LOCALEDIR@" # configured if installed | ||
67 | localedir = "@CONFIG_LOCALEDIR@".decode(lenc) # configured if installed | | |||
68 | if not os.path.isdir(localedir): # if running from source dir | 64 | if not os.path.isdir(localedir): # if running from source dir | ||
69 | srcdir = os.path.dirname(os.path.dirname(__file__)) | 65 | srcdir = os.path.dirname(os.path.dirname(__file__)) | ||
70 | localedir = os.path.join(srcdir, "mo").decode(lenc) | 66 | localedir = os.path.join(srcdir, "mo") | ||
71 | return localedir | 67 | return localedir | ||
72 | 68 | | |||
73 | 69 | | |||
74 | def version (): | 70 | def version (): | ||
75 | """ | 71 | """ | ||
76 | Get Pology version string. | 72 | Get Pology version string. | ||
77 | 73 | | |||
78 | @return: version string | 74 | @return: version string | ||
79 | @rtype: string | 75 | @rtype: string | ||
80 | """ | 76 | """ | ||
81 | 77 | | |||
82 | lenc = locale.getpreferredencoding() | 78 | verstr = "@CONFIG_VERSION@" # configured if installed | ||
83 | verstr = "@CONFIG_VERSION@".decode(lenc) # configured if installed | | |||
84 | if verstr.startswith("@"): # if running from source dir | 79 | if verstr.startswith("@"): # if running from source dir | ||
85 | try: | 80 | try: | ||
86 | verfile = os.path.join(datadir(), "VERSION") | 81 | verfile = os.path.join(datadir(), "VERSION") | ||
87 | for line in open(verfile): | 82 | for line in open(verfile, encoding='utf-8'): | ||
88 | line = line.decode("UTF-8").strip() | 83 | line = line.strip() | ||
89 | if line: | 84 | if line: | ||
90 | verstr = line | 85 | verstr = line | ||
91 | break | 86 | break | ||
92 | except: | 87 | except: | ||
93 | pass | 88 | pass | ||
94 | 89 | | |||
95 | return verstr | 90 | return verstr | ||
96 | 91 | | |||
▲ Show 20 Lines • Show All 161 Lines • ▼ Show 20 Line(s) | 252 | def to_string (self): | |||
258 | """ | 253 | """ | ||
259 | Translate the text to get ordinary string. | 254 | Translate the text to get ordinary string. | ||
260 | 255 | | |||
261 | @returns: translated text | 256 | @returns: translated text | ||
262 | @rtype: L{ColorString<colors.ColorString>} | 257 | @rtype: L{ColorString<colors.ColorString>} | ||
263 | """ | 258 | """ | ||
264 | 259 | | |||
265 | if self._msgid_plural is None: | 260 | if self._msgid_plural is None: | ||
266 | trf = _tr.ugettext # camouflaged against xgettext | 261 | trf = _tr.gettext # camouflaged against xgettext | ||
267 | if self._msgctxt is None: | 262 | if self._msgctxt is None: | ||
268 | msgstr = trf(self._msgid) | 263 | msgstr = trf(self._msgid) | ||
269 | else: | 264 | else: | ||
270 | msgstr = trf("%s\x04%s" % (self._msgctxt, self._msgid)) | 265 | msgstr = trf("%s\x04%s" % (self._msgctxt, self._msgid)) | ||
271 | if "\x04" in msgstr: | 266 | if "\x04" in msgstr: | ||
272 | msgstr = self._msgid | 267 | msgstr = self._msgid | ||
273 | else: | 268 | else: | ||
274 | n = self._kwargs.get("num") | 269 | n = self._kwargs.get("num") | ||
275 | if n is None or not isinstance(n, int): | 270 | if n is None or not isinstance(n, int): | ||
276 | raise PologyError( | 271 | raise PologyError( | ||
277 | _("@info", | 272 | _("@info", | ||
278 | "No '%(arg)s' keyword argument to " | 273 | "No '%(arg)s' keyword argument to " | ||
279 | "plural translation request.", | 274 | "plural translation request.", | ||
280 | arg="num")) | 275 | arg="num")) | ||
281 | trf = _tr.ungettext # camouflaged against xgettext | 276 | trf = _tr.ngettext # camouflaged against xgettext | ||
282 | if self._msgctxt is None: | 277 | if self._msgctxt is None: | ||
283 | msgstr = trf(self._msgid, self._msgid_plural, n) | 278 | msgstr = trf(self._msgid, self._msgid_plural, n) | ||
284 | else: | 279 | else: | ||
285 | msgstr = trf("%s\x04%s" % (self._msgctxt, self._msgid), | 280 | msgstr = trf("%s\x04%s" % (self._msgctxt, self._msgid), | ||
286 | self._msgid_plural, n) | 281 | self._msgid_plural, n) | ||
287 | if "\x04" in msgstr: | 282 | if "\x04" in msgstr: | ||
288 | msgstr = self._msgid | 283 | msgstr = self._msgid | ||
289 | 284 | | |||
Show All 14 Lines | 296 | def __init__ (self, msg): | |||
304 | 299 | | |||
305 | @param msg: a description of what went wrong | 300 | @param msg: a description of what went wrong | ||
306 | @type msg: string | 301 | @type msg: string | ||
307 | """ | 302 | """ | ||
308 | 303 | | |||
309 | self._msg = msg | 304 | self._msg = msg | ||
310 | 305 | | |||
311 | 306 | | |||
312 | def __unicode__ (self): | 307 | def __str__(self): | ||
313 | | ||||
314 | return str(self._msg) | 308 | return str(self._msg) | ||
315 | | ||||
316 | | ||||
317 | def __str__ (self): | | |||
318 | | ||||
319 | return self.__unicode__().encode(locale.getpreferredencoding()) | | |||
320 | |