forked from rexdf/ChineseLocalization
/
Localization.py
executable file
·90 lines (73 loc) · 2.49 KB
/
Localization.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import sublime
import sublime_plugin
import os
from hashlib import md5
CONFIG_NAME = "Localization.sublime-settings"
LANGS = {
"ZH_CN": {
'zipfile': 'ZH_CN.zip',
'syntax_md5sum': '44cd99cdd8ef6c2c60c0a89d53a40b95'
},
"ZH_TW": {
"zipfile": "ZH_TW.zip",
'syntax_md5sum': "fe7457cfd227b7db74e785321f672c4a"
},
"EN": {
"zipfile": "EN.zip",
'syntax_md5sum': "2667c3fe5c1102274051920b1f581adb"
}
}
def get_language_setting():
config = sublime.load_settings(CONFIG_NAME)
lang = config.get('language', None)
if lang not in LANGS:
lang = None
return lang
def restore_language_setting(lang):
config = sublime.load_settings(CONFIG_NAME)
config.set("language", lang)
sublime.save_settings(CONFIG_NAME)
def init():
lang = get_language_setting()
set_language(lang)
def set_language(lang):
if not lang:
return
PACKAGES_PATH = sublime.packages_path()
DEFAULT_PATH = os.path.join(PACKAGES_PATH, "Default")
SYN_PATH = os.path.join(DEFAULT_PATH, "Syntax.sublime-menu")
if os.path.isfile(SYN_PATH):
with open(SYN_PATH, "rb") as f:
syntax = f.read()
m = md5()
m.update(syntax)
if m.hexdigest() == LANGS[lang]['syntax_md5sum']:
sublime.status_message("%s has loaded." % lang)
return
# mkdir if Default not exist
if not os.path.isdir(DEFAULT_PATH):
os.mkdir(DEFAULT_PATH)
# Load binary resource
PACKAGE_NAME = os.path.basename(os.path.dirname(__file__)).split('.')[0]
LOCALZIP_RES = "Packages/{}/{}".format(PACKAGE_NAME,
LANGS[lang]['zipfile'])
lang_bytes = sublime.load_binary_resource(LOCALZIP_RES)
# write to tempfile and unzip it.
import zipfile
from tempfile import NamedTemporaryFile
tmp_file = NamedTemporaryFile(delete=False)
tmp_file.write(lang_bytes)
tmp_file.close()
with zipfile.ZipFile(tmp_file.name, "r") as f:
f.extractall(DEFAULT_PATH)
tmp_file.close()
os.unlink(tmp_file.name)
class ToggleLanguageCommand(sublime_plugin.ApplicationCommand):
def run(self, language):
set_language(language)
restore_language_setting(language)
def is_checked(self, language):
return get_language_setting() == language
def plugin_loaded():
"""Load and unzip the files."""
sublime.set_timeout(init, 200)