|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2014 - 2019 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing the translation languages database. |
|
8 """ |
|
9 |
|
10 from __future__ import unicode_literals |
|
11 |
|
12 import os |
|
13 |
|
14 from PyQt5.QtCore import QObject |
|
15 |
|
16 import UI.PixmapCache |
|
17 |
|
18 |
|
19 class TranslatorLanguagesDb(QObject): |
|
20 """ |
|
21 Class implementing the translation languages database. |
|
22 """ |
|
23 def __init__(self, parent=None): |
|
24 """ |
|
25 Constructor |
|
26 |
|
27 @param parent reference to the parent object (QObject) |
|
28 """ |
|
29 super(TranslatorLanguagesDb, self).__init__(parent) |
|
30 |
|
31 self.__languages = { |
|
32 "af": self.tr("Afrikaans"), |
|
33 "ar": self.tr("Arabic"), |
|
34 "be": self.tr("Belarusian"), |
|
35 "bg": self.tr("Bulgarian"), |
|
36 "bs": self.tr("Bosnian"), |
|
37 "ca": self.tr("Catalan"), |
|
38 "cs": self.tr("Czech"), |
|
39 "da": self.tr("Danish"), |
|
40 "de": self.tr("German"), |
|
41 "el": self.tr("Greek"), |
|
42 "en": self.tr("English"), |
|
43 "es": self.tr("Spanish"), |
|
44 "et": self.tr("Estonian"), |
|
45 "fi": self.tr("Finnish"), |
|
46 "fr": self.tr("French"), |
|
47 "ga": self.tr("Irish"), |
|
48 "gl": self.tr("Galician"), |
|
49 "he": self.tr("Hebrew (he)"), |
|
50 "hi": self.tr("Hindi"), |
|
51 "hr": self.tr("Croatian"), |
|
52 "hu": self.tr("Hungarian"), |
|
53 "id": self.tr("Indonesian"), |
|
54 "is": self.tr("Icelandic"), |
|
55 "it": self.tr("Italian"), |
|
56 "iw": self.tr("Hebrew (iw)"), |
|
57 "ja": self.tr("Japanese"), |
|
58 "ka": self.tr("Georgian"), |
|
59 "ko": self.tr("Korean"), |
|
60 "lt": self.tr("Lithuanian"), |
|
61 "lv": self.tr("Latvian"), |
|
62 "mk": self.tr("Macedonian"), |
|
63 "mt": self.tr("Maltese"), |
|
64 "nl": self.tr("Dutch"), |
|
65 "no": self.tr("Norwegian"), |
|
66 "pl": self.tr("Polish"), |
|
67 "pt": self.tr("Portuguese"), |
|
68 "ro": self.tr("Romanian"), |
|
69 "ru": self.tr("Russian"), |
|
70 "sk": self.tr("Slovak"), |
|
71 "sl": self.tr("Slovenian"), |
|
72 "sq": self.tr("Albanian"), |
|
73 "sr": self.tr("Serbian"), |
|
74 "sv": self.tr("Swedish"), |
|
75 "th": self.tr("Thai"), |
|
76 "tl": self.tr("Filipino"), |
|
77 "tr": self.tr("Turkish"), |
|
78 "uk": self.tr("Ukrainian"), |
|
79 "vi": self.tr("Vietnamese"), |
|
80 "zh-CN": self.tr("Chinese S"), |
|
81 "zh-TW": self.tr("Chinese T"), |
|
82 } |
|
83 |
|
84 self.__toThreeCharacterCode = { |
|
85 "af": "afr", |
|
86 "ar": "ara", |
|
87 "be": "bel", |
|
88 "bg": "bul", |
|
89 "bs": "bos", |
|
90 "ca": "cat", |
|
91 "cs": "ces", |
|
92 "da": "dan", |
|
93 "de": "deu", |
|
94 "el": "ell", |
|
95 "en": "eng", |
|
96 "es": "spa", |
|
97 "et": "est", |
|
98 "fi": "fin", |
|
99 "fr": "fra", |
|
100 "ga": "gle", |
|
101 "gl": "glg", |
|
102 "he": "heb", |
|
103 "hi": "hin", |
|
104 "hr": "hrv", |
|
105 "hu": "hun", |
|
106 "id": "ind", |
|
107 "is": "isl", |
|
108 "it": "ita", |
|
109 "iw": "heb", |
|
110 "ja": "jpn", |
|
111 "ka": "kat", |
|
112 "ko": "kor", |
|
113 "lt": "lit", |
|
114 "lv": "lav", |
|
115 "mk": "mkd", |
|
116 "mt": "mlt", |
|
117 "nl": "nld", |
|
118 "no": "nor", |
|
119 "pl": "pol", |
|
120 "pt": "por", |
|
121 "ro": "ron", |
|
122 "ru": "rus", |
|
123 "sk": "slk", |
|
124 "sl": "slv", |
|
125 "sq": "sqi", |
|
126 "sr": "srp", |
|
127 "sv": "swe", |
|
128 "th": "tha", |
|
129 "tl": "tgl", |
|
130 "tr": "tur", |
|
131 "uk": "ukr", |
|
132 "vi": "vie", |
|
133 "zh-CN": "zho", |
|
134 "zh-TW": "zho", |
|
135 } |
|
136 |
|
137 def getLanguageIcon(self, code): |
|
138 """ |
|
139 Public method to get a language icon. |
|
140 |
|
141 @param code language code (string) |
|
142 @return language icon (QIcon) |
|
143 """ |
|
144 return UI.PixmapCache.getIcon(os.path.join( |
|
145 os.path.dirname(__file__), "icons", "flags", |
|
146 "{0}.png".format(code))) |
|
147 |
|
148 def getLanguage(self, code): |
|
149 """ |
|
150 Public method to get a translated language. |
|
151 |
|
152 @param code language code (string) |
|
153 @return translated language (string) |
|
154 """ |
|
155 try: |
|
156 return self.__languages[code] |
|
157 except KeyError: |
|
158 return "" |
|
159 |
|
160 def getAllLanguages(self): |
|
161 """ |
|
162 Public method to get a list of the supported language codes. |
|
163 |
|
164 @return list of supported language codes (list of string) |
|
165 """ |
|
166 return list(self.__languages.keys()) |
|
167 |
|
168 def convertTwoToThree(self, code): |
|
169 """ |
|
170 Public method to convert a two character language code to a |
|
171 thre character code. |
|
172 |
|
173 @param code two character language code (string) |
|
174 @return three character language code (string) |
|
175 """ |
|
176 try: |
|
177 return self.__toThreeCharacterCode[code] |
|
178 except KeyError: |
|
179 return "" |