From 1d9c8283b8a1d1ccae5ddc2e832c47bac681a9dd Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Thu, 2 Apr 2020 14:10:21 +0200 Subject: [PATCH] Make oslo.i18n an optional dependency In an ideal world we would have all messages translated to at least major languages. In reality, ironic has never boasted a great set of translation, and according to Zanata only 2.94% of messages are translated for ironic in Train (1.33% for ironic-inspector). Given that ironic-python-agent is not translated at all, using i18n by default seems an overkill. Change-Id: I12287c6b7208af487cc9eee825ae7f38ec707d91 --- ironic/api/wsgi.py | 2 +- ironic/cmd/__init__.py | 2 +- ironic/common/i18n.py | 19 +++++++++++++++---- .../oslo-i18n-optional-76bab4d2697c6f94.yaml | 5 +++++ requirements.txt | 1 - setup.cfg | 2 ++ 6 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 releasenotes/notes/oslo-i18n-optional-76bab4d2697c6f94.yaml diff --git a/ironic/api/wsgi.py b/ironic/api/wsgi.py index 210a16a847..c464731390 100644 --- a/ironic/api/wsgi.py +++ b/ironic/api/wsgi.py @@ -14,10 +14,10 @@ import sys from oslo_config import cfg -import oslo_i18n as i18n from oslo_log import log from ironic.api import app +from ironic.common import i18n from ironic.common import service diff --git a/ironic/cmd/__init__.py b/ironic/cmd/__init__.py index 18e85ab186..8acedfa92d 100644 --- a/ironic/cmd/__init__.py +++ b/ironic/cmd/__init__.py @@ -25,6 +25,6 @@ import eventlet eventlet.monkey_patch(os=False) -import oslo_i18n as i18n # noqa for I202 due to 'import eventlet' above +from ironic.common import i18n # noqa for I202 due to 'import eventlet' above i18n.install('ironic') diff --git a/ironic/common/i18n.py b/ironic/common/i18n.py index 48c8d361ef..d724f558db 100644 --- a/ironic/common/i18n.py +++ b/ironic/common/i18n.py @@ -19,9 +19,20 @@ See https://docs.openstack.org/oslo.i18n/latest/user/ """ -import oslo_i18n as i18n +try: + import oslo_i18n as i18n +except ImportError: + def _(msg): + return msg -_translators = i18n.TranslatorFactory(domain='ironic') + def install(domain): + # NOTE(dtantsur): this is called before logging is initialized, so we + # cannot really log a warning here. + pass +else: + _translators = i18n.TranslatorFactory(domain='ironic') -# The primary translation function using the well-known name "_" -_ = _translators.primary + # The primary translation function using the well-known name "_" + _ = _translators.primary + + install = i18n.install diff --git a/releasenotes/notes/oslo-i18n-optional-76bab4d2697c6f94.yaml b/releasenotes/notes/oslo-i18n-optional-76bab4d2697c6f94.yaml new file mode 100644 index 0000000000..b99891a3f0 --- /dev/null +++ b/releasenotes/notes/oslo-i18n-optional-76bab4d2697c6f94.yaml @@ -0,0 +1,5 @@ +--- +upgrade: + - | + The dependency on ``oslo.i18n`` is now optional. If you would like messages + from ironic to be translated, you need to install it explicitly. diff --git a/requirements.txt b/requirements.txt index 4f4a1a1a9e..bdff31be5b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,7 +21,6 @@ oslo.config>=5.2.0 # Apache-2.0 oslo.context>=2.19.2 # Apache-2.0 oslo.db>=4.40.0 # Apache-2.0 oslo.rootwrap>=5.8.0 # Apache-2.0 -oslo.i18n>=3.15.3 # Apache-2.0 oslo.log>=3.36.0 # Apache-2.0 oslo.middleware>=3.31.0 # Apache-2.0 oslo.policy>=1.30.0 # Apache-2.0 diff --git a/setup.cfg b/setup.cfg index 5dd3dc4fe9..414af630b6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -200,3 +200,5 @@ universal = 1 [extras] guru_meditation_reports = oslo.reports>=1.18.0 # Apache-2.0 +i18n = + oslo.i18n>=3.15.3 # Apache-2.0