diff --git a/src/i18n.py b/src/i18n.py index 36aace3cd..e2800334e 100644 --- a/src/i18n.py +++ b/src/i18n.py @@ -185,16 +185,17 @@ class _PluginInternationalization: def _unescape(self, string): import supybot.utils as utils - return utils.str.normalizeWhitespace(str.replace(string, '\\n', '\n')) + string = str.replace(string, '\\n', '\n') # gettext escapes the \n + string = utils.str.normalizeWhitespace(string, removeNewline=False) + return string def __call__(self, untranslated): """Main function. his is the function which is called when a plugin runs _()""" - import supybot.utils as utils if untranslated.__class__ == internationalizedString: return untranslated._original - untranslated = utils.str.normalizeWhitespace(untranslated) + untranslated = self._unescape(untranslated) if not 'conf' in globals(): return untranslated if self.currentLocaleName != conf.supybot.language(): diff --git a/src/utils/str.py b/src/utils/str.py index 5eb8cb569..c624fe7bb 100644 --- a/src/utils/str.py +++ b/src/utils/str.py @@ -59,11 +59,14 @@ def rsplit(s, sep=None, maxsplit=-1): else: return s.rsplit(sep, maxsplit) -def normalizeWhitespace(s): +def normalizeWhitespace(s, removeNewline=True): """Normalizes the whitespace in a string; \s+ becomes one space.""" beginning = s.startswith(' ') ending = s.endswith(' ') - s = ' '.join(s.split()) + if removeNewline: + s = ' '.join(s.split()) + else: + s = ' '.join(s.split(' ')) if beginning: s = ' ' + s if ending: