summaryrefslogtreecommitdiff
path: root/oslo_i18n/fixture.py
diff options
context:
space:
mode:
authorDoug Hellmann <doug@doughellmann.com>2014-10-09 15:30:41 -0400
committerDoug Hellmann <doug@doughellmann.com>2014-12-18 16:35:03 -0500
commitba05e9a9b919e844121164fd23c560056da8a7bb (patch)
tree8c3d5545161823d1883d292eff7233145092aee4 /oslo_i18n/fixture.py
parent53635eae0f7db09fb9618dd71ed632e83a6ac8b6 (diff)
downloadoslo-i18n-ba05e9a9b919e844121164fd23c560056da8a7bb.tar.gz
Move out of the oslo namespace package
Move the public API out of oslo.i18n to oslo_i18n. Retain the ability to import from the old namespace package for backwards compatibility for this release cycle. bp/drop-namespace-packages Change-Id: I800f121c271d8e69f6e776c4aef509bbb8008170
Diffstat (limited to 'oslo_i18n/fixture.py')
-rw-r--r--oslo_i18n/fixture.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/oslo_i18n/fixture.py b/oslo_i18n/fixture.py
new file mode 100644
index 0000000..076c708
--- /dev/null
+++ b/oslo_i18n/fixture.py
@@ -0,0 +1,65 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+"""Test fixtures for working with oslo_i18n.
+
+"""
+
+import fixtures
+import six
+
+from oslo_i18n import _message
+
+
+class Translation(fixtures.Fixture):
+ """Fixture for managing translatable strings.
+
+ This class provides methods for creating translatable strings
+ using both lazy translation and immediate translation. It can be
+ used to generate the different types of messages returned from
+ oslo_i18n to test code that may need to know about the type to
+ handle them differently (for example, error handling in WSGI apps,
+ or logging).
+
+ Use this class to generate messages instead of toggling the global
+ lazy flag and using the regular translation factory.
+
+ """
+
+ def __init__(self, domain='test-domain'):
+ """Initialize the fixture.
+
+ :param domain: The translation domain. This is not expected to
+ coincide with an actual set of message
+ catalogs, but it can.
+ :type domain: str
+ """
+ self.domain = domain
+
+ def lazy(self, msg):
+ """Return a lazily translated message.
+
+ :param msg: Input message string. May optionally include
+ positional or named string interpolation markers.
+ :type msg: str or unicode
+
+ """
+ return _message.Message(msg, domain=self.domain)
+
+ def immediate(self, msg):
+ """Return a string as though it had been translated immediately.
+
+ :param msg: Input message string. May optionally include
+ positional or named string interpolation markers.
+ :type msg: str or unicode
+
+ """
+ return six.text_type(msg)