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