summaryrefslogtreecommitdiff
path: root/dummyengine.py
diff options
context:
space:
mode:
Diffstat (limited to 'dummyengine.py')
-rw-r--r--dummyengine.py100
1 files changed, 23 insertions, 77 deletions
diff --git a/dummyengine.py b/dummyengine.py
index aa76c62..4dbe489 100644
--- a/dummyengine.py
+++ b/dummyengine.py
@@ -265,6 +265,19 @@ class DummyTranslationDomain(object):
domain = ''
+ msgids = {}
+
+ def appendMsgid(self, domain, data):
+ if not self.msgids.has_key(domain):
+ self.msgids[domain] = []
+ self.msgids[domain].append(data)
+
+ def getMsgids(self, domain):
+ return self.msgids[domain]
+
+ def clearMsgids(self):
+ self.msgids = {}
+
def translate(self, msgid, mapping=None, context=None,
target_language=None, default=None):
@@ -293,94 +306,27 @@ class DummyTranslationDomain(object):
elif domain and hasattr('', domain):
text = getattr(msgid, domain)()
else:
+ domain = 'default'
text = msgid.upper()
+ self.appendMsgid(domain, (msgid, mapping))
+
def repl(m):
return unicode(mapping[m.group(m.lastindex).lower()])
cre = re.compile(r'\$(?:([_A-Za-z][-\w]*)|\{([_A-Za-z][-\w]*)\})')
return cre.sub(repl, text)
-
class MultipleDomainsDummyEngine(DummyEngine):
- def __init__(self, macros=None):
- if macros is None:
- macros = {}
- self.macros = macros
- dict = {'nothing': None, 'default': Default}
- self.locals = self.globals = dict
- self.stack = [dict]
- self.translationDomain = DummyTranslationDomain()
- self.lowerDomain = LowerDummyDomain()
- self.useEngineAttrDicts = False
-
def translate(self, msgid, domain=None, mapping=None, default=None):
+
if isinstance(msgid, (MessageID, Message)):
domain = msgid.domain
- if domain in ['lower', 'a_very_explicit_domain_setup_by_template_developer_that_wont_be_taken_into_account_by_the_ZPT_engine']:
- translationDomain = self.lowerDomain
- else:
- translationDomain = self.translationDomain
- translationDomain.domain = domain
- return translationDomain.translate(
+
+ if domain == 'a_very_explicit_domain_setup_by_template_developer_that_wont_be_taken_into_account_by_the_ZPT_engine':
+ domain = 'lower'
+
+ self.translationDomain.domain = domain
+ return self.translationDomain.translate(
msgid, mapping, default=default)
-class LowerDummyDomain(object):
- implements(ITranslationDomain)
-
- domain = ''
-
- def translate(self, msgid, mapping=None, context=None,
- target_language=None, default=None):
-
- domain = self.domain
- # This is a fake translation service which simply uppercases non
- # ${name} placeholder text in the message id.
- #
- # First, transform a string with ${name} placeholders into a list of
- # substrings. Then lowcase everything but the placeholders, then glue
- # things back together.
-
- # If the domain is a string method, then transform the string
- # by calling that method.
-
- # MessageID attributes override arguments
- if isinstance(msgid, (MessageID, Message)):
- domain = msgid.domain
- mapping = msgid.mapping
- default = msgid.default
- if default is None: # Message doesn't substitute itself for
- default = msgid # missing default
-
- # simulate an unknown msgid by returning None
- if msgid == "don't translate me":
- text = default
- elif domain and hasattr('', domain):
- text = getattr(msgid, domain)()
- else:
- text = msgid.lower()
-
- def repl(m):
- return unicode(mapping[m.group(m.lastindex).lower()])
- cre = re.compile(r'\$(?:([_A-Za-z][-\w]*)|\{([_A-Za-z][-\w]*)\})')
- return cre.sub(repl, text)
-
- def translate(self, msgid, mapping=None, context=None,
- target_language=None, default=None):
- # This is a fake translation service which simply lowercases non
- # ${name} placeholder text in the message id.
- #
- # First, transform a string with ${name} placeholders into a list of
- # substrings. Then upcase everything but the placeholders, then glue
- # things back together.
-
- # simulate an unknown msgid by returning None
- if msgid == "don't translate me":
- text = default
- else:
- text = msgid.lower()
-
- def repl(m, mapping=mapping):
- return ustr(mapping[m.group(m.lastindex).lower()])
- cre = re.compile(r'\$(?:(%s)|\{(%s)\})' % (NAME_RE, NAME_RE))
- return cre.sub(repl, text)