ttettheu commited on
Commit
f2ba2a7
·
verified ·
1 Parent(s): 8e81f44

Upload i18n.py

Browse files
Files changed (1) hide show
  1. i18n.py +43 -0
i18n.py ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+
3
+ def load_language_list(language):
4
+ try:
5
+ with open(f"./i18n/locale/{language}.json", "r", encoding="utf-8") as f:
6
+ return json.load(f)
7
+ except FileNotFoundError:
8
+ raise FileNotFoundError(
9
+ f"Failed to load language file for {language}. Check if the correct .json file exists."
10
+ )
11
+
12
+
13
+ class I18nAuto:
14
+ """
15
+ A class used for internationalization using JSON language files.
16
+
17
+ Examples
18
+ --------
19
+ >>> i18n = I18nAuto('en_US')
20
+ >>> i18n.print()
21
+ Using Language: en_US
22
+ """
23
+ def __init__(self, language=None):
24
+ from locale import getdefaultlocale
25
+ language = language or getdefaultlocale()[0]
26
+ if not self._language_exists(language):
27
+ language = "pt_PT"
28
+
29
+ self.language_map = load_language_list(language)
30
+ self.language = language
31
+
32
+ @staticmethod
33
+ def _language_exists(language):
34
+ from os.path import exists
35
+ return exists(f"./i18n/locale/{language}.json")
36
+
37
+ def __call__(self, key):
38
+ """Returns the translation of the given key if it exists, else returns the key itself."""
39
+ return self.language_map.get(key, key)
40
+
41
+ def print(self):
42
+ """Prints the language currently in use."""
43
+ print(f"Using Language: {self.language}")