Skip to content

Commit fe7f2fd

Browse files
committed
use gettext for i18n
1 parent 26586b4 commit fe7f2fd

File tree

16 files changed

+446
-388
lines changed

16 files changed

+446
-388
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ coverage.xml
5252
.pytest_cache/
5353

5454
# Translations
55-
*.mo
5655
*.pot
5756

5857
# Django stuff:

README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,17 @@ don't use python2 any more please.
2424

2525
#### FUNCTION
2626
- all sqlmap(1.4.12.45#dev) options(except --all)
27-
- sqlmapapi client
2827
- built-in terminal
28+
- sqlmapapi client
29+
- built-in mini wiki(tooltip and placeholder)
2930
- session: autosave current options before quit, autoload last used options
30-
- language switch(see `ABOUT` page): English, Chinese
31+
- language switch(see `ABOUT` page): English, Chinese
32+
*if you don't need zh lang at all:*
33+
`rm -r static/{zh_CN.po, locale}`
3134

3235
#### ABOUT
33-
- v0.3.5
34-
2021-01-03 16:56:23
36+
- v0.3.5.1
37+
2021-01-05 13:33:04
3538
- use PyGObject(python3-gi + Gtk+3) to recode sqm.py
3639
- thanks to the idea from sqm <https://github.com/kxcode/gui-for-sqlmap>
3740
author: [KINGX](https://github.com/kxcode)(sqm UI using python2 + tkinter)

__init__.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/usr/bin/env python3
2+
#
3+
# 2021-01-05 01:43:57
4+
5+
'''
6+
# https://blog.51cto.com/underthehood/1663604
7+
# http://blog.timd.cn/python-gettext/
8+
# https://docs.python.org/3.8/library/gettext.html#gettext.translation
9+
10+
edit my_app.py:
11+
import gettext
12+
13+
_ = gettext.gettext
14+
15+
if __name__ == "__main__":
16+
print _("hello world")
17+
18+
cd static
19+
# 1.生成1个pot文件(翻译模板), -k与_之间不能有空格
20+
xgettext -k_ -o sqlmap_gtk.pot --from-code='UTF-8' ../sqlmap_gtk.py
21+
# 2.首次生成po文件(翻译文件)
22+
msginit -l en -i sqlmap_gtk.pot
23+
msginit -l zh_CN -i sqlmap_gtk.pot
24+
# 3.修改po文件, 翻译字符串, 并把里面的charset改成UTF-8
25+
vim en.po; vim zh_CN.po
26+
# 4.新建目录结构, 用msgfmt生成mo文件(用-o把mo文件放到相应目录中)
27+
mkdir -p locale/zh_CN/LC_MESSAGES
28+
mkdir -p locale/en/LC_MESSAGES
29+
msgfmt -o locale/zh_CN/LC_MESSAGES/sqlmap_gtk.mo zh_CN.po
30+
msgfmt -o locale/en/LC_MESSAGES/sqlmap_gtk.mo en.po
31+
# 以上完成所有准备工作.
32+
# 之后py文件中要翻译的字串发生变化(修改/增删), 要重新生成po文件,
33+
用msgmerge替代msginit:
34+
msgmerge -U zh_CN.po my_app.pot
35+
再重复3和4.
36+
37+
# 国际化, 两种方式:
38+
# 一、根据OS的环境变量自动选择语言: 略
39+
# 向 python解释器 的全局变量里添加 _ = gettext.gettext
40+
# 二、在程序中实时切换:
41+
# 向 当前模块 的全局变量里添加 _ = gettext.gettext
42+
edit my_app.py:
43+
import os
44+
import gettext
45+
# 这其实是mo文件的文件名!
46+
APP_NAME = "my_app"
47+
# mo文件的base目录
48+
LOCALE_DIR = os.path.abspath("locale")
49+
# 这条语句会将_()函数自动放到python的内置命名空间中
50+
gettext.install(APP_NAME, LOCALE_DIR) # 如果不想, 也可不加, 用下面的install就行
51+
# 获取中文翻译类的实例
52+
lang_zh_CN = gettext.translation(APP_NAME, LOCALE_DIR, ["zh_CN"])
53+
# 获取英文翻译类的实例
54+
lang_en = gettext.translation(APP_NAME, LOCALE_DIR, ["en"])
55+
56+
if __name__ == "__main__":
57+
# 安装中文, _()在当前模块的命名空间
58+
lang_zh_CN.install()
59+
print _("hello world")
60+
# 安装英文(程序中实时切换回英文)
61+
lang_en.install()
62+
print _("hello world")
63+
'''

handler_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def admin_list(self, button):
6363
_a_child.destroy()
6464
# 填充任务列表
6565
_id = 0
66-
_ = self.m.text.gettext
66+
_ = self.m._
6767
for _taskid, _status in _resp['tasks'].items():
6868
_a_task_row = g.ListBoxRow()
6969
_a_row_box_tmp = g.Box()
@@ -225,7 +225,7 @@ def admin_flush(self, button):
225225
if _resp['success']:
226226
for _a_child in self.w._api_admin_list_rows.get_children():
227227
self.w._api_admin_list_rows.remove(_a_child)
228-
self.task_view_append(self.m.text.gettext('flush all tasks: Done.'))
228+
self.task_view_append(self.m._('flush all tasks: Done.'))
229229
except Exception as e:
230230
self.task_view_append(e)
231231

handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,7 @@ def main():
833833
win = Window()
834834

835835
css_provider = g.CssProvider.new()
836-
css_provider.load_from_path('css.css')
836+
css_provider.load_from_path('static/css.css')
837837
g.StyleContext.add_provider_for_screen(
838838
d.Screen.get_default(),
839839
css_provider,

0 commit comments

Comments
 (0)