summaryrefslogtreecommitdiffstats
path: root/ipalib/text.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipalib/text.py')
-rw-r--r--ipalib/text.py79
1 files changed, 79 insertions, 0 deletions
diff --git a/ipalib/text.py b/ipalib/text.py
new file mode 100644
index 000000000..0c8684025
--- /dev/null
+++ b/ipalib/text.py
@@ -0,0 +1,79 @@
+# Authors:
+# Jason Gerard DeRose <jderose@redhat.com>
+#
+# Copyright (C) 2009 Red Hat
+# see file 'COPYING' for use and warranty contextrmation
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; version 2 only
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+"""
+Thread-local lazy gettext service.
+
+TODO: This aren't hooked up into gettext yet, they currently just provide
+placeholders for the rest of the code.
+"""
+
+
+class LazyText(object):
+ def __init__(self, domain, localedir):
+ self.domain = domain
+ self.localedir = localedir
+
+
+class Gettext(LazyText):
+ def __init__(self, msg, domain, localedir):
+ self.msg = msg
+ super(Gettext, self).__init__(domain, localedir)
+
+ def __unicode__(self):
+ return self.msg.decode('utf-8')
+
+ def __mod__(self, value):
+ return self.__unicode__() % value
+
+
+class NGettext(LazyText):
+ def __init__(self, singular, plural, domain, localedir):
+ self.singular = singular
+ self.plural = plural
+ super(NGettext, self).__init__(domain, localedir)
+
+ def __mod__(self, kw):
+ count = kw['count']
+ return self(count) % kw
+
+ def __call__(self, count):
+ if count == 1:
+ return self.singular.decode('utf-8')
+ return self.plural.decode('utf-8')
+
+
+class gettext_factory(object):
+ def __init__(self, domain='ipa', localedir=None):
+ self.domain = domain
+ self.localedir = localedir
+
+ def __call__(self, msg):
+ return Gettext(msg, self.domain, self.localedir)
+
+
+class ngettext_factory(gettext_factory):
+ def __call__(self, singular, plural, count=0):
+ return NGettext(singular, plural, self.domain, self.localedir)
+
+
+# Process wide factories:
+gettext = gettext_factory()
+_ = gettext
+ngettext = ngettext_factory()