# HG changeset patch # User Andrey Skvortsov # Date 1481124754 -10800 # Node ID b3cc68dd037dd41a42a4de408e3cc34d51c1fe9f # Parent 049b7144a710965cefc6b411973436b2be9548a4 add internatialization support for Beremiz_service.py diff -r 049b7144a710 -r b3cc68dd037d Beremiz.py --- a/Beremiz.py Wed Dec 07 18:25:37 2016 +0300 +++ b/Beremiz.py Wed Dec 07 18:32:34 2016 +0300 @@ -574,7 +574,7 @@ {False : "-x 0", True :"-x 1"}[taskbaricon], self.local_runtime_tmpdir), no_gui=False, - timeout=500, keyword = "working", + timeout=500, keyword = self.local_runtime_tmpdir, cwd = self.local_runtime_tmpdir) self.local_runtime.spin() return self.runtime_port diff -r 049b7144a710 -r b3cc68dd037d Beremiz_service.py --- a/Beremiz_service.py Wed Dec 07 18:25:37 2016 +0300 +++ b/Beremiz_service.py Wed Dec 07 18:32:34 2016 +0300 @@ -112,6 +112,48 @@ if __name__ == '__main__': __builtin__.__dict__['_'] = lambda x: x +def Bpath(*args): + return os.path.join(beremiz_dir,*args) + +def SetupI18n(): + # Import module for internationalization + import gettext + + # Get folder containing translation files + localedir = os.path.join(beremiz_dir,"locale") + # Get the default language + langid = wx.LANGUAGE_DEFAULT + # Define translation domain (name of translation files) + domain = "Beremiz" + + # Define locale for wx + loc = __builtin__.__dict__.get('loc', None) + if loc is None: + loc = wx.Locale(langid) + __builtin__.__dict__['loc'] = loc + # Define location for searching translation files + loc.AddCatalogLookupPathPrefix(localedir) + # Define locale domain + loc.AddCatalog(domain) + + + import locale + global default_locale + default_locale = locale.getdefaultlocale()[1] + + + # sys.stdout.encoding = default_locale + # if Beremiz_service is started from Beremiz IDE + # sys.stdout.encoding is None (that means 'ascii' encoding'). + # And unicode string returned by wx.GetTranslation() are + # automatically converted to 'ascii' string. + def unicode_translation(message): + return wx.GetTranslation(message).encode(default_locale) + + if __name__ == '__main__': + __builtin__.__dict__['_'] = unicode_translation + # __builtin__.__dict__['_'] = wx.GetTranslation + if enablewx: try: import wxversion @@ -133,34 +175,8 @@ app = wx.PySimpleApp(redirect=False) app.SetTopWindow(wx.Frame(None, -1)) - # Import module for internationalization - import gettext - - def Bpath(*args): - return os.path.join(beremiz_dir,*args) - - # Get folder containing translation files - localedir = os.path.join(beremiz_dir,"locale") - # Get the default language - langid = wx.LANGUAGE_DEFAULT - # Define translation domain (name of translation files) - domain = "Beremiz" - - # Define locale for wx - loc = __builtin__.__dict__.get('loc', None) - if loc is None: - loc = wx.Locale(langid) - __builtin__.__dict__['loc'] = loc - # Define location for searching translation files - loc.AddCatalogLookupPathPrefix(localedir) - # Define locale domain - loc.AddCatalog(domain) - - def unicode_translation(message): - return wx.GetTranslation(message).encode("utf-8") - - if __name__ == '__main__': - __builtin__.__dict__['_'] = wx.GetTranslation#unicode_translation + default_locale = None + SetupI18n() defaulticon = wx.Image(Bpath("images", "brz.png")) starticon = wx.Image(Bpath("images", "icoplay24.png")) @@ -175,7 +191,7 @@ event(self, function) - def __init__(self, parent, message, caption = "Please enter text", defaultValue = "", + def __init__(self, parent, message, caption = _("Please enter text"), defaultValue = "", style = wx.OK|wx.CANCEL|wx.CENTRE, pos = wx.DefaultPosition): wx.TextEntryDialog.__init__(self, parent, message, caption, defaultValue, style, pos) @@ -406,9 +422,13 @@ self.pyruntimevars) uri = self.daemon.connect(self.plcobj,"PLCObject") - print "Pyro port :",self.port - print "Pyro object's uri :",uri - print "Current working directory :",self.workdir + print _("Pyro port :"), self.port + print _("Pyro object's uri :"), uri + + # Beremiz IDE detects daemon start by looking + # for self.workdir in the daemon's stdout. + # Therefore don't delete the following line + print _("Current working directory :"), self.workdir # Configure and publish service # Not publish service if localhost in address params @@ -416,7 +436,7 @@ self.ip_addr is not None and self.ip_addr != "localhost" and self.ip_addr != "127.0.0.1"): - print "Publishing service on local network" + print _("Publishing service on local network") self.servicepublisher = ServicePublisher.ServicePublisher() self.servicepublisher.RegisterService(self.servicename, self.ip_addr, self.port) @@ -451,7 +471,7 @@ havetwisted = True except: - print "Twisted unavailable." + print _("Twisted unavailable.") havetwisted = False pyruntimevars = {} @@ -529,7 +549,7 @@ try: import runtime.NevowServer as NS except Exception, e: - print "Nevow/Athena import failed :", e + print _("Nevow/Athena import failed :"), e webport = None NS.WorkingDir = WorkingDir @@ -537,7 +557,7 @@ try: import runtime.WampClient as WC except Exception, e: - print "WAMP import failed :", e + print _("WAMP import failed :"), e wampconf = None # Load extensions @@ -553,7 +573,7 @@ pyruntimevars["website"] = website statuschange.append(NS.website_statuslistener_factory(website)) except Exception, e: - print "Nevow Web service failed.", e + print _("Nevow Web service failed. "), e if wampconf is not None : try: @@ -561,7 +581,7 @@ pyruntimevars["wampsession"] = WC.GetSession WC.SetServer(pyroserver) except Exception, e: - print "WAMP client startup failed.", e + print _("WAMP client startup failed. "), e if havetwisted or havewx: diff -r 049b7144a710 -r b3cc68dd037d connectors/PYRO/__init__.py --- a/connectors/PYRO/__init__.py Wed Dec 07 18:25:37 2016 +0300 +++ b/connectors/PYRO/__init__.py Wed Dec 07 18:32:34 2016 +0300 @@ -112,10 +112,10 @@ try: return func(*args, **kwargs) except Pyro.errors.ConnectionClosedError, e: - confnodesroot.logger.write_error("Connection lost!\n") + confnodesroot.logger.write_error(_("Connection lost!\n")) confnodesroot._SetConnector(None) except Pyro.errors.ProtocolError, e: - confnodesroot.logger.write_error("Pyro exception: " + str(e) + "\n") + confnodesroot.logger.write_error(_("Pyro exception: %s\n") % e) except Exception, e: # confnodesroot.logger.write_error(traceback.format_exc()) errmess = ''.join(Pyro.util.getPyroTraceback(e)) diff -r 049b7144a710 -r b3cc68dd037d connectors/WAMP/__init__.py --- a/connectors/WAMP/__init__.py Wed Dec 07 18:25:37 2016 +0300 +++ b/connectors/WAMP/__init__.py Wed Dec 07 18:32:34 2016 +0300 @@ -108,7 +108,7 @@ reactor, _WampSession.call, wampfuncname, *args,**kwargs) except TransportLost, e: - confnodesroot.logger.write_error("Connection lost!\n") + confnodesroot.logger.write_error(_("Connection lost!\n")) confnodesroot._SetConnector(None) except Exception,e: errmess = traceback.format_exc() diff -r 049b7144a710 -r b3cc68dd037d runtime/NevowServer.py --- a/runtime/NevowServer.py Wed Dec 07 18:25:37 2016 +0300 +++ b/runtime/NevowServer.py Wed Dec 07 18:32:34 2016 +0300 @@ -178,7 +178,7 @@ listening = False reactor.listenTCP(port, site) - print "Http interface port :",port + print _("HTTP interface port :"), port return website class statuslistener: