mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-12-24 19:52:54 +01:00
Bug fixes (mainly the &config help internationalization)
This commit is contained in:
parent
bec550fb5f
commit
4dcd7f7fb4
@ -199,7 +199,7 @@ class Misc(callbacks.Plugin):
|
|||||||
'you want help with.'), names))
|
'you want help with.'), names))
|
||||||
else:
|
else:
|
||||||
assert cbs, 'Odd, maxL == command, but no cbs.'
|
assert cbs, 'Odd, maxL == command, but no cbs.'
|
||||||
irc.reply(cbs[0].getCommandHelp(command, False))
|
irc.reply(_.__call__(cbs[0].getCommandHelp(command, False)))
|
||||||
else:
|
else:
|
||||||
irc.error(format(_('There is no command %q.'),
|
irc.error(format(_('There is no command %q.'),
|
||||||
callbacks.formatCommand(command)))
|
callbacks.formatCommand(command)))
|
||||||
|
53
src/i18n.py
53
src/i18n.py
@ -57,7 +57,13 @@ def import_conf():
|
|||||||
i18nClasses[key].loadLocale()
|
i18nClasses[key].loadLocale()
|
||||||
|
|
||||||
def get_plugin_dir(plugin_name):
|
def get_plugin_dir(plugin_name):
|
||||||
filename = sys.modules[plugin_name].__file__
|
filename = None
|
||||||
|
try:
|
||||||
|
filename = sys.modules[plugin_name].__file__
|
||||||
|
except KeyError: # It sometimes happens with Owner
|
||||||
|
pass
|
||||||
|
if filename == None:
|
||||||
|
filename = sys.modules['supybot.plugins.' + plugin_name].__file__
|
||||||
if filename.endswith(".pyc"):
|
if filename.endswith(".pyc"):
|
||||||
filename = filename[0:-1]
|
filename = filename[0:-1]
|
||||||
|
|
||||||
@ -164,7 +170,7 @@ class _PluginInternationalization:
|
|||||||
if len(data) == 0: # Multiline mode
|
if len(data) == 0: # Multiline mode
|
||||||
step = IN_MSGSTR
|
step = IN_MSGSTR
|
||||||
else:
|
else:
|
||||||
self._translate(untranslated, data)
|
self._addToDatabase(untranslated, data)
|
||||||
step = WAITING_FOR_MSGID
|
step = WAITING_FOR_MSGID
|
||||||
|
|
||||||
|
|
||||||
@ -175,25 +181,47 @@ class _PluginInternationalization:
|
|||||||
step = WAITING_FOR_MSGID
|
step = WAITING_FOR_MSGID
|
||||||
if translated == '':
|
if translated == '':
|
||||||
translated = untranslated
|
translated = untranslated
|
||||||
self._translate(untranslated, translated)
|
self._addToDatabase(untranslated, translated)
|
||||||
|
|
||||||
def _translate(self, untranslated, translated):
|
def _addToDatabase(self, untranslated, translated):
|
||||||
self.translations.update({self._unescape(untranslated):
|
untranslated = self._unescape(untranslated)
|
||||||
self._unescape(translated)})
|
translated = self._unescape(translated)
|
||||||
|
self.translations.update({untranslated: translated})
|
||||||
|
|
||||||
def _unescape(self, string):
|
def _unescape(self, string):
|
||||||
return str.replace(string, '\\n', '\n')
|
import supybot.utils as utils
|
||||||
|
return utils.str.normalizeWhitespace(str.replace(string, '\\n', '\n'))
|
||||||
|
|
||||||
def __call__(self, untranslated):
|
def __call__(self, untranslated):
|
||||||
|
if untranslated.__class__ == internationalizedString:
|
||||||
|
return untranslated._original
|
||||||
|
untranslated = __import__('supybot').utils.str.normalizeWhitespace(untranslated)
|
||||||
if not 'conf' in globals():
|
if not 'conf' in globals():
|
||||||
return untranslated
|
return untranslated
|
||||||
if self.currentLocaleName != conf.supybot.language():
|
if self.currentLocaleName != conf.supybot.language():
|
||||||
# If the locale has been changed
|
# If the locale has been changed
|
||||||
reloadLocals()
|
reloadLocals()
|
||||||
try:
|
try:
|
||||||
return self.translations[untranslated]
|
string = self._translate(untranslated)
|
||||||
|
return self._addTracker(string, untranslated)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return untranslated
|
pass
|
||||||
|
return untranslated
|
||||||
|
|
||||||
|
def _translate(self, string):
|
||||||
|
if string.__class__ == internationalizedString:
|
||||||
|
return string._internationalizer(string.untranslated)
|
||||||
|
else:
|
||||||
|
return self.translations[string]
|
||||||
|
|
||||||
|
def _addTracker(self, string, untranslated):
|
||||||
|
if string.__class__ == internationalizedString:
|
||||||
|
return string
|
||||||
|
else:
|
||||||
|
string = internationalizedString(string)
|
||||||
|
string._original = untranslated
|
||||||
|
string._internationalizer = self
|
||||||
|
return string
|
||||||
|
|
||||||
def _loadL10nCode(self):
|
def _loadL10nCode(self):
|
||||||
if self.name != 'supybot':
|
if self.name != 'supybot':
|
||||||
@ -260,6 +288,13 @@ class internationalizedFunction:
|
|||||||
def restore(self):
|
def restore(self):
|
||||||
self.__call__ = self._origin
|
self.__call__ = self._origin
|
||||||
|
|
||||||
|
class internationalizedString(str):
|
||||||
|
pass
|
||||||
|
# def __init__(self, *args, **kwargs):
|
||||||
|
# self.__parent.__init__(*args, **kwargs)
|
||||||
|
# self._original = str(self)
|
||||||
|
# self._internationalizer = None
|
||||||
|
|
||||||
def internationalizeDocstring(obj):
|
def internationalizeDocstring(obj):
|
||||||
"""Decorates functions and internationalize their docstring.
|
"""Decorates functions and internationalize their docstring.
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@ import string
|
|||||||
import textwrap
|
import textwrap
|
||||||
|
|
||||||
import supybot.utils as utils
|
import supybot.utils as utils
|
||||||
|
import supybot.i18n as i18n
|
||||||
|
|
||||||
def error(s):
|
def error(s):
|
||||||
"""Replace me with something better from another module!"""
|
"""Replace me with something better from another module!"""
|
||||||
@ -211,7 +212,7 @@ class Group(object):
|
|||||||
self.__nonExistentEntry(attr)
|
self.__nonExistentEntry(attr)
|
||||||
|
|
||||||
def help(self):
|
def help(self):
|
||||||
return self._help
|
return i18n.PluginInternationalization().__call__(self._help)
|
||||||
|
|
||||||
def get(self, attr):
|
def get(self, attr):
|
||||||
# Not getattr(self, attr) because some nodes might have groups that
|
# Not getattr(self, attr) because some nodes might have groups that
|
||||||
|
Loading…
Reference in New Issue
Block a user