diff --git a/plugins/MergerSite/MergerSitePlugin.py b/plugins/MergerSite/MergerSitePlugin.py
index 80bff92f..4440e718 100644
--- a/plugins/MergerSite/MergerSitePlugin.py
+++ b/plugins/MergerSite/MergerSitePlugin.py
@@ -2,6 +2,7 @@ import re
import time
from Plugin import PluginManager
+from Translate import Translate
from util import RateLimit
from util import helper
try:
@@ -15,6 +16,8 @@ if "merger_db" not in locals().keys(): # To keep merger_sites between module re
merged_to_merger = {} # {address: [site1, site2, ...]} cache
site_manager = None # Site manager for merger sites
+if "_" not in locals():
+ _ = Translate("plugins/MergerSite/languages/")
# Check if the site has permission to this merger site
def checkMergerPath(address, inner_path):
@@ -56,7 +59,7 @@ class UiWebsocketPlugin(object):
else:
self.cmd(
"confirm",
- ["Add %s new site?" % len(addresses), "Add"],
+ [_["Add %s new site?"] % len(addresses), "Add"],
lambda (res): self.cbMergerSiteAdd(to, addresses)
)
self.response(to, "ok")
@@ -68,7 +71,7 @@ class UiWebsocketPlugin(object):
added += 1
site_manager.need(address)
if added:
- self.cmd("notification", ["done", "Added %s new site" % added, 5000])
+ self.cmd("notification", ["done", _["Added %s new site"] % added, 5000])
RateLimit.called(self.site.address + "-MergerSiteAdd")
site_manager.updateMergerSites()
@@ -84,7 +87,7 @@ class UiWebsocketPlugin(object):
if merged_db.get(address) not in merger_types:
return self.response(to, {"error": "Merged type (%s) not in %s" % (merged_db.get(address), merger_types)})
- self.cmd("notification", ["done", "Site deleted: %s" % address, 5000])
+ self.cmd("notification", ["done", _["Site deleted: %s"] % address, 5000])
self.response(to, "ok")
# Lists merged sites
diff --git a/plugins/MergerSite/languages/zh.json.unfinished b/plugins/MergerSite/languages/zh.json.unfinished
new file mode 100644
index 00000000..cfcac880
--- /dev/null
+++ b/plugins/MergerSite/languages/zh.json.unfinished
@@ -0,0 +1,5 @@
+{
+ "Add %s new site?": "",
+ "Added %s new site": "",
+ "Site deleted: %s": ""
+}
diff --git a/plugins/OptionalManager/UiWebsocketPlugin.py b/plugins/OptionalManager/UiWebsocketPlugin.py
index eecf225f..91f7f6f8 100644
--- a/plugins/OptionalManager/UiWebsocketPlugin.py
+++ b/plugins/OptionalManager/UiWebsocketPlugin.py
@@ -7,7 +7,10 @@ import gevent
from Plugin import PluginManager
from Config import config
from util import helper
+from Translate import Translate
+if "_" not in locals():
+ _ = Translate("plugins/OptionalManager/languages/")
@PluginManager.registerTo("UiWebsocket")
class UiWebsocketPlugin(object):
@@ -99,13 +102,13 @@ class UiWebsocketPlugin(object):
def actionOptionalFilePin(self, to, inner_path, address=None):
back = self.setPin(inner_path, 1, address)
if back == "ok":
- self.cmd("notification", ["done", "Pinned %s files" % len(inner_path) if type(inner_path) is list else 1, 5000])
+ self.cmd("notification", ["done", _["Pinned %s files"] % len(inner_path) if type(inner_path) is list else 1, 5000])
self.response(to, back)
def actionOptionalFileUnpin(self, to, inner_path, address=None):
back = self.setPin(inner_path, 0, address)
if back == "ok":
- self.cmd("notification", ["done", "Removed pin from %s files" % len(inner_path) if type(inner_path) is list else 1, 5000])
+ self.cmd("notification", ["done", _["Removed pin from %s files"] % len(inner_path) if type(inner_path) is list else 1, 5000])
self.response(to, back)
def actionOptionalFileDelete(self, to, inner_path, address=None):
@@ -202,7 +205,7 @@ class UiWebsocketPlugin(object):
self.cmd("notification", [
"done",
- "You started to help distribute %s.
Directory: %s" %
+ _["You started to help distribute %s.
Directory: %s"] %
(cgi.escape(title), cgi.escape(directory)),
10000
])
@@ -247,8 +250,8 @@ class UiWebsocketPlugin(object):
self.cmd(
"confirm",
[
- "Help distribute all new optional files on site %s" % cgi.escape(site_title),
- "Yes, I want to help!"
+ _["Help distribute all new optional files on site %s"] % cgi.escape(site_title),
+ _["Yes, I want to help!"]
],
lambda (res): self.cbOptionalHelpAll(to, site, True)
)
diff --git a/plugins/OptionalManager/languages/zh.json.unfinished b/plugins/OptionalManager/languages/zh.json.unfinished
new file mode 100644
index 00000000..8a31baad
--- /dev/null
+++ b/plugins/OptionalManager/languages/zh.json.unfinished
@@ -0,0 +1,7 @@
+{
+ "Pinned %s files": "",
+ "Removed pin from %s files": "",
+ "You started to help distribute %s.
Directory: %s": "",
+ "Help distribute all new optional files on site %s": "",
+ "Yes, I want to help!": ""
+}
diff --git a/plugins/Sidebar/SidebarPlugin.py b/plugins/Sidebar/SidebarPlugin.py
index 9b785a8e..c9e71f13 100644
--- a/plugins/Sidebar/SidebarPlugin.py
+++ b/plugins/Sidebar/SidebarPlugin.py
@@ -24,7 +24,7 @@ sys.path.append(plugin_dir) # To able to load geoip lib
loc_cache = {}
if "_" not in locals():
- _ = Translate("plugins/Sidebar/languages/")
+ _ = Translate(plugin_dir + "/languages/")
@PluginManager.registerTo("UiRequest")
diff --git a/plugins/Trayicon/TrayiconPlugin.py b/plugins/Trayicon/TrayiconPlugin.py
index c3ca6e20..a9254447 100644
--- a/plugins/Trayicon/TrayiconPlugin.py
+++ b/plugins/Trayicon/TrayiconPlugin.py
@@ -5,9 +5,12 @@ import atexit
from Plugin import PluginManager
from Config import config
+from Translate import Translate
allow_reload = False # No source reload supported in this plugin
+if "_" not in locals():
+ _ = Translate("plugins/Trayicon/languages/")
@PluginManager.registerTo("Actions")
class ActionsPlugin(object):
@@ -46,14 +49,14 @@ class ActionsPlugin(object):
(self.titleConsole, self.toggleConsole),
(self.titleAutorun, self.toggleAutorun),
"--",
- ("ZeroNet Twitter", lambda: self.opensite("https://twitter.com/HelloZeroNet")),
- ("ZeroNet Reddit", lambda: self.opensite("http://www.reddit.com/r/zeronet/")),
- ("ZeroNet Github", lambda: self.opensite("https://github.com/HelloZeroNet/ZeroNet")),
- ("Report bug/request feature", lambda: self.opensite("https://github.com/HelloZeroNet/ZeroNet/issues")),
+ (_["ZeroNet Twitter"], lambda: self.opensite("https://twitter.com/HelloZeroNet")),
+ (_["ZeroNet Reddit"], lambda: self.opensite("http://www.reddit.com/r/zeronet/")),
+ (_["ZeroNet Github"], lambda: self.opensite("https://github.com/HelloZeroNet/ZeroNet")),
+ (_["Report bug/request feature"], lambda: self.opensite("https://github.com/HelloZeroNet/ZeroNet/issues")),
"--",
- ("!Open ZeroNet", lambda: self.opensite("http://%s:%s/%s" % (ui_ip, config.ui_port, config.homepage) )),
+ (_["!Open ZeroNet"], lambda: self.opensite("http://%s:%s/%s" % (ui_ip, config.ui_port, config.homepage) )),
"--",
- ("Quit", self.quit),
+ (_["Quit"], self.quit),
)
@@ -74,29 +77,30 @@ class ActionsPlugin(object):
webbrowser.open(url, new=0)
def titleIp(self):
- title = "!IP: %s" % config.ip_external
+ title = "!IP: %s " % config.ip_external
if self.main.file_server.port_opened:
- title += " (active)"
+ title += _["(active)"]
else:
- title += " (passive)"
+ title += _["(passive)"]
return title
def titleConnections(self):
- title = "Connections: %s" % len(self.main.file_server.connections)
+ title = _["Connections: %s"] % len(self.main.file_server.connections)
return title
def titleTransfer(self):
- title = "Received: %.2f MB | Sent: %.2f MB" % (
+ title = _["Received: %.2f MB | Sent: %.2f MB"] % (
float(self.main.file_server.bytes_recv) / 1024 / 1024,
float(self.main.file_server.bytes_sent) / 1024 / 1024
)
return title
def titleConsole(self):
+ translate = _["Show console window"]
if self.console:
- return "+Show console window"
+ return "+" + translate
else:
- return "Show console window"
+ return translate
def toggleConsole(self):
if self.console:
@@ -126,10 +130,11 @@ class ActionsPlugin(object):
return os.path.isfile(path) and open(path).read() == self.formatAutorun()
def titleAutorun(self):
+ translate = _["Start ZeroNet when Windows starts"]
if self.isAutorunEnabled():
- return "+Start ZeroNet when Windows starts"
+ return "+" + translate
else:
- return "Start ZeroNet when Windows starts"
+ return translate
def toggleAutorun(self):
if self.isAutorunEnabled():
diff --git a/plugins/Trayicon/languages/zh.json b/plugins/Trayicon/languages/zh.json
new file mode 100644
index 00000000..270f2e88
--- /dev/null
+++ b/plugins/Trayicon/languages/zh.json
@@ -0,0 +1,14 @@
+{
+ "ZeroNet Twitter": "ZeroNet Twitter",
+ "ZeroNet Reddit": "ZeroNet Reddit",
+ "ZeroNet Github": "ZeroNet Github",
+ "Report bug/request feature": "反馈问题/请求功能",
+ "!Open ZeroNet": "!打开 ZeroNet",
+ "Quit": "退出",
+ "(active)": "(激活)",
+ "(passive)": "(passive)",
+ "Connections: %s": "连接数: %s",
+ "Received: %.2f MB | Sent: %.2f MB": "已收到: %.2f MB | 已发送: %.2f MB",
+ "Show console window": "显示控制台窗口",
+ "Start ZeroNet when Windows starts": "在 Windows 启动时运行 ZeroNet"
+}