diff options
| author | Chris McDonough <chrism@agendaless.com> | 2010-04-19 09:18:37 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2010-04-19 09:18:37 +0000 |
| commit | cffb6b8a0141579324565c022de8079c9affe44c (patch) | |
| tree | df6fb725c5d54699c699c8193a1f7ff6f07e4ca7 /repoze/bfg/i18n.py | |
| parent | 8eefee0b38b2abc3f4e7cc147a45bebb16dd78cc (diff) | |
| download | pyramid-cffb6b8a0141579324565c022de8079c9affe44c.tar.gz pyramid-cffb6b8a0141579324565c022de8079c9affe44c.tar.bz2 pyramid-cffb6b8a0141579324565c022de8079c9affe44c.zip | |
Punt and use zope.i18nmessageid.
Diffstat (limited to 'repoze/bfg/i18n.py')
| -rw-r--r-- | repoze/bfg/i18n.py | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/repoze/bfg/i18n.py b/repoze/bfg/i18n.py index c22348a26..1aa2d13eb 100644 --- a/repoze/bfg/i18n.py +++ b/repoze/bfg/i18n.py @@ -1,8 +1,24 @@ +############################################################################## +# +# Copyright (c) 2004 Zope Corporation and Contributors. +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# +############################################################################## + import re from zope.interface import implements from zope.interface import classProvides +from zope.i18nmessageid.message import Message + from repoze.bfg.interfaces import ITranslator from repoze.bfg.interfaces import ITranslatorFactory from repoze.bfg.interfaces import IChameleonTranslate @@ -10,6 +26,8 @@ from repoze.bfg.interfaces import IChameleonTranslate from repoze.bfg.threadlocal import get_current_registry from repoze.bfg.threadlocal import get_current_request +TranslationString = Message + def get_translator(request, translator_factory=None): """ Return a :term:`translator` for the given request based on the :term:`translator factory` registered for the current application @@ -59,23 +77,6 @@ class InterpolationOnlyTranslator(object): mapping = getattr(message, 'mapping', None) return interpolate(message, mapping) -class TranslationString(unicode): - __slots__ = ('msgid', 'domain', 'mapping') - def __new__(cls, text, msgid=None, domain=None, mapping=None): - self = unicode.__new__(cls, text) - if msgid is None: - msgid = unicode(text) - self.msgid = msgid - self.domain = domain - self.mapping = mapping or {} - return self - - def __reduce__(self): - return self.__class__, self.__getstate__() - - def __getstate__(self): - return unicode(self), self.msgid, self.domain, self.mapping - class ChameleonTranslate(object): implements(IChameleonTranslate) def __init__(self, translator_factory): @@ -95,9 +96,9 @@ class ChameleonTranslate(object): if mapping is None: mapping = {} if translator is None: - return unicode(default) % mapping - if not isinstance(text, TranslationString): - text = TranslationString(default, msgid=text, domain=domain, + return interpolate(unicode(default), mapping) + if not hasattr(text, 'mapping'): + text = TranslationString(text, domain=domain, default=default, mapping=mapping) return translator(text) |
