From 826aed0ec7e59d52d515a86569b6e23b08c6c072 Mon Sep 17 00:00:00 2001
From: Davanum Srinivas <dims@linux.vnet.ibm.com>
Date: Fri, 11 Jul 2014 21:03:15 -0400
Subject: [PATCH] Use oslo.i18n

oslo.i18n provides the i18n functions that were provided by
oslo-incubator's gettextutils module. Some tests that were
using internal details of the library were removed.

Change-Id: I44cfd5552e0dd86af21073419d31622f5fdb28e0
---
 doc/source/devref/il8n.rst                    |  2 +-
 nova/api/auth.py                              |  2 +-
 nova/api/ec2/__init__.py                      |  4 +-
 nova/api/ec2/cloud.py                         |  2 +-
 nova/api/ec2/ec2utils.py                      |  2 +-
 nova/api/metadata/handler.py                  |  2 +-
 nova/api/metadata/password.py                 |  2 +-
 nova/api/metadata/vendordata_json.py          |  2 +-
 nova/api/openstack/__init__.py                | 12 ++--
 nova/api/openstack/common.py                  |  2 +-
 .../compute/contrib/admin_actions.py          |  2 +-
 .../openstack/compute/contrib/aggregates.py   |  2 +-
 .../contrib/assisted_volume_snapshots.py      |  2 +-
 .../compute/contrib/attach_interfaces.py      |  2 +-
 .../compute/contrib/baremetal_nodes.py        |  2 +-
 nova/api/openstack/compute/contrib/cells.py   |  2 +-
 .../openstack/compute/contrib/certificates.py |  2 +-
 .../openstack/compute/contrib/cloudpipe.py    |  2 +-
 .../compute/contrib/cloudpipe_update.py       |  2 +-
 .../compute/contrib/console_auth_tokens.py    |  2 +-
 .../compute/contrib/console_output.py         |  2 +-
 .../api/openstack/compute/contrib/consoles.py |  2 +-
 .../openstack/compute/contrib/disk_config.py  |  2 +-
 .../api/openstack/compute/contrib/evacuate.py |  2 +-
 .../openstack/compute/contrib/fixed_ips.py    |  2 +-
 .../compute/contrib/flavor_access.py          |  2 +-
 .../compute/contrib/flavorextraspecs.py       |  2 +-
 .../openstack/compute/contrib/flavormanage.py |  2 +-
 .../compute/contrib/floating_ip_dns.py        |  2 +-
 .../openstack/compute/contrib/floating_ips.py |  2 +-
 .../compute/contrib/floating_ips_bulk.py      |  2 +-
 nova/api/openstack/compute/contrib/fping.py   |  2 +-
 nova/api/openstack/compute/contrib/hosts.py   |  2 +-
 .../openstack/compute/contrib/hypervisors.py  |  2 +-
 .../contrib/instance_usage_audit_log.py       |  2 +-
 .../api/openstack/compute/contrib/keypairs.py |  2 +-
 .../api/openstack/compute/contrib/multinic.py |  2 +-
 .../compute/contrib/networks_associate.py     |  2 +-
 .../openstack/compute/contrib/os_networks.py  |  2 +-
 .../compute/contrib/os_tenant_networks.py     |  2 +-
 .../compute/contrib/quota_classes.py          |  2 +-
 nova/api/openstack/compute/contrib/quotas.py  |  2 +-
 nova/api/openstack/compute/contrib/rescue.py  |  2 +-
 .../compute/contrib/scheduler_hints.py        |  2 +-
 .../contrib/security_group_default_rules.py   |  2 +-
 .../compute/contrib/security_groups.py        |  2 +-
 .../compute/contrib/server_external_events.py |  2 +-
 .../compute/contrib/server_groups.py          |  2 +-
 .../compute/contrib/server_start_stop.py      |  2 +-
 .../api/openstack/compute/contrib/services.py |  2 +-
 nova/api/openstack/compute/contrib/shelve.py  |  2 +-
 .../compute/contrib/simple_tenant_usage.py    |  2 +-
 nova/api/openstack/compute/contrib/volumes.py |  2 +-
 nova/api/openstack/compute/extensions.py      |  2 +-
 nova/api/openstack/compute/flavors.py         |  2 +-
 nova/api/openstack/compute/image_metadata.py  |  2 +-
 nova/api/openstack/compute/images.py          |  2 +-
 nova/api/openstack/compute/ips.py             |  2 +-
 nova/api/openstack/compute/limits.py          |  2 +-
 .../api/openstack/compute/plugins/__init__.py |  2 +-
 .../compute/plugins/v3/access_ips.py          |  2 +-
 .../compute/plugins/v3/admin_actions.py       |  2 +-
 .../compute/plugins/v3/admin_password.py      |  2 +-
 .../compute/plugins/v3/aggregates.py          |  2 +-
 .../compute/plugins/v3/attach_interfaces.py   |  2 +-
 .../api/openstack/compute/plugins/v3/cells.py |  2 +-
 .../compute/plugins/v3/certificates.py        |  2 +-
 .../compute/plugins/v3/console_auth_tokens.py |  2 +-
 .../compute/plugins/v3/console_output.py      |  2 +-
 .../openstack/compute/plugins/v3/evacuate.py  |  2 +-
 .../compute/plugins/v3/extended_volumes.py    |  2 +-
 .../compute/plugins/v3/flavor_access.py       |  2 +-
 .../openstack/compute/plugins/v3/flavors.py   |  2 +-
 .../compute/plugins/v3/flavors_extraspecs.py  |  2 +-
 .../api/openstack/compute/plugins/v3/hosts.py |  2 +-
 .../compute/plugins/v3/hypervisors.py         |  2 +-
 nova/api/openstack/compute/plugins/v3/ips.py  |  2 +-
 .../openstack/compute/plugins/v3/keypairs.py  |  2 +-
 .../compute/plugins/v3/multiple_create.py     |  2 +-
 .../compute/plugins/v3/pause_server.py        |  2 +-
 .../compute/plugins/v3/quota_sets.py          |  2 +-
 .../compute/plugins/v3/remote_consoles.py     |  2 +-
 .../openstack/compute/plugins/v3/rescue.py    |  2 +-
 .../compute/plugins/v3/scheduler_hints.py     |  2 +-
 .../compute/plugins/v3/server_actions.py      |  2 +-
 .../plugins/v3/server_external_events.py      |  2 +-
 .../compute/plugins/v3/server_metadata.py     |  2 +-
 .../openstack/compute/plugins/v3/servers.py   |  2 +-
 .../openstack/compute/plugins/v3/services.py  |  2 +-
 nova/api/openstack/compute/server_metadata.py |  2 +-
 nova/api/openstack/compute/servers.py         |  2 +-
 nova/api/openstack/compute/views/servers.py   |  2 +-
 nova/api/openstack/extensions.py              |  2 +-
 nova/api/openstack/wsgi.py                    | 17 ++---
 nova/api/openstack/xmlutil.py                 |  2 +-
 nova/api/sizelimit.py                         |  2 +-
 nova/api/validation/validators.py             |  2 +-
 nova/block_device.py                          |  2 +-
 nova/cells/filters/target_cell.py             |  2 +-
 nova/cells/manager.py                         |  2 +-
 nova/cells/messaging.py                       |  2 +-
 nova/cells/rpcapi.py                          |  2 +-
 nova/cells/scheduler.py                       |  2 +-
 nova/cells/state.py                           |  2 +-
 nova/cells/weights/mute_child.py              |  2 +-
 nova/cloudpipe/pipelib.py                     |  2 +-
 nova/cmd/all.py                               |  2 +-
 nova/cmd/baremetal_deploy_helper.py           |  2 +-
 nova/cmd/baremetal_manage.py                  |  2 +-
 nova/cmd/compute.py                           |  2 +-
 nova/cmd/dhcpbridge.py                        |  2 +-
 nova/cmd/manage.py                            |  2 +-
 nova/cmd/network.py                           |  2 +-
 nova/compute/api.py                           |  2 +-
 nova/compute/claims.py                        |  2 +-
 nova/compute/flavors.py                       |  2 +-
 nova/compute/manager.py                       |  8 +--
 nova/compute/monitors/__init__.py             |  2 +-
 nova/compute/monitors/virt/cpu_monitor.py     |  2 +-
 nova/compute/resource_tracker.py              |  2 +-
 nova/compute/rpcapi.py                        |  2 +-
 nova/compute/utils.py                         |  2 +-
 nova/conductor/api.py                         |  2 +-
 nova/conductor/manager.py                     |  2 +-
 nova/conductor/tasks/live_migrate.py          |  2 +-
 nova/console/websocketproxy.py                |  2 +-
 nova/console/xvp.py                           |  2 +-
 nova/consoleauth/manager.py                   |  2 +-
 nova/context.py                               |  2 +-
 nova/crypto.py                                |  2 +-
 nova/db/api.py                                |  2 +-
 nova/db/sqlalchemy/api.py                     |  2 +-
 .../migrate_repo/versions/216_havana.py       |  2 +-
 nova/db/sqlalchemy/migration.py               |  2 +-
 nova/db/sqlalchemy/utils.py                   |  2 +-
 nova/debugger.py                              |  2 +-
 nova/exception.py                             |  2 +-
 nova/filters.py                               |  2 +-
 nova/hooks.py                                 |  2 +-
 nova/i18n.py                                  | 66 +++++++++++++++++++
 nova/image/download/__init__.py               |  2 +-
 nova/image/download/file.py                   |  2 +-
 nova/image/glance.py                          |  2 +-
 nova/image/s3.py                              |  2 +-
 nova/ipv6/account_identifier.py               |  2 +-
 nova/ipv6/rfc2462.py                          |  2 +-
 nova/keymgr/conf_key_mgr.py                   |  2 +-
 nova/keymgr/mock_key_mgr.py                   |  2 +-
 nova/keymgr/single_key_mgr.py                 |  2 +-
 nova/network/api.py                           |  2 +-
 nova/network/base_api.py                      |  2 +-
 nova/network/driver.py                        |  2 +-
 nova/network/floating_ips.py                  |  2 +-
 nova/network/ldapdns.py                       |  2 +-
 nova/network/linux_net.py                     |  2 +-
 nova/network/manager.py                       |  2 +-
 nova/network/minidns.py                       |  2 +-
 nova/network/model.py                         |  2 +-
 nova/network/neutronv2/api.py                 |  2 +-
 nova/network/security_group/neutron_driver.py |  2 +-
 .../security_group/security_group_base.py     |  2 +-
 nova/notifications.py                         |  2 +-
 nova/objects/base.py                          |  2 +-
 nova/objects/block_device.py                  |  2 +-
 nova/objects/fields.py                        |  2 +-
 nova/objects/instance.py                      |  2 +-
 nova/objects/instance_fault.py                |  2 +-
 nova/objects/instance_info_cache.py           |  2 +-
 nova/pci/pci_manager.py                       |  2 +-
 nova/quota.py                                 |  2 +-
 nova/scheduler/chance.py                      |  2 +-
 nova/scheduler/driver.py                      |  2 +-
 nova/scheduler/filter_scheduler.py            |  2 +-
 nova/scheduler/filters/compute_filter.py      |  2 +-
 nova/scheduler/filters/core_filter.py         |  2 +-
 nova/scheduler/filters/ram_filter.py          |  2 +-
 nova/scheduler/filters/trusted_filter.py      |  2 +-
 nova/scheduler/filters/utils.py               |  2 +-
 nova/scheduler/host_manager.py                |  2 +-
 nova/scheduler/scheduler_options.py           |  2 +-
 nova/scheduler/utils.py                       |  2 +-
 nova/service.py                               |  2 +-
 nova/servicegroup/api.py                      |  2 +-
 nova/servicegroup/drivers/db.py               |  2 +-
 nova/servicegroup/drivers/mc.py               |  2 +-
 nova/servicegroup/drivers/zk.py               |  2 +-
 nova/storage/linuxscsi.py                     |  2 +-
 .../compute/plugins/v3/test_servers.py        |  2 +-
 .../api/openstack/compute/test_servers.py     |  2 +-
 nova/tests/api/openstack/fakes.py             |  2 +-
 nova/tests/api/openstack/test_faults.py       | 34 +++++-----
 nova/tests/api/openstack/test_wsgi.py         | 14 ++--
 nova/tests/api/test_auth.py                   |  2 +-
 nova/tests/compute/test_compute.py            |  2 +-
 nova/tests/compute/test_keypairs.py           |  2 +-
 nova/tests/db/test_migrations.py              |  2 +-
 nova/tests/fake_ldap.py                       |  2 +-
 nova/tests/fake_volume.py                     |  2 +-
 nova/tests/integrated/api/client.py           |  2 +-
 .../tests/integrated/api_samples_test_base.py |  2 +-
 nova/tests/test_exception.py                  | 11 ----
 nova/tests/test_nova_manage.py                |  2 +-
 nova/tests/virt/hyperv/test_hypervapi.py      |  2 +-
 nova/tests/virt/libvirt/fakelibvirt.py        |  2 +-
 nova/tests/virt/vmwareapi/fake.py             |  2 +-
 nova/tests/virt/vmwareapi/test_ds_util.py     |  2 +-
 .../virt/xenapi/image/test_bittorrent.py      |  2 +-
 nova/tests/virt/xenapi/test_vm_utils.py       |  2 +-
 nova/utils.py                                 |  5 +-
 nova/version.py                               |  2 +-
 nova/virt/baremetal/common.py                 |  2 +-
 nova/virt/baremetal/db/sqlalchemy/api.py      |  2 +-
 .../virt/baremetal/db/sqlalchemy/migration.py |  2 +-
 nova/virt/baremetal/driver.py                 |  2 +-
 nova/virt/baremetal/iboot_pdu.py              |  2 +-
 nova/virt/baremetal/ipmi.py                   |  2 +-
 nova/virt/baremetal/pxe.py                    |  2 +-
 nova/virt/baremetal/tilera.py                 |  2 +-
 nova/virt/baremetal/tilera_pdu.py             |  2 +-
 nova/virt/baremetal/utils.py                  |  2 +-
 nova/virt/baremetal/vif_driver.py             |  2 +-
 nova/virt/baremetal/virtual_power_driver.py   |  2 +-
 nova/virt/baremetal/volume_driver.py          |  2 +-
 nova/virt/block_device.py                     |  2 +-
 nova/virt/disk/api.py                         |  2 +-
 nova/virt/disk/mount/api.py                   |  2 +-
 nova/virt/disk/mount/loop.py                  |  2 +-
 nova/virt/disk/mount/nbd.py                   |  2 +-
 nova/virt/disk/vfs/guestfs.py                 |  2 +-
 nova/virt/disk/vfs/localfs.py                 |  2 +-
 nova/virt/driver.py                           |  2 +-
 nova/virt/event.py                            |  2 +-
 nova/virt/fake.py                             |  2 +-
 nova/virt/firewall.py                         |  4 +-
 nova/virt/hardware.py                         |  2 +-
 nova/virt/hyperv/basevolumeutils.py           |  2 +-
 nova/virt/hyperv/driver.py                    |  2 +-
 nova/virt/hyperv/imagecache.py                |  2 +-
 nova/virt/hyperv/livemigrationops.py          |  2 +-
 nova/virt/hyperv/livemigrationutils.py        |  2 +-
 nova/virt/hyperv/migrationops.py              |  2 +-
 nova/virt/hyperv/networkutils.py              |  2 +-
 nova/virt/hyperv/networkutilsv2.py            |  2 +-
 nova/virt/hyperv/pathutils.py                 |  2 +-
 nova/virt/hyperv/snapshotops.py               |  2 +-
 nova/virt/hyperv/vhdutils.py                  |  2 +-
 nova/virt/hyperv/vhdutilsv2.py                |  2 +-
 nova/virt/hyperv/vmops.py                     |  2 +-
 nova/virt/hyperv/vmutils.py                   |  2 +-
 nova/virt/hyperv/volumeops.py                 |  2 +-
 nova/virt/hyperv/volumeutils.py               |  2 +-
 nova/virt/hyperv/volumeutilsv2.py             |  2 +-
 nova/virt/images.py                           |  2 +-
 nova/virt/libvirt/blockinfo.py                |  2 +-
 nova/virt/libvirt/driver.py                   |  8 +--
 nova/virt/libvirt/firewall.py                 |  4 +-
 nova/virt/libvirt/imagebackend.py             |  4 +-
 nova/virt/libvirt/imagecache.py               |  6 +-
 nova/virt/libvirt/lvm.py                      |  6 +-
 nova/virt/libvirt/utils.py                    |  6 +-
 nova/virt/libvirt/vif.py                      |  6 +-
 nova/virt/libvirt/volume.py                   |  6 +-
 nova/virt/storage_users.py                    |  2 +-
 nova/virt/vmwareapi/driver.py                 |  3 +-
 nova/virt/vmwareapi/ds_util.py                |  2 +-
 nova/virt/vmwareapi/error_util.py             |  2 +-
 nova/virt/vmwareapi/imagecache.py             |  2 +-
 nova/virt/vmwareapi/io_util.py                |  2 +-
 nova/virt/vmwareapi/network_util.py           |  2 +-
 nova/virt/vmwareapi/vif.py                    |  2 +-
 nova/virt/vmwareapi/vim.py                    |  2 +-
 nova/virt/vmwareapi/vim_util.py               |  2 +-
 nova/virt/vmwareapi/vm_util.py                |  2 +-
 nova/virt/vmwareapi/vmops.py                  |  2 +-
 nova/virt/vmwareapi/volumeops.py              |  2 +-
 nova/virt/xenapi/agent.py                     |  2 +-
 nova/virt/xenapi/client/session.py            |  2 +-
 nova/virt/xenapi/driver.py                    |  2 +-
 nova/virt/xenapi/fake.py                      |  2 +-
 nova/virt/xenapi/host.py                      |  2 +-
 nova/virt/xenapi/image/bittorrent.py          |  2 +-
 nova/virt/xenapi/network_utils.py             |  2 +-
 nova/virt/xenapi/pool.py                      |  2 +-
 nova/virt/xenapi/vif.py                       |  2 +-
 nova/virt/xenapi/vm_utils.py                  |  2 +-
 nova/virt/xenapi/vmops.py                     |  2 +-
 nova/virt/xenapi/volume_utils.py              |  2 +-
 nova/virt/xenapi/volumeops.py                 |  2 +-
 nova/vnc/xvp_proxy.py                         |  2 +-
 nova/volume/cinder.py                         |  2 +-
 nova/volume/encryptors/__init__.py            |  2 +-
 nova/wsgi.py                                  |  2 +-
 requirements.txt                              |  1 +
 tools/db/schema_diff.py                       |  2 +-
 tools/esx/guest_tool.py                       |  2 +-
 tox.ini                                       |  2 +-
 296 files changed, 411 insertions(+), 366 deletions(-)
 create mode 100644 nova/i18n.py

diff --git a/doc/source/devref/il8n.rst b/doc/source/devref/il8n.rst
index 007395055158..3898e5302c73 100644
--- a/doc/source/devref/il8n.rst
+++ b/doc/source/devref/il8n.rst
@@ -21,4 +21,4 @@ in nova/tests/test_localization.py.
 
 The ``_()`` function is found by doing::
 
-    from nova.openstack.common.gettextutils import _
+    from nova.i18n import _
diff --git a/nova/api/auth.py b/nova/api/auth.py
index b0015cce2ba6..c2efb97033d3 100644
--- a/nova/api/auth.py
+++ b/nova/api/auth.py
@@ -21,7 +21,7 @@ import webob.dec
 import webob.exc
 
 from nova import context
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common.middleware import request_id
diff --git a/nova/api/ec2/__init__.py b/nova/api/ec2/__init__.py
index 358e7c91e7fc..036c6bff7dc8 100644
--- a/nova/api/ec2/__init__.py
+++ b/nova/api/ec2/__init__.py
@@ -32,8 +32,8 @@ from nova.api.ec2 import faults
 from nova.api import validator
 from nova import context
 from nova import exception
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
+from nova.i18n import _
+from nova.i18n import _LE
 from nova.openstack.common import importutils
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index f6afb1f1234c..aea4c7aafe00 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -38,12 +38,12 @@ from nova.compute import api as compute_api
 from nova.compute import vm_states
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova.image import s3
 from nova import network
 from nova.network.security_group import neutron_driver
 from nova import objects
 from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
 from nova import quota
diff --git a/nova/api/ec2/ec2utils.py b/nova/api/ec2/ec2utils.py
index 97cbe5627abc..88bf25576435 100644
--- a/nova/api/ec2/ec2utils.py
+++ b/nova/api/ec2/ec2utils.py
@@ -21,10 +21,10 @@ from nova import availability_zones
 from nova import context
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova.network import model as network_model
 from nova import objects
 from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import memorycache
 from nova.openstack.common import timeutils
diff --git a/nova/api/metadata/handler.py b/nova/api/metadata/handler.py
index 29c0443b29e5..d93296621e3e 100644
--- a/nova/api/metadata/handler.py
+++ b/nova/api/metadata/handler.py
@@ -27,7 +27,7 @@ import webob.exc
 from nova.api.metadata import base
 from nova import conductor
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import memorycache
 from nova import utils
diff --git a/nova/api/metadata/password.py b/nova/api/metadata/password.py
index ec32d29e84aa..6e067797b026 100644
--- a/nova/api/metadata/password.py
+++ b/nova/api/metadata/password.py
@@ -16,8 +16,8 @@
 from webob import exc
 
 from nova import context
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 from nova import utils
 
 
diff --git a/nova/api/metadata/vendordata_json.py b/nova/api/metadata/vendordata_json.py
index 55edd5512015..b8e4e53cdd85 100644
--- a/nova/api/metadata/vendordata_json.py
+++ b/nova/api/metadata/vendordata_json.py
@@ -20,7 +20,7 @@ import errno
 from oslo.config import cfg
 
 from nova.api.metadata import base
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 
diff --git a/nova/api/openstack/__init__.py b/nova/api/openstack/__init__.py
index cac785241d03..b8d6e6568eaa 100644
--- a/nova/api/openstack/__init__.py
+++ b/nova/api/openstack/__init__.py
@@ -27,9 +27,9 @@ import webob.exc
 from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import exception
+from nova.i18n import _
+from nova.i18n import translate
 from nova import notifications
-from nova.openstack.common import gettextutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova import utils
 from nova import wsgi as base_wsgi
@@ -107,12 +107,8 @@ class FaultWrapper(base_wsgi.Middleware):
         # inconsistent with the EC2 API to hide every exception,
         # including those that are safe to expose, see bug 1021373
         if safe:
-            if isinstance(inner.msg_fmt, gettextutils.Message):
-                user_locale = req.best_match_language()
-                inner_msg = gettextutils.translate(
-                        inner.msg_fmt, user_locale)
-            else:
-                inner_msg = unicode(inner)
+            user_locale = req.best_match_language()
+            inner_msg = translate(inner.message, user_locale)
             outer.explanation = '%s: %s' % (inner.__class__.__name__,
                                             inner_msg)
 
diff --git a/nova/api/openstack/common.py b/nova/api/openstack/common.py
index d0105e57d77f..ef46f3cb7267 100644
--- a/nova/api/openstack/common.py
+++ b/nova/api/openstack/common.py
@@ -29,7 +29,7 @@ from nova.compute import task_states
 from nova.compute import utils as compute_utils
 from nova.compute import vm_states
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova import quota
 
diff --git a/nova/api/openstack/compute/contrib/admin_actions.py b/nova/api/openstack/compute/contrib/admin_actions.py
index 4092cbbeaf55..9f356f785205 100644
--- a/nova/api/openstack/compute/contrib/admin_actions.py
+++ b/nova/api/openstack/compute/contrib/admin_actions.py
@@ -24,7 +24,7 @@ from nova.api.openstack import wsgi
 from nova import compute
 from nova.compute import vm_states
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 
diff --git a/nova/api/openstack/compute/contrib/aggregates.py b/nova/api/openstack/compute/contrib/aggregates.py
index c5435c5f21dd..f062c00cae25 100644
--- a/nova/api/openstack/compute/contrib/aggregates.py
+++ b/nova/api/openstack/compute/contrib/aggregates.py
@@ -22,7 +22,7 @@ from webob import exc
 from nova.api.openstack import extensions
 from nova.compute import api as compute_api
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova import utils
 
diff --git a/nova/api/openstack/compute/contrib/assisted_volume_snapshots.py b/nova/api/openstack/compute/contrib/assisted_volume_snapshots.py
index b54008c27891..76ea7d10e1d7 100644
--- a/nova/api/openstack/compute/contrib/assisted_volume_snapshots.py
+++ b/nova/api/openstack/compute/contrib/assisted_volume_snapshots.py
@@ -19,7 +19,7 @@ from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 
diff --git a/nova/api/openstack/compute/contrib/attach_interfaces.py b/nova/api/openstack/compute/contrib/attach_interfaces.py
index fdc6441b47f9..f3b476172401 100644
--- a/nova/api/openstack/compute/contrib/attach_interfaces.py
+++ b/nova/api/openstack/compute/contrib/attach_interfaces.py
@@ -21,8 +21,8 @@ from webob import exc
 from nova.api.openstack import extensions
 from nova import compute
 from nova import exception
+from nova.i18n import _
 from nova import network
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 
diff --git a/nova/api/openstack/compute/contrib/baremetal_nodes.py b/nova/api/openstack/compute/contrib/baremetal_nodes.py
index 22a3faa98ce6..bff5a45be0ef 100644
--- a/nova/api/openstack/compute/contrib/baremetal_nodes.py
+++ b/nova/api/openstack/compute/contrib/baremetal_nodes.py
@@ -22,7 +22,7 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.virt.baremetal import db
 
 authorize = extensions.extension_authorizer('compute', 'baremetal_nodes')
diff --git a/nova/api/openstack/compute/contrib/cells.py b/nova/api/openstack/compute/contrib/cells.py
index 3937c24338fa..fa2661f10caf 100644
--- a/nova/api/openstack/compute/contrib/cells.py
+++ b/nova/api/openstack/compute/contrib/cells.py
@@ -28,7 +28,7 @@ from nova.api.openstack import xmlutil
 from nova.cells import rpcapi as cells_rpcapi
 from nova.compute import api as compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 from nova.openstack.common import timeutils
diff --git a/nova/api/openstack/compute/contrib/certificates.py b/nova/api/openstack/compute/contrib/certificates.py
index a483c4408552..9f1131aae638 100644
--- a/nova/api/openstack/compute/contrib/certificates.py
+++ b/nova/api/openstack/compute/contrib/certificates.py
@@ -18,7 +18,7 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 import nova.cert.rpcapi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 authorize = extensions.extension_authorizer('compute', 'certificates')
 
diff --git a/nova/api/openstack/compute/contrib/cloudpipe.py b/nova/api/openstack/compute/contrib/cloudpipe.py
index ec24a56a13aa..c10c45b7f207 100644
--- a/nova/api/openstack/compute/contrib/cloudpipe.py
+++ b/nova/api/openstack/compute/contrib/cloudpipe.py
@@ -25,9 +25,9 @@ from nova import compute
 from nova.compute import utils as compute_utils
 from nova.compute import vm_states
 from nova import exception
+from nova.i18n import _
 from nova import network
 from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import timeutils
 from nova import utils
 
diff --git a/nova/api/openstack/compute/contrib/cloudpipe_update.py b/nova/api/openstack/compute/contrib/cloudpipe_update.py
index 7ee8f14d7a74..e601eb282ad1 100644
--- a/nova/api/openstack/compute/contrib/cloudpipe_update.py
+++ b/nova/api/openstack/compute/contrib/cloudpipe_update.py
@@ -17,8 +17,8 @@ import webob.exc
 
 from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 
 authorize = extensions.extension_authorizer('compute', 'cloudpipe_update')
 
diff --git a/nova/api/openstack/compute/contrib/console_auth_tokens.py b/nova/api/openstack/compute/contrib/console_auth_tokens.py
index 681cb8577e94..a56e636b89b4 100644
--- a/nova/api/openstack/compute/contrib/console_auth_tokens.py
+++ b/nova/api/openstack/compute/contrib/console_auth_tokens.py
@@ -18,7 +18,7 @@ import webob
 from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.consoleauth import rpcapi as consoleauth_rpcapi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 authorize = extensions.extension_authorizer('compute', 'console_auth_tokens')
diff --git a/nova/api/openstack/compute/contrib/console_output.py b/nova/api/openstack/compute/contrib/console_output.py
index fab5c25afd90..63aa1c8f04b3 100644
--- a/nova/api/openstack/compute/contrib/console_output.py
+++ b/nova/api/openstack/compute/contrib/console_output.py
@@ -22,7 +22,7 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 authorize = extensions.extension_authorizer('compute', 'console_output')
diff --git a/nova/api/openstack/compute/contrib/consoles.py b/nova/api/openstack/compute/contrib/consoles.py
index 2ea7ca24d2a6..cf97764f6e5d 100644
--- a/nova/api/openstack/compute/contrib/consoles.py
+++ b/nova/api/openstack/compute/contrib/consoles.py
@@ -18,7 +18,7 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 authorize = extensions.extension_authorizer('compute', 'consoles')
diff --git a/nova/api/openstack/compute/contrib/disk_config.py b/nova/api/openstack/compute/contrib/disk_config.py
index 19817eab248f..7118be549f28 100644
--- a/nova/api/openstack/compute/contrib/disk_config.py
+++ b/nova/api/openstack/compute/contrib/disk_config.py
@@ -19,7 +19,7 @@ from webob import exc
 from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import strutils
 
 ALIAS = 'OS-DCF'
diff --git a/nova/api/openstack/compute/contrib/evacuate.py b/nova/api/openstack/compute/contrib/evacuate.py
index 723167a993af..cd6f8f4ccb44 100644
--- a/nova/api/openstack/compute/contrib/evacuate.py
+++ b/nova/api/openstack/compute/contrib/evacuate.py
@@ -20,7 +20,7 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import strutils
 from nova import utils
 
diff --git a/nova/api/openstack/compute/contrib/fixed_ips.py b/nova/api/openstack/compute/contrib/fixed_ips.py
index 805f1cbed5fa..199a4a105d04 100644
--- a/nova/api/openstack/compute/contrib/fixed_ips.py
+++ b/nova/api/openstack/compute/contrib/fixed_ips.py
@@ -16,8 +16,8 @@ import webob.exc
 
 from nova.api.openstack import extensions
 from nova import exception
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 
 authorize = extensions.extension_authorizer('compute', 'fixed_ips')
 
diff --git a/nova/api/openstack/compute/contrib/flavor_access.py b/nova/api/openstack/compute/contrib/flavor_access.py
index a497f758244f..198dfbb8e2ca 100644
--- a/nova/api/openstack/compute/contrib/flavor_access.py
+++ b/nova/api/openstack/compute/contrib/flavor_access.py
@@ -21,8 +21,8 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import exception
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 
 
 soft_authorize = extensions.soft_extension_authorizer('compute',
diff --git a/nova/api/openstack/compute/contrib/flavorextraspecs.py b/nova/api/openstack/compute/contrib/flavorextraspecs.py
index 8ba0db9d7f94..2f6f06f75c44 100644
--- a/nova/api/openstack/compute/contrib/flavorextraspecs.py
+++ b/nova/api/openstack/compute/contrib/flavorextraspecs.py
@@ -22,8 +22,8 @@ from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova.compute import flavors
 from nova import exception
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 from nova import utils
 
 authorize = extensions.extension_authorizer('compute', 'flavorextraspecs')
diff --git a/nova/api/openstack/compute/contrib/flavormanage.py b/nova/api/openstack/compute/contrib/flavormanage.py
index fe6b170eee48..af5df772e050 100644
--- a/nova/api/openstack/compute/contrib/flavormanage.py
+++ b/nova/api/openstack/compute/contrib/flavormanage.py
@@ -18,7 +18,7 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.compute import flavors
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 authorize = extensions.extension_authorizer('compute', 'flavormanage')
diff --git a/nova/api/openstack/compute/contrib/floating_ip_dns.py b/nova/api/openstack/compute/contrib/floating_ip_dns.py
index 3e5fb9b5e264..771c25dfb7fb 100644
--- a/nova/api/openstack/compute/contrib/floating_ip_dns.py
+++ b/nova/api/openstack/compute/contrib/floating_ip_dns.py
@@ -20,8 +20,8 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import exception
+from nova.i18n import _
 from nova import network
-from nova.openstack.common.gettextutils import _
 from nova import utils
 
 
diff --git a/nova/api/openstack/compute/contrib/floating_ips.py b/nova/api/openstack/compute/contrib/floating_ips.py
index bc1f18eb56f4..8bded0cc618e 100644
--- a/nova/api/openstack/compute/contrib/floating_ips.py
+++ b/nova/api/openstack/compute/contrib/floating_ips.py
@@ -24,8 +24,8 @@ from nova.api.openstack import xmlutil
 from nova import compute
 from nova.compute import utils as compute_utils
 from nova import exception
+from nova.i18n import _
 from nova import network
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import uuidutils
 
diff --git a/nova/api/openstack/compute/contrib/floating_ips_bulk.py b/nova/api/openstack/compute/contrib/floating_ips_bulk.py
index 4044ce2bbed6..4a6facba1382 100644
--- a/nova/api/openstack/compute/contrib/floating_ips_bulk.py
+++ b/nova/api/openstack/compute/contrib/floating_ips_bulk.py
@@ -18,8 +18,8 @@ import webob.exc
 
 from nova.api.openstack import extensions
 from nova import exception
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 CONF = cfg.CONF
diff --git a/nova/api/openstack/compute/contrib/fping.py b/nova/api/openstack/compute/contrib/fping.py
index 2b8a7534264c..28128188f1bd 100644
--- a/nova/api/openstack/compute/contrib/fping.py
+++ b/nova/api/openstack/compute/contrib/fping.py
@@ -24,7 +24,7 @@ from nova.api.openstack import common
 from nova.api.openstack import extensions
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import utils
 
 authorize = extensions.extension_authorizer('compute', 'fping')
diff --git a/nova/api/openstack/compute/contrib/hosts.py b/nova/api/openstack/compute/contrib/hosts.py
index 94720773b821..cb2303799aae 100644
--- a/nova/api/openstack/compute/contrib/hosts.py
+++ b/nova/api/openstack/compute/contrib/hosts.py
@@ -22,7 +22,7 @@ from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/contrib/hypervisors.py b/nova/api/openstack/compute/contrib/hypervisors.py
index 33d3ad0d06b5..22b51fce740e 100644
--- a/nova/api/openstack/compute/contrib/hypervisors.py
+++ b/nova/api/openstack/compute/contrib/hypervisors.py
@@ -22,7 +22,7 @@ from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 authorize = extensions.extension_authorizer('compute', 'hypervisors')
diff --git a/nova/api/openstack/compute/contrib/instance_usage_audit_log.py b/nova/api/openstack/compute/contrib/instance_usage_audit_log.py
index d39318a0cd38..90805469dcfe 100644
--- a/nova/api/openstack/compute/contrib/instance_usage_audit_log.py
+++ b/nova/api/openstack/compute/contrib/instance_usage_audit_log.py
@@ -21,7 +21,7 @@ import webob.exc
 
 from nova.api.openstack import extensions
 from nova import compute
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import utils
 
 CONF = cfg.CONF
diff --git a/nova/api/openstack/compute/contrib/keypairs.py b/nova/api/openstack/compute/contrib/keypairs.py
index 1c5867572527..cd023e8eaef3 100644
--- a/nova/api/openstack/compute/contrib/keypairs.py
+++ b/nova/api/openstack/compute/contrib/keypairs.py
@@ -24,7 +24,7 @@ from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova.compute import api as compute_api
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 authorize = extensions.extension_authorizer('compute', 'keypairs')
diff --git a/nova/api/openstack/compute/contrib/multinic.py b/nova/api/openstack/compute/contrib/multinic.py
index 6887c2ef8ed1..5bba1d86b709 100644
--- a/nova/api/openstack/compute/contrib/multinic.py
+++ b/nova/api/openstack/compute/contrib/multinic.py
@@ -22,7 +22,7 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 
diff --git a/nova/api/openstack/compute/contrib/networks_associate.py b/nova/api/openstack/compute/contrib/networks_associate.py
index f8005f1f24c7..50edcffe9bb4 100644
--- a/nova/api/openstack/compute/contrib/networks_associate.py
+++ b/nova/api/openstack/compute/contrib/networks_associate.py
@@ -15,8 +15,8 @@ from webob import exc
 from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import exception
+from nova.i18n import _
 from nova import network
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/contrib/os_networks.py b/nova/api/openstack/compute/contrib/os_networks.py
index fbc6b3aa83b0..12e396c2a34c 100644
--- a/nova/api/openstack/compute/contrib/os_networks.py
+++ b/nova/api/openstack/compute/contrib/os_networks.py
@@ -21,8 +21,8 @@ from webob import exc
 from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import exception
+from nova.i18n import _
 from nova import network
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/contrib/os_tenant_networks.py b/nova/api/openstack/compute/contrib/os_tenant_networks.py
index 90ad2ba52981..b7ecf4957fe4 100644
--- a/nova/api/openstack/compute/contrib/os_tenant_networks.py
+++ b/nova/api/openstack/compute/contrib/os_tenant_networks.py
@@ -22,8 +22,8 @@ from webob import exc
 from nova.api.openstack import extensions
 from nova import context as nova_context
 from nova import exception
+from nova.i18n import _
 import nova.network
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova import quota
 
diff --git a/nova/api/openstack/compute/contrib/quota_classes.py b/nova/api/openstack/compute/contrib/quota_classes.py
index 755bdefc9c16..bb034a0b4d22 100644
--- a/nova/api/openstack/compute/contrib/quota_classes.py
+++ b/nova/api/openstack/compute/contrib/quota_classes.py
@@ -21,7 +21,7 @@ from nova.api.openstack import xmlutil
 import nova.context
 from nova import db
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import quota
 from nova import utils
 
diff --git a/nova/api/openstack/compute/contrib/quotas.py b/nova/api/openstack/compute/contrib/quotas.py
index 46bd3539240c..c8ba23b0e3df 100644
--- a/nova/api/openstack/compute/contrib/quotas.py
+++ b/nova/api/openstack/compute/contrib/quotas.py
@@ -22,7 +22,7 @@ from nova.api.openstack import xmlutil
 import nova.context
 from nova import db
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 from nova import quota
diff --git a/nova/api/openstack/compute/contrib/rescue.py b/nova/api/openstack/compute/contrib/rescue.py
index b5f9755b2111..15338a2ffc33 100644
--- a/nova/api/openstack/compute/contrib/rescue.py
+++ b/nova/api/openstack/compute/contrib/rescue.py
@@ -23,7 +23,7 @@ from nova.api.openstack import extensions as exts
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import utils
 
 
diff --git a/nova/api/openstack/compute/contrib/scheduler_hints.py b/nova/api/openstack/compute/contrib/scheduler_hints.py
index 2b2c129961e2..c1d69413a41c 100644
--- a/nova/api/openstack/compute/contrib/scheduler_hints.py
+++ b/nova/api/openstack/compute/contrib/scheduler_hints.py
@@ -16,7 +16,7 @@ import webob.exc
 
 from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 class SchedulerHintsController(wsgi.Controller):
diff --git a/nova/api/openstack/compute/contrib/security_group_default_rules.py b/nova/api/openstack/compute/contrib/security_group_default_rules.py
index 6216cc3365f9..fa7336852752 100644
--- a/nova/api/openstack/compute/contrib/security_group_default_rules.py
+++ b/nova/api/openstack/compute/contrib/security_group_default_rules.py
@@ -20,8 +20,8 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import exception
+from nova.i18n import _
 from nova.network.security_group import openstack_driver
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import xmlutils
 
diff --git a/nova/api/openstack/compute/contrib/security_groups.py b/nova/api/openstack/compute/contrib/security_groups.py
index a9e4fe2c861e..93d060476469 100644
--- a/nova/api/openstack/compute/contrib/security_groups.py
+++ b/nova/api/openstack/compute/contrib/security_groups.py
@@ -29,9 +29,9 @@ from nova.api.openstack import xmlutil
 from nova import compute
 from nova.compute import api as compute_api
 from nova import exception
+from nova.i18n import _
 from nova.network.security_group import neutron_driver
 from nova.network.security_group import openstack_driver
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import xmlutils
 from nova.virt import netutils
diff --git a/nova/api/openstack/compute/contrib/server_external_events.py b/nova/api/openstack/compute/contrib/server_external_events.py
index 97dd23b532ae..34d12f703601 100644
--- a/nova/api/openstack/compute/contrib/server_external_events.py
+++ b/nova/api/openstack/compute/contrib/server_external_events.py
@@ -19,9 +19,9 @@ from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import compute
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.objects import external_event as external_event_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 
diff --git a/nova/api/openstack/compute/contrib/server_groups.py b/nova/api/openstack/compute/contrib/server_groups.py
index 0d10596ecd23..3a970f83a33e 100644
--- a/nova/api/openstack/compute/contrib/server_groups.py
+++ b/nova/api/openstack/compute/contrib/server_groups.py
@@ -23,8 +23,8 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 import nova.exception
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 from nova import utils
 
 # NOTE(russellb) There is one other policy, 'legacy', but we don't allow that
diff --git a/nova/api/openstack/compute/contrib/server_start_stop.py b/nova/api/openstack/compute/contrib/server_start_stop.py
index d08f239e7fb8..96c9f11c58ec 100644
--- a/nova/api/openstack/compute/contrib/server_start_stop.py
+++ b/nova/api/openstack/compute/contrib/server_start_stop.py
@@ -18,8 +18,8 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 
diff --git a/nova/api/openstack/compute/contrib/services.py b/nova/api/openstack/compute/contrib/services.py
index 0c1509ab47a6..6ec91e6b01f3 100644
--- a/nova/api/openstack/compute/contrib/services.py
+++ b/nova/api/openstack/compute/contrib/services.py
@@ -20,7 +20,7 @@ from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import servicegroup
 from nova import utils
 
diff --git a/nova/api/openstack/compute/contrib/shelve.py b/nova/api/openstack/compute/contrib/shelve.py
index 76d73e111d49..d5532ca9bdde 100644
--- a/nova/api/openstack/compute/contrib/shelve.py
+++ b/nova/api/openstack/compute/contrib/shelve.py
@@ -22,7 +22,7 @@ from nova.api.openstack import extensions as exts
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 auth_shelve = exts.extension_authorizer('compute', 'shelve')
diff --git a/nova/api/openstack/compute/contrib/simple_tenant_usage.py b/nova/api/openstack/compute/contrib/simple_tenant_usage.py
index 6b9c25cf9bbd..361df17493c6 100644
--- a/nova/api/openstack/compute/contrib/simple_tenant_usage.py
+++ b/nova/api/openstack/compute/contrib/simple_tenant_usage.py
@@ -23,9 +23,9 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.objects import instance as instance_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import timeutils
 
 authorize_show = extensions.extension_authorizer('compute',
diff --git a/nova/api/openstack/compute/contrib/volumes.py b/nova/api/openstack/compute/contrib/volumes.py
index 8a613c8bcc7d..b2fa26f5e080 100644
--- a/nova/api/openstack/compute/contrib/volumes.py
+++ b/nova/api/openstack/compute/contrib/volumes.py
@@ -24,8 +24,8 @@ from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import compute
 from nova import exception
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 from nova.openstack.common import uuidutils
diff --git a/nova/api/openstack/compute/extensions.py b/nova/api/openstack/compute/extensions.py
index af3e4af7579f..24ea65234fe5 100644
--- a/nova/api/openstack/compute/extensions.py
+++ b/nova/api/openstack/compute/extensions.py
@@ -16,7 +16,7 @@
 from oslo.config import cfg
 
 from nova.api.openstack import extensions as base_extensions
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 ext_opts = [
diff --git a/nova/api/openstack/compute/flavors.py b/nova/api/openstack/compute/flavors.py
index 2aa8a32d24e2..3871131beb8d 100644
--- a/nova/api/openstack/compute/flavors.py
+++ b/nova/api/openstack/compute/flavors.py
@@ -20,7 +20,7 @@ from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova.compute import flavors
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import strutils
 from nova import utils
 
diff --git a/nova/api/openstack/compute/image_metadata.py b/nova/api/openstack/compute/image_metadata.py
index 4f871762d052..a77e37266eea 100644
--- a/nova/api/openstack/compute/image_metadata.py
+++ b/nova/api/openstack/compute/image_metadata.py
@@ -18,8 +18,8 @@ from webob import exc
 from nova.api.openstack import common
 from nova.api.openstack import wsgi
 from nova import exception
+from nova.i18n import _
 from nova.image import glance
-from nova.openstack.common.gettextutils import _
 
 
 class Controller(object):
diff --git a/nova/api/openstack/compute/images.py b/nova/api/openstack/compute/images.py
index 13a3c0deba54..216e0858f7ca 100644
--- a/nova/api/openstack/compute/images.py
+++ b/nova/api/openstack/compute/images.py
@@ -20,8 +20,8 @@ from nova.api.openstack.compute.views import images as views_images
 from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import exception
+from nova.i18n import _
 import nova.image.glance
-from nova.openstack.common.gettextutils import _
 import nova.utils
 
 
diff --git a/nova/api/openstack/compute/ips.py b/nova/api/openstack/compute/ips.py
index 3117b6b49862..a537f21dcbd5 100644
--- a/nova/api/openstack/compute/ips.py
+++ b/nova/api/openstack/compute/ips.py
@@ -20,7 +20,7 @@ from nova.api.openstack import common
 from nova.api.openstack.compute.views import addresses as view_addresses
 from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 def make_network(elem):
diff --git a/nova/api/openstack/compute/limits.py b/nova/api/openstack/compute/limits.py
index 90194088ac90..655934723bee 100644
--- a/nova/api/openstack/compute/limits.py
+++ b/nova/api/openstack/compute/limits.py
@@ -44,7 +44,7 @@ import webob.exc
 from nova.api.openstack.compute.views import limits as limits_views
 from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import importutils
 from nova.openstack.common import jsonutils
 from nova import quota
diff --git a/nova/api/openstack/compute/plugins/__init__.py b/nova/api/openstack/compute/plugins/__init__.py
index c9f8605e2b4e..73857e25410f 100644
--- a/nova/api/openstack/compute/plugins/__init__.py
+++ b/nova/api/openstack/compute/plugins/__init__.py
@@ -14,7 +14,7 @@
 
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/plugins/v3/access_ips.py b/nova/api/openstack/compute/plugins/v3/access_ips.py
index 3804c031c233..d7378d3a2a1f 100644
--- a/nova/api/openstack/compute/plugins/v3/access_ips.py
+++ b/nova/api/openstack/compute/plugins/v3/access_ips.py
@@ -16,7 +16,7 @@ from webob import exc
 
 from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova import utils
 
diff --git a/nova/api/openstack/compute/plugins/v3/admin_actions.py b/nova/api/openstack/compute/plugins/v3/admin_actions.py
index 326d9e7642db..0ebb82f32eef 100644
--- a/nova/api/openstack/compute/plugins/v3/admin_actions.py
+++ b/nova/api/openstack/compute/plugins/v3/admin_actions.py
@@ -21,7 +21,7 @@ from nova.api.openstack import wsgi
 from nova import compute
 from nova.compute import vm_states
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/plugins/v3/admin_password.py b/nova/api/openstack/compute/plugins/v3/admin_password.py
index 9265811bb28c..7bf0f865298b 100644
--- a/nova/api/openstack/compute/plugins/v3/admin_password.py
+++ b/nova/api/openstack/compute/plugins/v3/admin_password.py
@@ -21,7 +21,7 @@ from nova.api.openstack import wsgi
 from nova.api import validation
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 ALIAS = "os-admin-password"
diff --git a/nova/api/openstack/compute/plugins/v3/aggregates.py b/nova/api/openstack/compute/plugins/v3/aggregates.py
index dde3abc92bbc..61474c4d017f 100644
--- a/nova/api/openstack/compute/plugins/v3/aggregates.py
+++ b/nova/api/openstack/compute/plugins/v3/aggregates.py
@@ -25,7 +25,7 @@ from nova.api.openstack import wsgi
 from nova.api import validation
 from nova.compute import api as compute_api
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova import utils
 
diff --git a/nova/api/openstack/compute/plugins/v3/attach_interfaces.py b/nova/api/openstack/compute/plugins/v3/attach_interfaces.py
index 477f432be938..ed805dc5740a 100644
--- a/nova/api/openstack/compute/plugins/v3/attach_interfaces.py
+++ b/nova/api/openstack/compute/plugins/v3/attach_interfaces.py
@@ -24,8 +24,8 @@ from nova.api.openstack import extensions
 from nova.api import validation
 from nova import compute
 from nova import exception
+from nova.i18n import _
 from nova import network
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 
diff --git a/nova/api/openstack/compute/plugins/v3/cells.py b/nova/api/openstack/compute/plugins/v3/cells.py
index 31c3ffb13316..2c7c9eae6fc4 100644
--- a/nova/api/openstack/compute/plugins/v3/cells.py
+++ b/nova/api/openstack/compute/plugins/v3/cells.py
@@ -27,7 +27,7 @@ from nova.api.openstack import wsgi
 from nova.cells import rpcapi as cells_rpcapi
 from nova.compute import api as compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 from nova.openstack.common import timeutils
diff --git a/nova/api/openstack/compute/plugins/v3/certificates.py b/nova/api/openstack/compute/plugins/v3/certificates.py
index 780cb4914ed0..6ab3d43231cd 100644
--- a/nova/api/openstack/compute/plugins/v3/certificates.py
+++ b/nova/api/openstack/compute/plugins/v3/certificates.py
@@ -18,8 +18,8 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 import nova.cert.rpcapi
 from nova import exception
+from nova.i18n import _
 from nova import network
-from nova.openstack.common.gettextutils import _
 
 ALIAS = "os-certificates"
 authorize = extensions.extension_authorizer('compute', 'v3:' + ALIAS)
diff --git a/nova/api/openstack/compute/plugins/v3/console_auth_tokens.py b/nova/api/openstack/compute/plugins/v3/console_auth_tokens.py
index c1e048221832..3d6f47740db3 100644
--- a/nova/api/openstack/compute/plugins/v3/console_auth_tokens.py
+++ b/nova/api/openstack/compute/plugins/v3/console_auth_tokens.py
@@ -18,7 +18,7 @@ import webob
 from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.consoleauth import rpcapi as consoleauth_rpcapi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 ALIAS = "os-console-auth-tokens"
 authorize = extensions.extension_authorizer('compute', 'v3:' + ALIAS)
diff --git a/nova/api/openstack/compute/plugins/v3/console_output.py b/nova/api/openstack/compute/plugins/v3/console_output.py
index 37cef3fd46aa..7921298bf829 100644
--- a/nova/api/openstack/compute/plugins/v3/console_output.py
+++ b/nova/api/openstack/compute/plugins/v3/console_output.py
@@ -23,7 +23,7 @@ from nova.api.openstack import wsgi
 from nova.api import validation
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 ALIAS = "os-console-output"
 authorize = extensions.extension_authorizer('compute', "v3:" + ALIAS)
diff --git a/nova/api/openstack/compute/plugins/v3/evacuate.py b/nova/api/openstack/compute/plugins/v3/evacuate.py
index dc0f39e6adf7..de04f24a2cb0 100644
--- a/nova/api/openstack/compute/plugins/v3/evacuate.py
+++ b/nova/api/openstack/compute/plugins/v3/evacuate.py
@@ -23,7 +23,7 @@ from nova.api.openstack import wsgi
 from nova.api import validation
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 from nova import utils
diff --git a/nova/api/openstack/compute/plugins/v3/extended_volumes.py b/nova/api/openstack/compute/plugins/v3/extended_volumes.py
index 6d5eb48630cf..1a4714f3fd87 100644
--- a/nova/api/openstack/compute/plugins/v3/extended_volumes.py
+++ b/nova/api/openstack/compute/plugins/v3/extended_volumes.py
@@ -23,8 +23,8 @@ from nova.api.openstack import wsgi
 from nova.api import validation
 from nova import compute
 from nova import exception
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova import volume
 
diff --git a/nova/api/openstack/compute/plugins/v3/flavor_access.py b/nova/api/openstack/compute/plugins/v3/flavor_access.py
index 762f24f52e1f..7c6e1ccb1eca 100644
--- a/nova/api/openstack/compute/plugins/v3/flavor_access.py
+++ b/nova/api/openstack/compute/plugins/v3/flavor_access.py
@@ -22,8 +22,8 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.api import validation
 from nova import exception
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 
 ALIAS = 'flavor-access'
 soft_authorize = extensions.soft_extension_authorizer('compute',
diff --git a/nova/api/openstack/compute/plugins/v3/flavors.py b/nova/api/openstack/compute/plugins/v3/flavors.py
index d29156b03b93..7e84219b3efb 100644
--- a/nova/api/openstack/compute/plugins/v3/flavors.py
+++ b/nova/api/openstack/compute/plugins/v3/flavors.py
@@ -20,7 +20,7 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.compute import flavors
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import strutils
 from nova import utils
 
diff --git a/nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py b/nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py
index 6c4fd157e6bd..90b3070a6ed8 100644
--- a/nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py
+++ b/nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py
@@ -19,8 +19,8 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova.compute import flavors
 from nova import exception
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 
 
 class FlavorExtraSpecsController(object):
diff --git a/nova/api/openstack/compute/plugins/v3/hosts.py b/nova/api/openstack/compute/plugins/v3/hosts.py
index 5087b0171e73..324f50f119b8 100644
--- a/nova/api/openstack/compute/plugins/v3/hosts.py
+++ b/nova/api/openstack/compute/plugins/v3/hosts.py
@@ -21,7 +21,7 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/plugins/v3/hypervisors.py b/nova/api/openstack/compute/plugins/v3/hypervisors.py
index 644d73a6be5f..80d0250bc2ee 100644
--- a/nova/api/openstack/compute/plugins/v3/hypervisors.py
+++ b/nova/api/openstack/compute/plugins/v3/hypervisors.py
@@ -20,7 +20,7 @@ import webob.exc
 from nova.api.openstack import extensions
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 ALIAS = "os-hypervisors"
diff --git a/nova/api/openstack/compute/plugins/v3/ips.py b/nova/api/openstack/compute/plugins/v3/ips.py
index ded2524fbc5f..fe5915b30ca6 100644
--- a/nova/api/openstack/compute/plugins/v3/ips.py
+++ b/nova/api/openstack/compute/plugins/v3/ips.py
@@ -20,7 +20,7 @@ from nova.api.openstack import common
 from nova.api.openstack.compute.views import addresses as views_addresses
 from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 class IPsController(wsgi.Controller):
diff --git a/nova/api/openstack/compute/plugins/v3/keypairs.py b/nova/api/openstack/compute/plugins/v3/keypairs.py
index 503a1a51263d..1abbeacfe783 100644
--- a/nova/api/openstack/compute/plugins/v3/keypairs.py
+++ b/nova/api/openstack/compute/plugins/v3/keypairs.py
@@ -24,7 +24,7 @@ from nova.api.openstack import wsgi
 from nova.api import validation
 from nova.compute import api as compute_api
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 ALIAS = 'keypairs'
diff --git a/nova/api/openstack/compute/plugins/v3/multiple_create.py b/nova/api/openstack/compute/plugins/v3/multiple_create.py
index 684ec07e0cf8..5f60f702feb1 100644
--- a/nova/api/openstack/compute/plugins/v3/multiple_create.py
+++ b/nova/api/openstack/compute/plugins/v3/multiple_create.py
@@ -17,7 +17,7 @@ from webob import exc
 
 from nova.api.openstack import extensions
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import strutils
 from nova import utils
 
diff --git a/nova/api/openstack/compute/plugins/v3/pause_server.py b/nova/api/openstack/compute/plugins/v3/pause_server.py
index 25b758b98643..dbbead7c0709 100644
--- a/nova/api/openstack/compute/plugins/v3/pause_server.py
+++ b/nova/api/openstack/compute/plugins/v3/pause_server.py
@@ -21,7 +21,7 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/plugins/v3/quota_sets.py b/nova/api/openstack/compute/plugins/v3/quota_sets.py
index 8dd99b690522..8b9bf46d282d 100644
--- a/nova/api/openstack/compute/plugins/v3/quota_sets.py
+++ b/nova/api/openstack/compute/plugins/v3/quota_sets.py
@@ -23,7 +23,7 @@ from nova.api import validation
 import nova.context
 from nova import db
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 from nova import quota
diff --git a/nova/api/openstack/compute/plugins/v3/remote_consoles.py b/nova/api/openstack/compute/plugins/v3/remote_consoles.py
index 7d8310f38c70..0f1277c9577c 100644
--- a/nova/api/openstack/compute/plugins/v3/remote_consoles.py
+++ b/nova/api/openstack/compute/plugins/v3/remote_consoles.py
@@ -21,7 +21,7 @@ from nova.api.openstack import wsgi
 from nova.api import validation
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 ALIAS = "os-remote-consoles"
diff --git a/nova/api/openstack/compute/plugins/v3/rescue.py b/nova/api/openstack/compute/plugins/v3/rescue.py
index ea8fa75bdc2c..138c21116cac 100644
--- a/nova/api/openstack/compute/plugins/v3/rescue.py
+++ b/nova/api/openstack/compute/plugins/v3/rescue.py
@@ -25,7 +25,7 @@ from nova.api.openstack import wsgi
 from nova.api import validation
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import utils
 
 
diff --git a/nova/api/openstack/compute/plugins/v3/scheduler_hints.py b/nova/api/openstack/compute/plugins/v3/scheduler_hints.py
index c2fed29ab924..35972fdf40a4 100644
--- a/nova/api/openstack/compute/plugins/v3/scheduler_hints.py
+++ b/nova/api/openstack/compute/plugins/v3/scheduler_hints.py
@@ -15,7 +15,7 @@
 import webob.exc
 
 from nova.api.openstack import extensions
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 ALIAS = "os-scheduler-hints"
 
diff --git a/nova/api/openstack/compute/plugins/v3/server_actions.py b/nova/api/openstack/compute/plugins/v3/server_actions.py
index edfed81f6cd9..876972f0669b 100644
--- a/nova/api/openstack/compute/plugins/v3/server_actions.py
+++ b/nova/api/openstack/compute/plugins/v3/server_actions.py
@@ -19,7 +19,7 @@ from nova.api.openstack import common
 from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import compute
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 ALIAS = "os-server-actions"
 authorize_actions = extensions.extension_authorizer('compute',
diff --git a/nova/api/openstack/compute/plugins/v3/server_external_events.py b/nova/api/openstack/compute/plugins/v3/server_external_events.py
index b3f848d14599..bc59733c048c 100644
--- a/nova/api/openstack/compute/plugins/v3/server_external_events.py
+++ b/nova/api/openstack/compute/plugins/v3/server_external_events.py
@@ -18,9 +18,9 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.objects import external_event as external_event_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 
diff --git a/nova/api/openstack/compute/plugins/v3/server_metadata.py b/nova/api/openstack/compute/plugins/v3/server_metadata.py
index 79978583368f..035a57472bad 100644
--- a/nova/api/openstack/compute/plugins/v3/server_metadata.py
+++ b/nova/api/openstack/compute/plugins/v3/server_metadata.py
@@ -20,7 +20,7 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 class ServerMetadataController(wsgi.Controller):
diff --git a/nova/api/openstack/compute/plugins/v3/servers.py b/nova/api/openstack/compute/plugins/v3/servers.py
index 60ab3b8ad87b..505d651b8bfb 100644
--- a/nova/api/openstack/compute/plugins/v3/servers.py
+++ b/nova/api/openstack/compute/plugins/v3/servers.py
@@ -31,9 +31,9 @@ from nova.api.openstack import wsgi
 from nova import compute
 from nova.compute import flavors
 from nova import exception
+from nova.i18n import _
 from nova.image import glance
 from nova import objects
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 from nova.openstack.common import timeutils
diff --git a/nova/api/openstack/compute/plugins/v3/services.py b/nova/api/openstack/compute/plugins/v3/services.py
index 6ef0507ff680..f07966de1d45 100644
--- a/nova/api/openstack/compute/plugins/v3/services.py
+++ b/nova/api/openstack/compute/plugins/v3/services.py
@@ -19,7 +19,7 @@ from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import servicegroup
 from nova import utils
 
diff --git a/nova/api/openstack/compute/server_metadata.py b/nova/api/openstack/compute/server_metadata.py
index 7e11d1184ced..a0340bcb6085 100644
--- a/nova/api/openstack/compute/server_metadata.py
+++ b/nova/api/openstack/compute/server_metadata.py
@@ -19,7 +19,7 @@ from nova.api.openstack import common
 from nova.api.openstack import wsgi
 from nova import compute
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 class Controller(object):
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py
index ab4f262ba34e..5bc97e355cff 100644
--- a/nova/api/openstack/compute/servers.py
+++ b/nova/api/openstack/compute/servers.py
@@ -33,9 +33,9 @@ from nova import block_device
 from nova import compute
 from nova.compute import flavors
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.objects import instance as instance_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 from nova.openstack.common import timeutils
diff --git a/nova/api/openstack/compute/views/servers.py b/nova/api/openstack/compute/views/servers.py
index f09d4272e224..f168aac4e533 100644
--- a/nova/api/openstack/compute/views/servers.py
+++ b/nova/api/openstack/compute/views/servers.py
@@ -21,8 +21,8 @@ from nova.api.openstack.compute.views import addresses as views_addresses
 from nova.api.openstack.compute.views import flavors as views_flavors
 from nova.api.openstack.compute.views import images as views_images
 from nova.compute import flavors
+from nova.i18n import _
 from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
 from nova import utils
diff --git a/nova/api/openstack/extensions.py b/nova/api/openstack/extensions.py
index 5ea32160b626..65099be0a055 100644
--- a/nova/api/openstack/extensions.py
+++ b/nova/api/openstack/extensions.py
@@ -26,7 +26,7 @@ import nova.api.openstack
 from nova.api.openstack import wsgi
 from nova.api.openstack import xmlutil
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 import nova.policy
diff --git a/nova/api/openstack/wsgi.py b/nova/api/openstack/wsgi.py
index d8458af2f5f5..531213e15819 100644
--- a/nova/api/openstack/wsgi.py
+++ b/nova/api/openstack/wsgi.py
@@ -25,8 +25,8 @@ import webob
 
 from nova.api.openstack import xmlutil
 from nova import exception
-from nova.openstack.common import gettextutils
-from nova.openstack.common.gettextutils import _
+from nova import i18n
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova import utils
@@ -193,7 +193,7 @@ class Request(webob.Request):
         if not self.accept_language:
             return None
         return self.accept_language.best_match(
-                gettextutils.get_available_languages('nova'))
+                i18n.get_available_languages())
 
 
 class ActionDispatcher(object):
@@ -1197,8 +1197,7 @@ class Fault(webob.exc.HTTPException):
         LOG.debug("Returning %(code)s to user: %(explanation)s",
                   {'code': code, 'explanation': explanation})
 
-        explanation = gettextutils.translate(explanation,
-                                                         user_locale)
+        explanation = i18n.translate(explanation, user_locale)
         fault_data = {
             fault_name: {
                 'code': code,
@@ -1261,13 +1260,9 @@ class RateLimitFault(webob.exc.HTTPException):
         metadata = {"attributes": {"overLimit": ["code", "retryAfter"]}}
 
         self.content['overLimit']['message'] = \
-                gettextutils.translate(
-                        self.content['overLimit']['message'],
-                        user_locale)
+            i18n.translate(self.content['overLimit']['message'], user_locale)
         self.content['overLimit']['details'] = \
-                gettextutils.translate(
-                        self.content['overLimit']['details'],
-                        user_locale)
+            i18n.translate(self.content['overLimit']['details'], user_locale)
 
         xml_serializer = XMLDictSerializer(metadata, XMLNS_V11)
         serializer = {
diff --git a/nova/api/openstack/xmlutil.py b/nova/api/openstack/xmlutil.py
index 68e50f82ea07..b401d8352593 100644
--- a/nova/api/openstack/xmlutil.py
+++ b/nova/api/openstack/xmlutil.py
@@ -23,7 +23,7 @@ from lxml import etree
 import six
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import utils
 
 
diff --git a/nova/api/sizelimit.py b/nova/api/sizelimit.py
index 0248cbacb04f..1fab96b3df53 100644
--- a/nova/api/sizelimit.py
+++ b/nova/api/sizelimit.py
@@ -20,7 +20,7 @@ from oslo.config import cfg
 import webob.dec
 import webob.exc
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import wsgi
 
 
diff --git a/nova/api/validation/validators.py b/nova/api/validation/validators.py
index 3e5e82accba2..8cec2de09424 100644
--- a/nova/api/validation/validators.py
+++ b/nova/api/validation/validators.py
@@ -19,7 +19,7 @@ Internal implementation of request Body validating middleware.
 import jsonschema
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import uuidutils
 
 
diff --git a/nova/block_device.py b/nova/block_device.py
index 34453ec6dee4..b0e048d6c5fc 100644
--- a/nova/block_device.py
+++ b/nova/block_device.py
@@ -18,7 +18,7 @@ import re
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 from nova import utils
diff --git a/nova/cells/filters/target_cell.py b/nova/cells/filters/target_cell.py
index de2ef6d18e1a..43c81e71e5eb 100644
--- a/nova/cells/filters/target_cell.py
+++ b/nova/cells/filters/target_cell.py
@@ -22,7 +22,7 @@ done as there's no way to know whether the full path is a valid.
 """
 
 from nova.cells import filters
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/cells/manager.py b/nova/cells/manager.py
index f40bc58ea3b7..5bad71fa8d74 100644
--- a/nova/cells/manager.py
+++ b/nova/cells/manager.py
@@ -27,10 +27,10 @@ from nova.cells import state as cells_state
 from nova.cells import utils as cells_utils
 from nova import context
 from nova import exception
+from nova.i18n import _
 from nova import manager
 from nova import objects
 from nova.objects import base as base_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import periodic_task
diff --git a/nova/cells/messaging.py b/nova/cells/messaging.py
index b593ae01a833..55fbfd75f16a 100644
--- a/nova/cells/messaging.py
+++ b/nova/cells/messaging.py
@@ -44,12 +44,12 @@ from nova.consoleauth import rpcapi as consoleauth_rpcapi
 from nova import context
 from nova.db import base
 from nova import exception
+from nova.i18n import _
 from nova.network import model as network_model
 from nova import objects
 from nova.objects import base as objects_base
 from nova.objects import instance_fault as instance_fault_obj
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
diff --git a/nova/cells/rpcapi.py b/nova/cells/rpcapi.py
index 4a82de2795d3..87cf8f3c466c 100644
--- a/nova/cells/rpcapi.py
+++ b/nova/cells/rpcapi.py
@@ -27,8 +27,8 @@ from oslo.config import cfg
 from oslo import messaging
 
 from nova import exception
+from nova.i18n import _
 from nova.objects import base as objects_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova import rpc
diff --git a/nova/cells/scheduler.py b/nova/cells/scheduler.py
index bc9144511e53..d9552f43248f 100644
--- a/nova/cells/scheduler.py
+++ b/nova/cells/scheduler.py
@@ -30,10 +30,10 @@ from nova.compute import vm_states
 from nova import conductor
 from nova.db import base
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.objects import base as obj_base
 from nova.objects import instance_action as instance_action_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.scheduler import utils as scheduler_utils
 from nova import utils
diff --git a/nova/cells/state.py b/nova/cells/state.py
index c63df3f955bc..27261a2c98e6 100644
--- a/nova/cells/state.py
+++ b/nova/cells/state.py
@@ -26,8 +26,8 @@ from nova.cells import rpc_driver
 from nova import context
 from nova.db import base
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
diff --git a/nova/cells/weights/mute_child.py b/nova/cells/weights/mute_child.py
index ff42d2673f20..cc5c0a8c44c8 100644
--- a/nova/cells/weights/mute_child.py
+++ b/nova/cells/weights/mute_child.py
@@ -21,7 +21,7 @@ downgrade its likelihood of being chosen for scheduling requests.
 from oslo.config import cfg
 
 from nova.cells import weights
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
 
diff --git a/nova/cloudpipe/pipelib.py b/nova/cloudpipe/pipelib.py
index 8ac164cbb311..8962924b6966 100644
--- a/nova/cloudpipe/pipelib.py
+++ b/nova/cloudpipe/pipelib.py
@@ -31,8 +31,8 @@ from nova.compute import flavors
 from nova import crypto
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova import paths
 from nova import utils
diff --git a/nova/cmd/all.py b/nova/cmd/all.py
index 75946cd29cac..7d7c9d43b156 100644
--- a/nova/cmd/all.py
+++ b/nova/cmd/all.py
@@ -29,9 +29,9 @@ import sys
 from oslo.config import cfg
 
 from nova import config
+from nova.i18n import _
 from nova import objects
 from nova.objectstore import s3server
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova import service
 from nova import utils
diff --git a/nova/cmd/baremetal_deploy_helper.py b/nova/cmd/baremetal_deploy_helper.py
index fd997ce8e1d4..348561af9997 100644
--- a/nova/cmd/baremetal_deploy_helper.py
+++ b/nova/cmd/baremetal_deploy_helper.py
@@ -29,9 +29,9 @@ from wsgiref import simple_server
 
 from nova import config
 from nova import context as nova_context
+from nova.i18n import _
 from nova import objects
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
 from nova.openstack.common import units
diff --git a/nova/cmd/baremetal_manage.py b/nova/cmd/baremetal_manage.py
index b62f744b5643..e8283221ecf8 100644
--- a/nova/cmd/baremetal_manage.py
+++ b/nova/cmd/baremetal_manage.py
@@ -58,9 +58,9 @@ from oslo.config import cfg
 import six
 
 from nova import config
+from nova.i18n import _
 from nova import objects
 from nova.openstack.common import cliutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova import version
 from nova.virt.baremetal.db import migration as bmdb_migration
diff --git a/nova/cmd/compute.py b/nova/cmd/compute.py
index 52f3c93ab912..bad4cf76d701 100644
--- a/nova/cmd/compute.py
+++ b/nova/cmd/compute.py
@@ -25,9 +25,9 @@ from nova.conductor import rpcapi as conductor_rpcapi
 from nova import config
 import nova.db.api
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.objects import base as objects_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common.report import guru_meditation_report as gmr
 from nova import service
diff --git a/nova/cmd/dhcpbridge.py b/nova/cmd/dhcpbridge.py
index 104502006507..2abb6a8ffd52 100644
--- a/nova/cmd/dhcpbridge.py
+++ b/nova/cmd/dhcpbridge.py
@@ -31,11 +31,11 @@ from nova import config
 from nova import context
 import nova.db.api
 from nova import exception
+from nova.i18n import _
 from nova.network import rpcapi as network_rpcapi
 from nova import objects
 from nova.objects import base as objects_base
 from nova.objects import network as network_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
diff --git a/nova/cmd/manage.py b/nova/cmd/manage.py
index 5f75cb02237a..6cd599f3b083 100644
--- a/nova/cmd/manage.py
+++ b/nova/cmd/manage.py
@@ -72,10 +72,10 @@ from nova import context
 from nova import db
 from nova.db import migration
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.openstack.common import cliutils
 from nova.openstack.common.db import exception as db_exc
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova import quota
diff --git a/nova/cmd/network.py b/nova/cmd/network.py
index 73d5c89bf22d..490097aa7122 100644
--- a/nova/cmd/network.py
+++ b/nova/cmd/network.py
@@ -25,9 +25,9 @@ from nova.conductor import rpcapi as conductor_rpcapi
 from nova import config
 import nova.db.api
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.objects import base as objects_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common.report import guru_meditation_report as gmr
 from nova import service
diff --git a/nova/compute/api.py b/nova/compute/api.py
index 612e1c1da262..0f2e195bdf5f 100644
--- a/nova/compute/api.py
+++ b/nova/compute/api.py
@@ -43,6 +43,7 @@ from nova import crypto
 from nova.db import base
 from nova import exception
 from nova import hooks
+from nova.i18n import _
 from nova import image
 from nova import network
 from nova.network import model as network_model
@@ -54,7 +55,6 @@ from nova.objects import base as obj_base
 from nova.objects import quotas as quotas_obj
 from nova.objects import security_group as security_group_obj
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 from nova.openstack.common import timeutils
diff --git a/nova/compute/claims.py b/nova/compute/claims.py
index 27d8c0bc7b23..046d17169236 100644
--- a/nova/compute/claims.py
+++ b/nova/compute/claims.py
@@ -18,8 +18,8 @@ Claim objects for use with resource tracking.
 """
 
 from nova import exception
+from nova.i18n import _
 from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.pci import pci_request
diff --git a/nova/compute/flavors.py b/nova/compute/flavors.py
index e39194315875..1a8760d408ae 100644
--- a/nova/compute/flavors.py
+++ b/nova/compute/flavors.py
@@ -27,8 +27,8 @@ import six
 from nova import context
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common.db import exception as db_exc
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 from nova.pci import pci_request
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index f71f7e4c84dc..c9e94ef345f1 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -57,6 +57,10 @@ from nova import consoleauth
 import nova.context
 from nova import exception
 from nova import hooks
+from nova.i18n import _
+from nova.i18n import _LE
+from nova.i18n import _LI
+from nova.i18n import _LW
 from nova import image
 from nova.image import glance
 from nova import manager
@@ -68,10 +72,6 @@ from nova.objects import base as obj_base
 from nova.objects import instance as instance_obj
 from nova.objects import quotas as quotas_obj
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
-from nova.openstack.common.gettextutils import _LI
-from nova.openstack.common.gettextutils import _LW
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import periodic_task
diff --git a/nova/compute/monitors/__init__.py b/nova/compute/monitors/__init__.py
index 511738599f3f..fab30ada1342 100644
--- a/nova/compute/monitors/__init__.py
+++ b/nova/compute/monitors/__init__.py
@@ -26,8 +26,8 @@ import types
 from oslo.config import cfg
 import six
 
+from nova.i18n import _
 from nova import loadables
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
 
diff --git a/nova/compute/monitors/virt/cpu_monitor.py b/nova/compute/monitors/virt/cpu_monitor.py
index 1cc92db37035..9295120769f8 100644
--- a/nova/compute/monitors/virt/cpu_monitor.py
+++ b/nova/compute/monitors/virt/cpu_monitor.py
@@ -22,7 +22,7 @@ from oslo.config import cfg
 from nova.compute import monitors
 from nova.compute.monitors import cpu_monitor as monitor
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
 
diff --git a/nova/compute/resource_tracker.py b/nova/compute/resource_tracker.py
index aaf0eb389081..86949dd076c6 100644
--- a/nova/compute/resource_tracker.py
+++ b/nova/compute/resource_tracker.py
@@ -29,9 +29,9 @@ from nova.compute import vm_states
 from nova import conductor
 from nova import context
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
diff --git a/nova/compute/rpcapi.py b/nova/compute/rpcapi.py
index 7dc4543c5088..5de33f072948 100644
--- a/nova/compute/rpcapi.py
+++ b/nova/compute/rpcapi.py
@@ -21,8 +21,8 @@ from oslo import messaging
 
 from nova import block_device
 from nova import exception
+from nova.i18n import _
 from nova.objects import base as objects_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import jsonutils
 from nova import rpc
 
diff --git a/nova/compute/utils.py b/nova/compute/utils.py
index a0161029f0da..8836f5039d57 100644
--- a/nova/compute/utils.py
+++ b/nova/compute/utils.py
@@ -25,11 +25,11 @@ from nova.compute import flavors
 from nova.compute import power_state
 from nova.compute import task_states
 from nova import exception
+from nova.i18n import _
 from nova.network import model as network_model
 from nova import notifications
 from nova import objects
 from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log
 from nova import rpc
 from nova import utils
diff --git a/nova/conductor/api.py b/nova/conductor/api.py
index 576364c198a5..b19be6d67a7e 100644
--- a/nova/conductor/api.py
+++ b/nova/conductor/api.py
@@ -20,7 +20,7 @@ from oslo import messaging
 from nova import baserpc
 from nova.conductor import manager
 from nova.conductor import rpcapi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova import utils
 
diff --git a/nova/conductor/manager.py b/nova/conductor/manager.py
index 99aefc6b2c13..2166d3daa842 100644
--- a/nova/conductor/manager.py
+++ b/nova/conductor/manager.py
@@ -31,6 +31,7 @@ from nova.compute import vm_states
 from nova.conductor.tasks import live_migrate
 from nova.db import base
 from nova import exception
+from nova.i18n import _
 from nova import image
 from nova import manager
 from nova import network
@@ -40,7 +41,6 @@ from nova import objects
 from nova.objects import base as nova_object
 from nova.objects import quotas as quotas_obj
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
diff --git a/nova/conductor/tasks/live_migrate.py b/nova/conductor/tasks/live_migrate.py
index ec349150feaa..f92f94e22f7d 100644
--- a/nova/conductor/tasks/live_migrate.py
+++ b/nova/conductor/tasks/live_migrate.py
@@ -17,8 +17,8 @@ from nova.compute import rpcapi as compute_rpcapi
 from nova.compute import utils as compute_utils
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova import image
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.scheduler import rpcapi as scheduler_rpcapi
 from nova.scheduler import utils as scheduler_utils
diff --git a/nova/console/websocketproxy.py b/nova/console/websocketproxy.py
index d02dcd043b4a..fbc2be8933f2 100644
--- a/nova/console/websocketproxy.py
+++ b/nova/console/websocketproxy.py
@@ -25,7 +25,7 @@ import websockify
 
 from nova.consoleauth import rpcapi as consoleauth_rpcapi
 from nova import context
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/console/xvp.py b/nova/console/xvp.py
index f55645b2d6ac..85e3f43235c1 100644
--- a/nova/console/xvp.py
+++ b/nova/console/xvp.py
@@ -23,8 +23,8 @@ from oslo.config import cfg
 
 from nova import context
 from nova import db
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
 from nova import paths
diff --git a/nova/consoleauth/manager.py b/nova/consoleauth/manager.py
index 966b398a452d..ff92f1b57966 100644
--- a/nova/consoleauth/manager.py
+++ b/nova/consoleauth/manager.py
@@ -23,9 +23,9 @@ from oslo import messaging
 
 from nova.cells import rpcapi as cells_rpcapi
 from nova.compute import rpcapi as compute_rpcapi
+from nova.i18n import _, _LW
 from nova import manager
 from nova import objects
-from nova.openstack.common.gettextutils import _, _LW
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import memorycache
diff --git a/nova/context.py b/nova/context.py
index ae0d9b51fdd6..c512ad534cff 100644
--- a/nova/context.py
+++ b/nova/context.py
@@ -23,7 +23,7 @@ import uuid
 import six
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import local
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
diff --git a/nova/crypto.py b/nova/crypto.py
index 8d6f8d440284..ebbc3068cd4c 100644
--- a/nova/crypto.py
+++ b/nova/crypto.py
@@ -35,9 +35,9 @@ from pyasn1.type import univ
 from nova import context
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common import excutils
 from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
 from nova.openstack.common import timeutils
diff --git a/nova/db/api.py b/nova/db/api.py
index ee7ad22209f9..ee48e1151ea3 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -31,8 +31,8 @@ from eventlet import tpool
 from oslo.config import cfg
 
 from nova.cells import rpcapi as cells_rpcapi
+from nova.i18n import _
 from nova.openstack.common.db import api as db_api
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 0d5458b84939..a333cb27218d 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -52,11 +52,11 @@ from nova.compute import vm_states
 import nova.context
 from nova.db.sqlalchemy import models
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common.db import exception as db_exc
 from nova.openstack.common.db.sqlalchemy import session as db_session
 from nova.openstack.common.db.sqlalchemy import utils as sqlalchemyutils
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
 from nova.openstack.common import uuidutils
diff --git a/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py b/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py
index 8db11e692b21..1712784e4b2a 100644
--- a/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py
+++ b/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py
@@ -20,7 +20,7 @@ from sqlalchemy import ForeignKey, Index, Integer, MetaData, String, Table
 from sqlalchemy import Text
 from sqlalchemy.types import NullType
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/db/sqlalchemy/migration.py b/nova/db/sqlalchemy/migration.py
index 2d140e67d9d8..388e6d2feea6 100644
--- a/nova/db/sqlalchemy/migration.py
+++ b/nova/db/sqlalchemy/migration.py
@@ -23,7 +23,7 @@ import sqlalchemy
 
 from nova.db.sqlalchemy import api as db_session
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 INIT_VERSION = 215
 _REPOSITORY = None
diff --git a/nova/db/sqlalchemy/utils.py b/nova/db/sqlalchemy/utils.py
index 79cecc171b07..fcb33922a256 100644
--- a/nova/db/sqlalchemy/utils.py
+++ b/nova/db/sqlalchemy/utils.py
@@ -23,8 +23,8 @@ from sqlalchemy.types import NullType
 
 from nova.db.sqlalchemy import api as db
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common.db.sqlalchemy import utils as oslodbutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 
diff --git a/nova/debugger.py b/nova/debugger.py
index 29d25d482f16..8aa889f1a272 100644
--- a/nova/debugger.py
+++ b/nova/debugger.py
@@ -60,7 +60,7 @@ def init():
     if not (CONF.remote_debug.host and CONF.remote_debug.port):
         return
 
-    from nova.openstack.common.gettextutils import _
+    from nova.i18n import _
     from nova.openstack.common import log as logging
     LOG = logging.getLogger(__name__)
 
diff --git a/nova/exception.py b/nova/exception.py
index 8eff489bb297..64f79d587195 100644
--- a/nova/exception.py
+++ b/nova/exception.py
@@ -28,8 +28,8 @@ import sys
 from oslo.config import cfg
 import webob.exc
 
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova import safe_utils
 
diff --git a/nova/filters.py b/nova/filters.py
index 0fcb8560c4fb..1ecd98824937 100644
--- a/nova/filters.py
+++ b/nova/filters.py
@@ -17,8 +17,8 @@
 Filter support
 """
 
+from nova.i18n import _
 from nova import loadables
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/hooks.py b/nova/hooks.py
index d56455e2a16b..3c67bb3aed84 100644
--- a/nova/hooks.py
+++ b/nova/hooks.py
@@ -46,7 +46,7 @@ import functools
 
 import stevedore
 
-from nova.openstack.common.gettextutils import _LE
+from nova.i18n import _LE
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/i18n.py b/nova/i18n.py
new file mode 100644
index 000000000000..e3e56733981b
--- /dev/null
+++ b/nova/i18n.py
@@ -0,0 +1,66 @@
+# Copyright 2014 IBM Corp.
+#
+# 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.
+
+"""oslo.i18n integration module.
+
+See http://docs.openstack.org/developer/oslo.i18n/usage.html .
+
+"""
+
+from oslo import i18n
+
+from nova.openstack.common import gettextutils
+
+DOMAIN = 'nova'
+
+_translators = i18n.TranslatorFactory(domain=DOMAIN)
+
+# The primary translation function using the well-known name "_"
+_ = _translators.primary
+
+# Translators for log levels.
+#
+# The abbreviated names are meant to reflect the usual use of a short
+# name like '_'. The "L" is for "log" and the other letter comes from
+# the level.
+_LI = _translators.log_info
+_LW = _translators.log_warning
+_LE = _translators.log_error
+_LC = _translators.log_critical
+
+
+def translate(value, user_locale):
+    return i18n.translate(value, user_locale)
+
+
+def get_available_languages():
+    return i18n.get_available_languages(DOMAIN)
+
+
+# Parts in oslo-incubator are still using gettextutils._(), _LI(), etc., from
+# oslo-incubator. Until these parts are changed to use oslo.i18n, Keystone
+# needs to do something to allow them to work. One option is to continue to
+# initialize gettextutils, but with the way that Nova has initialization
+# spread out over mutltiple entry points, we'll monkey-patch
+# gettextutils._(), _LI(), etc., to use our oslo.i18n versions.
+
+# FIXME(dims): Remove the monkey-patching and update openstack-common.conf and
+# do a sync with oslo-incubator to remove gettextutils once oslo-incubator
+# isn't using oslo-incubator gettextutils any more.
+
+gettextutils._ = _
+gettextutils._LI = _LI
+gettextutils._LW = _LW
+gettextutils._LE = _LE
+gettextutils._LC = _LC
diff --git a/nova/image/download/__init__.py b/nova/image/download/__init__.py
index ad0affb213ae..55d125b85cdc 100644
--- a/nova/image/download/__init__.py
+++ b/nova/image/download/__init__.py
@@ -19,7 +19,7 @@ from oslo.config import cfg
 import stevedore.driver
 import stevedore.extension
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 CONF = cfg.CONF
 LOG = logging.getLogger(__name__)
diff --git a/nova/image/download/file.py b/nova/image/download/file.py
index 7dc63167036c..93ec551c654b 100644
--- a/nova/image/download/file.py
+++ b/nova/image/download/file.py
@@ -18,8 +18,8 @@ import logging
 from oslo.config import cfg
 
 from nova import exception
+from nova.i18n import _
 import nova.image.download.base as xfer_base
-from nova.openstack.common.gettextutils import _
 import nova.virt.libvirt.utils as lv_utils
 
 
diff --git a/nova/image/glance.py b/nova/image/glance.py
index de81d3d51d02..7d20ad277ca3 100644
--- a/nova/image/glance.py
+++ b/nova/image/glance.py
@@ -31,8 +31,8 @@ import six
 import six.moves.urllib.parse as urlparse
 
 from nova import exception
+from nova.i18n import _
 import nova.image.download as image_xfers
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
diff --git a/nova/image/s3.py b/nova/image/s3.py
index db54630bef57..05a532baee2f 100644
--- a/nova/image/s3.py
+++ b/nova/image/s3.py
@@ -31,8 +31,8 @@ from oslo.config import cfg
 from nova.api.ec2 import ec2utils
 import nova.cert.rpcapi
 from nova import exception
+from nova.i18n import _
 from nova.image import glance
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
 from nova import utils
diff --git a/nova/ipv6/account_identifier.py b/nova/ipv6/account_identifier.py
index db9c65896844..23d77c7f956e 100644
--- a/nova/ipv6/account_identifier.py
+++ b/nova/ipv6/account_identifier.py
@@ -21,7 +21,7 @@ import hashlib
 
 import netaddr
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 def to_global(prefix, mac, project_id):
diff --git a/nova/ipv6/rfc2462.py b/nova/ipv6/rfc2462.py
index cda35b0a45a2..92746e5a079a 100644
--- a/nova/ipv6/rfc2462.py
+++ b/nova/ipv6/rfc2462.py
@@ -19,7 +19,7 @@
 
 import netaddr
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 def to_global(prefix, mac, project_id):
diff --git a/nova/keymgr/conf_key_mgr.py b/nova/keymgr/conf_key_mgr.py
index 4b9cb6720850..3cb44a5a8067 100644
--- a/nova/keymgr/conf_key_mgr.py
+++ b/nova/keymgr/conf_key_mgr.py
@@ -33,8 +33,8 @@ encryption key so *any* volume can be decrypted once the fixed key is known.
 
 from oslo.config import cfg
 
+from nova.i18n import _
 from nova.keymgr import single_key_mgr
-from nova.openstack.common.gettextutils import _
 
 key_mgr_opts = [
     cfg.StrOpt('fixed_key',
diff --git a/nova/keymgr/mock_key_mgr.py b/nova/keymgr/mock_key_mgr.py
index 51684fec46d1..af09b6877b67 100644
--- a/nova/keymgr/mock_key_mgr.py
+++ b/nova/keymgr/mock_key_mgr.py
@@ -29,9 +29,9 @@ this class.
 import array
 
 from nova import exception
+from nova.i18n import _
 from nova.keymgr import key
 from nova.keymgr import key_mgr
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import uuidutils
 from nova import utils
diff --git a/nova/keymgr/single_key_mgr.py b/nova/keymgr/single_key_mgr.py
index b6d4f35d01ca..33c24c0e63cf 100644
--- a/nova/keymgr/single_key_mgr.py
+++ b/nova/keymgr/single_key_mgr.py
@@ -20,8 +20,8 @@ all invocations of get_key.
 
 
 from nova import exception
+from nova.i18n import _
 from nova.keymgr import mock_key_mgr
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 
diff --git a/nova/network/api.py b/nova/network/api.py
index 36c99a31e4be..2aec7e8f8e26 100644
--- a/nova/network/api.py
+++ b/nova/network/api.py
@@ -20,13 +20,13 @@ import functools
 
 from nova.compute import flavors
 from nova import exception
+from nova.i18n import _
 from nova.network import base_api
 from nova.network import floating_ips
 from nova.network import model as network_model
 from nova.network import rpcapi as network_rpcapi
 from nova import objects
 from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova import policy
 from nova import utils
diff --git a/nova/network/base_api.py b/nova/network/base_api.py
index 54674e1244c7..dd712ac4196f 100644
--- a/nova/network/base_api.py
+++ b/nova/network/base_api.py
@@ -18,10 +18,10 @@ import inspect
 
 from nova.db import base
 from nova import hooks
+from nova.i18n import _
 from nova.network import model as network_model
 from nova import objects
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 
diff --git a/nova/network/driver.py b/nova/network/driver.py
index 973ec30f8e7a..04e7d607f821 100644
--- a/nova/network/driver.py
+++ b/nova/network/driver.py
@@ -16,7 +16,7 @@ import sys
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 
diff --git a/nova/network/floating_ips.py b/nova/network/floating_ips.py
index 17235f6e6e52..9782f673f23d 100644
--- a/nova/network/floating_ips.py
+++ b/nova/network/floating_ips.py
@@ -21,10 +21,10 @@ from oslo import messaging
 from nova import context
 from nova.db import base
 from nova import exception
+from nova.i18n import _
 from nova.network import rpcapi as network_rpcapi
 from nova import objects
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
diff --git a/nova/network/ldapdns.py b/nova/network/ldapdns.py
index 4d5bb0c45347..488467f1196e 100644
--- a/nova/network/ldapdns.py
+++ b/nova/network/ldapdns.py
@@ -23,8 +23,8 @@ import time
 from oslo.config import cfg
 
 from nova import exception
+from nova.i18n import _
 from nova.network import dns_driver
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova import utils
 
diff --git a/nova/network/linux_net.py b/nova/network/linux_net.py
index cc099801db35..84885be6d5ac 100644
--- a/nova/network/linux_net.py
+++ b/nova/network/linux_net.py
@@ -27,10 +27,10 @@ from oslo.config import cfg
 import six
 
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.openstack.common import excutils
 from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
diff --git a/nova/network/manager.py b/nova/network/manager.py
index a85b6ba9913a..dae573feea46 100644
--- a/nova/network/manager.py
+++ b/nova/network/manager.py
@@ -56,6 +56,7 @@ from oslo import messaging
 from nova import conductor
 from nova import context
 from nova import exception
+from nova.i18n import _
 from nova import ipv6
 from nova import manager
 from nova.network import api as network_api
@@ -67,7 +68,6 @@ from nova import objects
 from nova.objects import base as obj_base
 from nova.objects import quotas as quotas_obj
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import periodic_task
diff --git a/nova/network/minidns.py b/nova/network/minidns.py
index 6c1dce9ce320..2f9c388a5a14 100644
--- a/nova/network/minidns.py
+++ b/nova/network/minidns.py
@@ -19,8 +19,8 @@ import tempfile
 from oslo.config import cfg
 
 from nova import exception
+from nova.i18n import _
 from nova.network import dns_driver
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 CONF = cfg.CONF
diff --git a/nova/network/model.py b/nova/network/model.py
index 9febd55984f4..2af5e0542e27 100644
--- a/nova/network/model.py
+++ b/nova/network/model.py
@@ -20,7 +20,7 @@ import netaddr
 import six
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 
 
diff --git a/nova/network/neutronv2/api.py b/nova/network/neutronv2/api.py
index 2cc2123f9fd6..f26224de874b 100644
--- a/nova/network/neutronv2/api.py
+++ b/nova/network/neutronv2/api.py
@@ -24,13 +24,13 @@ from nova.compute import flavors
 from nova.compute import utils as compute_utils
 from nova import conductor
 from nova import exception
+from nova.i18n import _
 from nova.network import base_api
 from nova.network import model as network_model
 from nova.network import neutronv2
 from nova.network.neutronv2 import constants
 from nova.network.security_group import openstack_driver
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import uuidutils
 
diff --git a/nova/network/security_group/neutron_driver.py b/nova/network/security_group/neutron_driver.py
index 2c07a2dc37ce..de88f13203d0 100644
--- a/nova/network/security_group/neutron_driver.py
+++ b/nova/network/security_group/neutron_driver.py
@@ -23,11 +23,11 @@ from webob import exc
 
 from nova.compute import api as compute_api
 from nova import exception
+from nova.i18n import _
 from nova.network import neutronv2
 from nova.network.security_group import security_group_base
 from nova import objects
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import uuidutils
 from nova import utils
diff --git a/nova/network/security_group/security_group_base.py b/nova/network/security_group/security_group_base.py
index 6710b2d2af01..f8a2aa1c8bc0 100644
--- a/nova/network/security_group/security_group_base.py
+++ b/nova/network/security_group/security_group_base.py
@@ -22,7 +22,7 @@ import urllib
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import utils
 
 CONF = cfg.CONF
diff --git a/nova/notifications.py b/nova/notifications.py
index f48542edfb71..8c43e5959ca4 100644
--- a/nova/notifications.py
+++ b/nova/notifications.py
@@ -25,13 +25,13 @@ from oslo.config import cfg
 from nova.compute import flavors
 import nova.context
 from nova import db
+from nova.i18n import _
 from nova.image import glance
 from nova import network
 from nova.network import model as network_model
 from nova.objects import base as obj_base
 from nova.openstack.common import context as common_context
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log
 from nova.openstack.common import timeutils
 from nova import rpc
diff --git a/nova/objects/base.py b/nova/objects/base.py
index 79d07b2a0d9a..63a2705aaad0 100644
--- a/nova/objects/base.py
+++ b/nova/objects/base.py
@@ -24,9 +24,9 @@ import six
 
 from nova import context
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.objects import fields
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import versionutils
 
diff --git a/nova/objects/block_device.py b/nova/objects/block_device.py
index 40d06e927e8c..18c2b6fda765 100644
--- a/nova/objects/block_device.py
+++ b/nova/objects/block_device.py
@@ -17,10 +17,10 @@ from nova.cells import opts as cells_opts
 from nova.cells import rpcapi as cells_rpcapi
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.objects import base
 from nova.objects import fields
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 
diff --git a/nova/objects/fields.py b/nova/objects/fields.py
index 57936a28e96e..fad6011c5e5e 100644
--- a/nova/objects/fields.py
+++ b/nova/objects/fields.py
@@ -19,8 +19,8 @@ import iso8601
 import netaddr
 import six
 
+from nova.i18n import _
 from nova.network import model as network_model
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import timeutils
 
 
diff --git a/nova/objects/instance.py b/nova/objects/instance.py
index bd046304b56e..5c7fe317acdc 100644
--- a/nova/objects/instance.py
+++ b/nova/objects/instance.py
@@ -18,11 +18,11 @@ from nova import compute
 from nova.compute import flavors
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova import notifications
 from nova import objects
 from nova.objects import base
 from nova.objects import fields
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
 from nova import utils
diff --git a/nova/objects/instance_fault.py b/nova/objects/instance_fault.py
index 9be7a4e81e28..7c2b7a1fd864 100644
--- a/nova/objects/instance_fault.py
+++ b/nova/objects/instance_fault.py
@@ -18,10 +18,10 @@ from nova.cells import opts as cells_opts
 from nova.cells import rpcapi as cells_rpcapi
 from nova import db
 from nova import exception
+from nova.i18n import _LE
 from nova import objects
 from nova.objects import base
 from nova.objects import fields
-from nova.openstack.common.gettextutils import _LE
 from nova.openstack.common import log as logging
 
 
diff --git a/nova/objects/instance_info_cache.py b/nova/objects/instance_info_cache.py
index 1c6f57b12335..10b128e0e8e6 100644
--- a/nova/objects/instance_info_cache.py
+++ b/nova/objects/instance_info_cache.py
@@ -16,9 +16,9 @@ from nova.cells import opts as cells_opts
 from nova.cells import rpcapi as cells_rpcapi
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova.objects import base
 from nova.objects import fields
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/pci/pci_manager.py b/nova/pci/pci_manager.py
index bdbad0d745d4..e99117b881d1 100644
--- a/nova/pci/pci_manager.py
+++ b/nova/pci/pci_manager.py
@@ -20,9 +20,9 @@ from nova.compute import task_states
 from nova.compute import vm_states
 from nova import context
 from nova import exception
+from nova.i18n import _
 from nova.objects import instance
 from nova.objects import pci_device as pci_device_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.pci import pci_device
 from nova.pci import pci_request
diff --git a/nova/quota.py b/nova/quota.py
index bd3d364b8a0b..4e1644a178bd 100644
--- a/nova/quota.py
+++ b/nova/quota.py
@@ -23,8 +23,8 @@ import six
 
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova.objects import keypair as keypair_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
diff --git a/nova/scheduler/chance.py b/nova/scheduler/chance.py
index bb04eb9c3d00..65a24030c0ec 100644
--- a/nova/scheduler/chance.py
+++ b/nova/scheduler/chance.py
@@ -25,7 +25,7 @@ from oslo.config import cfg
 
 from nova.compute import rpcapi as compute_rpcapi
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.scheduler import driver
 
 CONF = cfg.CONF
diff --git a/nova/scheduler/driver.py b/nova/scheduler/driver.py
index cb1942262fa7..3766ec2e8538 100644
--- a/nova/scheduler/driver.py
+++ b/nova/scheduler/driver.py
@@ -27,8 +27,8 @@ from nova.compute import utils as compute_utils
 from nova.compute import vm_states
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova import notifications
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
diff --git a/nova/scheduler/filter_scheduler.py b/nova/scheduler/filter_scheduler.py
index 96883b08c8a9..415f46d32dab 100644
--- a/nova/scheduler/filter_scheduler.py
+++ b/nova/scheduler/filter_scheduler.py
@@ -25,8 +25,8 @@ from oslo.config import cfg
 
 from nova.compute import rpcapi as compute_rpcapi
 from nova import exception
+from nova.i18n import _
 from nova.objects import instance_group as instance_group_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.pci import pci_request
 from nova import rpc
diff --git a/nova/scheduler/filters/compute_filter.py b/nova/scheduler/filters/compute_filter.py
index 94aa2490bbdf..9b7022401d21 100644
--- a/nova/scheduler/filters/compute_filter.py
+++ b/nova/scheduler/filters/compute_filter.py
@@ -15,7 +15,7 @@
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.scheduler import filters
 from nova import servicegroup
diff --git a/nova/scheduler/filters/core_filter.py b/nova/scheduler/filters/core_filter.py
index 45d97b9ba710..0c807c3fde39 100644
--- a/nova/scheduler/filters/core_filter.py
+++ b/nova/scheduler/filters/core_filter.py
@@ -17,7 +17,7 @@
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _LW
+from nova.i18n import _LW
 from nova.openstack.common import log as logging
 from nova.scheduler import filters
 from nova.scheduler.filters import utils
diff --git a/nova/scheduler/filters/ram_filter.py b/nova/scheduler/filters/ram_filter.py
index 9afcceaa975f..4677d2feb34a 100644
--- a/nova/scheduler/filters/ram_filter.py
+++ b/nova/scheduler/filters/ram_filter.py
@@ -16,7 +16,7 @@
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _LW
+from nova.i18n import _LW
 from nova.openstack.common import log as logging
 from nova.scheduler import filters
 from nova.scheduler.filters import utils
diff --git a/nova/scheduler/filters/trusted_filter.py b/nova/scheduler/filters/trusted_filter.py
index 29cd4f4f5ea7..af3c2f899b08 100644
--- a/nova/scheduler/filters/trusted_filter.py
+++ b/nova/scheduler/filters/trusted_filter.py
@@ -50,7 +50,7 @@ from oslo.config import cfg
 
 from nova import context
 from nova import db
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
diff --git a/nova/scheduler/filters/utils.py b/nova/scheduler/filters/utils.py
index 580b2cb38558..151811f4d9ea 100644
--- a/nova/scheduler/filters/utils.py
+++ b/nova/scheduler/filters/utils.py
@@ -15,8 +15,8 @@
 """Bench of utility methods used by filters."""
 
 
+from nova.i18n import _LI
 from nova.objects import aggregate
-from nova.openstack.common.gettextutils import _LI
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/scheduler/host_manager.py b/nova/scheduler/host_manager.py
index 227efa30cd0f..9cea311ebfe1 100644
--- a/nova/scheduler/host_manager.py
+++ b/nova/scheduler/host_manager.py
@@ -26,7 +26,7 @@ from nova.compute import task_states
 from nova.compute import vm_states
 from nova import db
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
diff --git a/nova/scheduler/scheduler_options.py b/nova/scheduler/scheduler_options.py
index 7dbbcd56e88f..48019d5187ac 100644
--- a/nova/scheduler/scheduler_options.py
+++ b/nova/scheduler/scheduler_options.py
@@ -26,8 +26,8 @@ import os
 
 from oslo.config import cfg
 
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
 
diff --git a/nova/scheduler/utils.py b/nova/scheduler/utils.py
index 2d2f1618d06e..2e7f4b67c5c5 100644
--- a/nova/scheduler/utils.py
+++ b/nova/scheduler/utils.py
@@ -22,9 +22,9 @@ from nova.compute import flavors
 from nova.compute import utils as compute_utils
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova import notifications
 from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova import rpc
diff --git a/nova/service.py b/nova/service.py
index 8618e7c3e394..cdb0b1f117e3 100644
--- a/nova/service.py
+++ b/nova/service.py
@@ -29,8 +29,8 @@ from nova import conductor
 from nova import context
 from nova import debugger
 from nova import exception
+from nova.i18n import _
 from nova.objects import base as objects_base
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
diff --git a/nova/servicegroup/api.py b/nova/servicegroup/api.py
index 0016c5c53e3a..bbb0fd55fdc0 100644
--- a/nova/servicegroup/api.py
+++ b/nova/servicegroup/api.py
@@ -20,7 +20,7 @@ import random
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova import utils
diff --git a/nova/servicegroup/drivers/db.py b/nova/servicegroup/drivers/db.py
index e7f74e7069b6..bf45d1ada5f3 100644
--- a/nova/servicegroup/drivers/db.py
+++ b/nova/servicegroup/drivers/db.py
@@ -18,7 +18,7 @@ import six
 
 from nova import conductor
 from nova import context
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
 from nova.servicegroup import api
diff --git a/nova/servicegroup/drivers/mc.py b/nova/servicegroup/drivers/mc.py
index e83163ff732d..3d643bb20c78 100644
--- a/nova/servicegroup/drivers/mc.py
+++ b/nova/servicegroup/drivers/mc.py
@@ -21,7 +21,7 @@ from oslo.config import cfg
 
 from nova import conductor
 from nova import context
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import memorycache
 from nova.openstack.common import timeutils
diff --git a/nova/servicegroup/drivers/zk.py b/nova/servicegroup/drivers/zk.py
index a7a8b7b4654a..9ba3ae64f982 100644
--- a/nova/servicegroup/drivers/zk.py
+++ b/nova/servicegroup/drivers/zk.py
@@ -20,7 +20,7 @@ import eventlet
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import loopingcall
diff --git a/nova/storage/linuxscsi.py b/nova/storage/linuxscsi.py
index 09669fa565d6..f261094a1371 100644
--- a/nova/storage/linuxscsi.py
+++ b/nova/storage/linuxscsi.py
@@ -14,7 +14,7 @@
 
 """Generic linux scsi subsystem utilities."""
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import loopingcall
 from nova.openstack.common import processutils
diff --git a/nova/tests/api/openstack/compute/plugins/v3/test_servers.py b/nova/tests/api/openstack/compute/plugins/v3/test_servers.py
index 8f6a6e5889c8..7631727cafdb 100644
--- a/nova/tests/api/openstack/compute/plugins/v3/test_servers.py
+++ b/nova/tests/api/openstack/compute/plugins/v3/test_servers.py
@@ -42,12 +42,12 @@ from nova import context
 from nova import db
 from nova.db.sqlalchemy import models
 from nova import exception
+from nova.i18n import _
 from nova.image import glance
 from nova.network import manager
 from nova.network.neutronv2 import api as neutron_api
 from nova import objects
 from nova.objects import instance as instance_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import policy as common_policy
 from nova.openstack.common import timeutils
diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py
index 7913bff3a57f..8168a169c973 100644
--- a/nova/tests/api/openstack/compute/test_servers.py
+++ b/nova/tests/api/openstack/compute/test_servers.py
@@ -43,12 +43,12 @@ from nova import context
 from nova import db
 from nova.db.sqlalchemy import models
 from nova import exception
+from nova.i18n import _
 from nova.image import glance
 from nova.network import manager
 from nova.network.neutronv2 import api as neutron_api
 from nova import objects
 from nova.objects import instance as instance_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import policy as common_policy
 from nova.openstack.common import timeutils
diff --git a/nova/tests/api/openstack/fakes.py b/nova/tests/api/openstack/fakes.py
index 86b7bb882930..a41e48f48478 100644
--- a/nova/tests/api/openstack/fakes.py
+++ b/nova/tests/api/openstack/fakes.py
@@ -719,7 +719,7 @@ def stub_bdm_get_all_by_instance(context, instance_uuid, use_slave=False):
             'volume_id': 'volume_id2', 'instance_uuid': instance_uuid})]
 
 
-def fake_get_available_languages(domain):
+def fake_get_available_languages():
     existing_translations = ['en_GB', 'en_AU', 'de', 'zh_CN', 'en_US']
     return existing_translations
 
diff --git a/nova/tests/api/openstack/test_faults.py b/nova/tests/api/openstack/test_faults.py
index 81d4f860ff66..889f79b57b8e 100644
--- a/nova/tests/api/openstack/test_faults.py
+++ b/nova/tests/api/openstack/test_faults.py
@@ -25,7 +25,7 @@ import nova.api.openstack
 from nova.api.openstack import common
 from nova.api.openstack import wsgi
 from nova import exception
-from nova.openstack.common import gettextutils
+from nova import i18n
 from nova.openstack.common import jsonutils
 from nova import test
 
@@ -33,32 +33,34 @@ from nova import test
 class TestFaultWrapper(test.NoDBTestCase):
     """Tests covering `nova.api.openstack:FaultWrapper` class."""
 
-    @mock.patch('nova.openstack.common.gettextutils.translate')
-    def test_safe_exception_translated(self, mock_translate):
-        msg = gettextutils.Message('Should be translated.', domain='nova')
-        safe_exception = exception.NotFound()
-        safe_exception.msg_fmt = msg
+    @mock.patch('oslo.i18n.translate')
+    @mock.patch('nova.i18n.get_available_languages')
+    def test_safe_exception_translated(self, mock_languages, mock_translate):
+        def fake_translate(value, locale):
+            return "I've been translated!"
+
+        mock_translate.side_effect = fake_translate
+
+        # Create an exception, passing a translatable message with a
+        # known value we can test for later.
+        safe_exception = exception.NotFound(i18n._('Should be translated.'))
         safe_exception.safe = True
         safe_exception.code = 404
 
         req = webob.Request.blank('/')
 
-        def fake_translate(mesg, locale):
-            if mesg == "Should be translated.":
-                return "I've been translated!"
-            return mesg
-
-        mock_translate.side_effect = fake_translate
-
         def raiser(*args, **kwargs):
             raise safe_exception
 
         wrapper = nova.api.openstack.FaultWrapper(raiser)
         response = req.get_response(wrapper)
 
+        # The text of the exception's message attribute (replaced
+        # above with a non-default value) should be passed to
+        # translate().
+        mock_translate.assert_any_call(u'Should be translated.', None)
+        # The return value from translate() should appear in the response.
         self.assertIn("I've been translated!", unicode(response.body))
-        mock_translate.assert_any_call(
-                u'Should be translated.', None)
 
 
 class TestFaults(test.NoDBTestCase):
@@ -175,7 +177,7 @@ class TestFaults(test.NoDBTestCase):
     def test_raise_localize_explanation(self):
         msgid = "String with params: %s"
         params = ('blah', )
-        lazy_gettext = gettextutils._
+        lazy_gettext = i18n._
         expl = lazy_gettext(msgid) % params
 
         @webob.dec.wsgify
diff --git a/nova/tests/api/openstack/test_wsgi.py b/nova/tests/api/openstack/test_wsgi.py
index ebbbf06646f5..e4adbeeea231 100644
--- a/nova/tests/api/openstack/test_wsgi.py
+++ b/nova/tests/api/openstack/test_wsgi.py
@@ -17,7 +17,7 @@ import webob
 from nova.api.openstack import extensions
 from nova.api.openstack import wsgi
 from nova import exception
-from nova.openstack.common import gettextutils
+from nova import i18n
 from nova import test
 from nova.tests.api.openstack import fakes
 from nova.tests import utils
@@ -132,7 +132,7 @@ class RequestTest(test.NoDBTestCase):
                  'id2': compute_nodes[2]})
 
     def test_from_request(self):
-        self.stubs.Set(gettextutils, 'get_available_languages',
+        self.stubs.Set(i18n, 'get_available_languages',
                        fakes.fake_get_available_languages)
 
         request = wsgi.Request.blank('/')
@@ -143,7 +143,7 @@ class RequestTest(test.NoDBTestCase):
     def test_asterisk(self):
         # asterisk should match first available if there
         # are not any other available matches
-        self.stubs.Set(gettextutils, 'get_available_languages',
+        self.stubs.Set(i18n, 'get_available_languages',
                        fakes.fake_get_available_languages)
 
         request = wsgi.Request.blank('/')
@@ -152,7 +152,7 @@ class RequestTest(test.NoDBTestCase):
         self.assertEqual(request.best_match_language(), 'en_GB')
 
     def test_prefix(self):
-        self.stubs.Set(gettextutils, 'get_available_languages',
+        self.stubs.Set(i18n, 'get_available_languages',
                        fakes.fake_get_available_languages)
 
         request = wsgi.Request.blank('/')
@@ -161,7 +161,7 @@ class RequestTest(test.NoDBTestCase):
         self.assertEqual(request.best_match_language(), 'zh_CN')
 
     def test_secondary(self):
-        self.stubs.Set(gettextutils, 'get_available_languages',
+        self.stubs.Set(i18n, 'get_available_languages',
                        fakes.fake_get_available_languages)
 
         request = wsgi.Request.blank('/')
@@ -170,7 +170,7 @@ class RequestTest(test.NoDBTestCase):
         self.assertEqual(request.best_match_language(), 'en_GB')
 
     def test_none_found(self):
-        self.stubs.Set(gettextutils, 'get_available_languages',
+        self.stubs.Set(i18n, 'get_available_languages',
                        fakes.fake_get_available_languages)
 
         request = wsgi.Request.blank('/')
@@ -179,7 +179,7 @@ class RequestTest(test.NoDBTestCase):
         self.assertIs(request.best_match_language(), None)
 
     def test_no_lang_header(self):
-        self.stubs.Set(gettextutils, 'get_available_languages',
+        self.stubs.Set(i18n, 'get_available_languages',
                        fakes.fake_get_available_languages)
 
         request = wsgi.Request.blank('/')
diff --git a/nova/tests/api/test_auth.py b/nova/tests/api/test_auth.py
index 819790919294..992ba48942a6 100644
--- a/nova/tests/api/test_auth.py
+++ b/nova/tests/api/test_auth.py
@@ -19,7 +19,7 @@ import webob
 import webob.exc
 
 import nova.api.auth
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common.middleware import request_id
 from nova import test
 
diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py
index ce2c2d5c0f2b..eed33ea44dc2 100644
--- a/nova/tests/compute/test_compute.py
+++ b/nova/tests/compute/test_compute.py
@@ -51,6 +51,7 @@ from nova.conductor import manager as conductor_manager
 from nova import context
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova.image import glance
 from nova.network import api as network_api
 from nova.network import model as network_model
@@ -59,7 +60,6 @@ from nova import objects
 from nova.objects import base as obj_base
 from nova.objects import block_device as block_device_obj
 from nova.objects import instance as instance_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
diff --git a/nova/tests/compute/test_keypairs.py b/nova/tests/compute/test_keypairs.py
index 8b8f8c10b5cc..f2213af1f57e 100644
--- a/nova/tests/compute/test_keypairs.py
+++ b/nova/tests/compute/test_keypairs.py
@@ -20,7 +20,7 @@ from nova.compute import api as compute_api
 from nova import context
 from nova import db
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import quota
 from nova.tests.compute import test_compute
 from nova.tests import fake_notifier
diff --git a/nova/tests/db/test_migrations.py b/nova/tests/db/test_migrations.py
index aed05d7b4bd6..b2cf0f3a1614 100644
--- a/nova/tests/db/test_migrations.py
+++ b/nova/tests/db/test_migrations.py
@@ -53,8 +53,8 @@ import sqlalchemy.exc
 
 import nova.db.sqlalchemy.migrate_repo
 from nova.db.sqlalchemy import utils as db_utils
+from nova.i18n import _
 from nova.openstack.common.db.sqlalchemy import utils as oslodbutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
 from nova import test
diff --git a/nova/tests/fake_ldap.py b/nova/tests/fake_ldap.py
index e3e6d770802b..5e3a1cc7a3e0 100644
--- a/nova/tests/fake_ldap.py
+++ b/nova/tests/fake_ldap.py
@@ -23,7 +23,7 @@ library to work with nova.
 
 import fnmatch
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 
 
diff --git a/nova/tests/fake_volume.py b/nova/tests/fake_volume.py
index 5318e86f0bfc..e37da85c8572 100644
--- a/nova/tests/fake_volume.py
+++ b/nova/tests/fake_volume.py
@@ -17,7 +17,7 @@ import uuid
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
 
diff --git a/nova/tests/integrated/api/client.py b/nova/tests/integrated/api/client.py
index da80e5bd3bd4..0e80d98baf21 100644
--- a/nova/tests/integrated/api/client.py
+++ b/nova/tests/integrated/api/client.py
@@ -17,7 +17,7 @@ import urllib
 
 import six.moves.urllib.parse as urlparse
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.tests.image import fake
diff --git a/nova/tests/integrated/api_samples_test_base.py b/nova/tests/integrated/api_samples_test_base.py
index 6a0f3724608e..8932adbee272 100644
--- a/nova/tests/integrated/api_samples_test_base.py
+++ b/nova/tests/integrated/api_samples_test_base.py
@@ -19,7 +19,7 @@ import re
 from lxml import etree
 import six
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import importutils
 from nova.openstack.common import jsonutils
 from nova import test
diff --git a/nova/tests/test_exception.py b/nova/tests/test_exception.py
index a7c75f8f6c30..bf5264d2caa3 100644
--- a/nova/tests/test_exception.py
+++ b/nova/tests/test_exception.py
@@ -18,7 +18,6 @@ import inspect
 
 from nova import context
 from nova import exception
-from nova.openstack.common import gettextutils
 from nova import test
 
 
@@ -140,16 +139,6 @@ class NovaExceptionTestCase(test.NoDBTestCase):
         exc = FakeNovaException_Remote(lame_arg='lame')
         self.assertEqual(exc.format_message(), "some message %(somearg)s")
 
-    def test_format_message_gettext_msg_returned(self):
-        class FakeNovaException(exception.NovaException):
-            msg_fmt = gettextutils.Message("Some message %(param)s",
-                                           domain='nova')
-
-        exc = FakeNovaException(param='blah')
-        msg = exc.format_message()
-        self.assertIsInstance(msg, gettextutils.Message)
-        self.assertEqual(msg, "Some message blah")
-
 
 class ExceptionTestCase(test.NoDBTestCase):
     @staticmethod
diff --git a/nova/tests/test_nova_manage.py b/nova/tests/test_nova_manage.py
index 4877b135f3e3..50bb938d7791 100644
--- a/nova/tests/test_nova_manage.py
+++ b/nova/tests/test_nova_manage.py
@@ -22,7 +22,7 @@ from nova.cmd import manage
 from nova import context
 from nova import db
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import test
 from nova.tests.db import fakes as db_fakes
 from nova.tests.objects import test_network
diff --git a/nova/tests/virt/hyperv/test_hypervapi.py b/nova/tests/virt/hyperv/test_hypervapi.py
index 9b6cf1e15e22..04542c9c7e5d 100644
--- a/nova/tests/virt/hyperv/test_hypervapi.py
+++ b/nova/tests/virt/hyperv/test_hypervapi.py
@@ -34,8 +34,8 @@ from nova.compute import task_states
 from nova import context
 from nova import db
 from nova import exception
+from nova.i18n import _
 from nova.image import glance
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import units
 from nova import test
 from nova.tests import fake_network
diff --git a/nova/tests/virt/libvirt/fakelibvirt.py b/nova/tests/virt/libvirt/fakelibvirt.py
index e3a3db978ed7..378e795848f6 100644
--- a/nova/tests/virt/libvirt/fakelibvirt.py
+++ b/nova/tests/virt/libvirt/fakelibvirt.py
@@ -17,7 +17,7 @@ from lxml import etree
 import time
 import uuid
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 # Allow passing None to the various connect methods
 # (i.e. allow the client to rely on default URLs)
diff --git a/nova/tests/virt/vmwareapi/fake.py b/nova/tests/virt/vmwareapi/fake.py
index 5f46abb58101..deb576b90f71 100644
--- a/nova/tests/virt/vmwareapi/fake.py
+++ b/nova/tests/virt/vmwareapi/fake.py
@@ -23,7 +23,7 @@ import collections
 import pprint
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import units
diff --git a/nova/tests/virt/vmwareapi/test_ds_util.py b/nova/tests/virt/vmwareapi/test_ds_util.py
index 2b957e1c5fe0..0a78b62c0c62 100644
--- a/nova/tests/virt/vmwareapi/test_ds_util.py
+++ b/nova/tests/virt/vmwareapi/test_ds_util.py
@@ -18,7 +18,7 @@ import re
 import mock
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import units
 from nova import test
 from nova.tests.virt.vmwareapi import fake
diff --git a/nova/tests/virt/xenapi/image/test_bittorrent.py b/nova/tests/virt/xenapi/image/test_bittorrent.py
index e3a70c5a242c..2ebb52f79f6f 100644
--- a/nova/tests/virt/xenapi/image/test_bittorrent.py
+++ b/nova/tests/virt/xenapi/image/test_bittorrent.py
@@ -17,7 +17,7 @@ import mox
 import pkg_resources
 
 from nova import context
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import test
 from nova.tests.virt.xenapi import stubs
 from nova.virt.xenapi import driver as xenapi_conn
diff --git a/nova/tests/virt/xenapi/test_vm_utils.py b/nova/tests/virt/xenapi/test_vm_utils.py
index b302ebb82c01..b8d1fca7de21 100644
--- a/nova/tests/virt/xenapi/test_vm_utils.py
+++ b/nova/tests/virt/xenapi/test_vm_utils.py
@@ -27,7 +27,7 @@ from nova.compute import power_state
 from nova.compute import vm_mode
 from nova import context
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import processutils
 from nova.openstack.common import timeutils
 from nova.openstack.common import units
diff --git a/nova/utils.py b/nova/utils.py
index 887617941d62..1ca10b8e1b41 100644
--- a/nova/utils.py
+++ b/nova/utils.py
@@ -41,9 +41,8 @@ from oslo import messaging
 import six
 
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common import gettextutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import lockutils
 from nova.openstack.common import log as logging
@@ -444,8 +443,6 @@ def utf8(value):
     """
     if isinstance(value, unicode):
         return value.encode('utf-8')
-    elif isinstance(value, gettextutils.Message):
-        return unicode(value).encode('utf-8')
     assert isinstance(value, str)
     return value
 
diff --git a/nova/version.py b/nova/version.py
index 4d6faa1e081c..7c2a71b39d77 100644
--- a/nova/version.py
+++ b/nova/version.py
@@ -14,7 +14,7 @@
 
 import pbr.version
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 NOVA_VENDOR = "OpenStack Foundation"
 NOVA_PRODUCT = "OpenStack Nova"
diff --git a/nova/virt/baremetal/common.py b/nova/virt/baremetal/common.py
index de0f6d8e0c12..94165007e688 100644
--- a/nova/virt/baremetal/common.py
+++ b/nova/virt/baremetal/common.py
@@ -15,7 +15,7 @@
 import paramiko
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/virt/baremetal/db/sqlalchemy/api.py b/nova/virt/baremetal/db/sqlalchemy/api.py
index 35e70a4be8b1..6fd916b0abda 100644
--- a/nova/virt/baremetal/db/sqlalchemy/api.py
+++ b/nova/virt/baremetal/db/sqlalchemy/api.py
@@ -26,8 +26,8 @@ from sqlalchemy.sql.expression import literal_column
 import nova.context
 from nova.db.sqlalchemy import api as sqlalchemy_api
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common.db import exception as db_exc
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import timeutils
 from nova.openstack.common import uuidutils
 from nova.virt.baremetal.db.sqlalchemy import models
diff --git a/nova/virt/baremetal/db/sqlalchemy/migration.py b/nova/virt/baremetal/db/sqlalchemy/migration.py
index 39212e668c53..27beb89f16d0 100644
--- a/nova/virt/baremetal/db/sqlalchemy/migration.py
+++ b/nova/virt/baremetal/db/sqlalchemy/migration.py
@@ -22,7 +22,7 @@ from migrate.versioning.repository import Repository
 import sqlalchemy
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.virt.baremetal.db.sqlalchemy import session
 
 INIT_VERSION = 0
diff --git a/nova/virt/baremetal/driver.py b/nova/virt/baremetal/driver.py
index 705494145af5..228267e30034 100644
--- a/nova/virt/baremetal/driver.py
+++ b/nova/virt/baremetal/driver.py
@@ -27,8 +27,8 @@ from nova.compute import power_state
 from nova.compute import task_states
 from nova import context as nova_context
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import jsonutils
 from nova.openstack.common import lockutils
diff --git a/nova/virt/baremetal/iboot_pdu.py b/nova/virt/baremetal/iboot_pdu.py
index f32fa1d03e6f..16d037b38c1f 100644
--- a/nova/virt/baremetal/iboot_pdu.py
+++ b/nova/virt/baremetal/iboot_pdu.py
@@ -16,7 +16,7 @@
 # iBoot Power Driver
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.virt.baremetal import baremetal_states
diff --git a/nova/virt/baremetal/ipmi.py b/nova/virt/baremetal/ipmi.py
index f13b0de8a9f6..473ad58dc0bd 100644
--- a/nova/virt/baremetal/ipmi.py
+++ b/nova/virt/baremetal/ipmi.py
@@ -27,7 +27,7 @@ import tempfile
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import loopingcall
 from nova import paths
diff --git a/nova/virt/baremetal/pxe.py b/nova/virt/baremetal/pxe.py
index f7c8ff644d2e..0d156f7ec97f 100644
--- a/nova/virt/baremetal/pxe.py
+++ b/nova/virt/baremetal/pxe.py
@@ -26,10 +26,10 @@ from oslo.config import cfg
 
 from nova.compute import flavors
 from nova import exception
+from nova.i18n import _
 from nova.objects import flavor as flavor_obj
 from nova.openstack.common.db import exception as db_exc
 from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import loopingcall
 from nova.openstack.common import timeutils
diff --git a/nova/virt/baremetal/tilera.py b/nova/virt/baremetal/tilera.py
index 67c562598b99..7588a97ece6e 100644
--- a/nova/virt/baremetal/tilera.py
+++ b/nova/virt/baremetal/tilera.py
@@ -25,9 +25,9 @@ from oslo.config import cfg
 
 from nova.compute import flavors
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common.db import exception as db_exc
 from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova import utils
 from nova.virt.baremetal import baremetal_states
diff --git a/nova/virt/baremetal/tilera_pdu.py b/nova/virt/baremetal/tilera_pdu.py
index 87d8435bf4d6..dc84c0051866 100644
--- a/nova/virt/baremetal/tilera_pdu.py
+++ b/nova/virt/baremetal/tilera_pdu.py
@@ -24,7 +24,7 @@ import time
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
 from nova import utils
diff --git a/nova/virt/baremetal/utils.py b/nova/virt/baremetal/utils.py
index c54d3c14dd02..0de4e27ae0b6 100644
--- a/nova/virt/baremetal/utils.py
+++ b/nova/virt/baremetal/utils.py
@@ -18,7 +18,7 @@ import errno
 import os
 import shutil
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.virt.disk import api as disk_api
 from nova.virt.libvirt import utils as libvirt_utils
diff --git a/nova/virt/baremetal/vif_driver.py b/nova/virt/baremetal/vif_driver.py
index 04255d08a33e..f71cd3983554 100644
--- a/nova/virt/baremetal/vif_driver.py
+++ b/nova/virt/baremetal/vif_driver.py
@@ -17,7 +17,7 @@ from oslo.config import cfg
 
 from nova import context
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.virt.baremetal import db as bmdb
 
diff --git a/nova/virt/baremetal/virtual_power_driver.py b/nova/virt/baremetal/virtual_power_driver.py
index 34e9e0e5bd87..7ff670340901 100644
--- a/nova/virt/baremetal/virtual_power_driver.py
+++ b/nova/virt/baremetal/virtual_power_driver.py
@@ -19,7 +19,7 @@ from oslo.config import cfg
 
 from nova import context as nova_context
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
diff --git a/nova/virt/baremetal/volume_driver.py b/nova/virt/baremetal/volume_driver.py
index 3cbe87877060..f07e988e7036 100644
--- a/nova/virt/baremetal/volume_driver.py
+++ b/nova/virt/baremetal/volume_driver.py
@@ -21,8 +21,8 @@ from oslo.config import cfg
 
 from nova import context as nova_context
 from nova import exception
+from nova.i18n import _
 from nova import network
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
diff --git a/nova/virt/block_device.py b/nova/virt/block_device.py
index 67b306402132..02e10be96a31 100644
--- a/nova/virt/block_device.py
+++ b/nova/virt/block_device.py
@@ -16,10 +16,10 @@ import functools
 import operator
 
 from nova import block_device
+from nova.i18n import _
 from nova import objects
 from nova.objects import base as obj_base
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.volume import encryptors
diff --git a/nova/virt/disk/api.py b/nova/virt/disk/api.py
index cdc103443af7..9a067b989756 100644
--- a/nova/virt/disk/api.py
+++ b/nova/virt/disk/api.py
@@ -33,7 +33,7 @@ if os.name != 'nt':
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
diff --git a/nova/virt/disk/mount/api.py b/nova/virt/disk/mount/api.py
index 37c50b54509b..066842b18e03 100644
--- a/nova/virt/disk/mount/api.py
+++ b/nova/virt/disk/mount/api.py
@@ -16,7 +16,7 @@
 import os
 import time
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova import utils
diff --git a/nova/virt/disk/mount/loop.py b/nova/virt/disk/mount/loop.py
index 7a0321a15309..d0a157e742c8 100644
--- a/nova/virt/disk/mount/loop.py
+++ b/nova/virt/disk/mount/loop.py
@@ -13,7 +13,7 @@
 # under the License.
 """Support for mounting images with the loop device."""
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova import utils
 from nova.virt.disk.mount import api
diff --git a/nova/virt/disk/mount/nbd.py b/nova/virt/disk/mount/nbd.py
index 7b2d0add946b..80ab96605829 100644
--- a/nova/virt/disk/mount/nbd.py
+++ b/nova/virt/disk/mount/nbd.py
@@ -20,7 +20,7 @@ import time
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova import utils
 from nova.virt.disk.mount import api
diff --git a/nova/virt/disk/vfs/guestfs.py b/nova/virt/disk/vfs/guestfs.py
index c99dce829ed7..95e611561ae6 100644
--- a/nova/virt/disk/vfs/guestfs.py
+++ b/nova/virt/disk/vfs/guestfs.py
@@ -15,7 +15,7 @@
 from eventlet import tpool
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.virt.disk.vfs import api as vfs
 
diff --git a/nova/virt/disk/vfs/localfs.py b/nova/virt/disk/vfs/localfs.py
index 314295c80ac2..242db7639ef6 100644
--- a/nova/virt/disk/vfs/localfs.py
+++ b/nova/virt/disk/vfs/localfs.py
@@ -16,8 +16,8 @@ import os
 import tempfile
 
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova import utils
 from nova.virt.disk.mount import loop
diff --git a/nova/virt/driver.py b/nova/virt/driver.py
index 95459d1eba9f..f12a439678c2 100644
--- a/nova/virt/driver.py
+++ b/nova/virt/driver.py
@@ -24,7 +24,7 @@ import sys
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova import utils
diff --git a/nova/virt/event.py b/nova/virt/event.py
index 51db4cd1b92f..02b9cddbd590 100644
--- a/nova/virt/event.py
+++ b/nova/virt/event.py
@@ -22,7 +22,7 @@ driver.
 
 import time
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 EVENT_LIFECYCLE_STARTED = 0
 EVENT_LIFECYCLE_STOPPED = 1
diff --git a/nova/virt/fake.py b/nova/virt/fake.py
index 21d74633b624..eba5b5164b37 100644
--- a/nova/virt/fake.py
+++ b/nova/virt/fake.py
@@ -31,7 +31,7 @@ from nova.compute import power_state
 from nova.compute import task_states
 from nova import db
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova import utils
diff --git a/nova/virt/firewall.py b/nova/virt/firewall.py
index cd3c75b66c65..ed3ff026af85 100644
--- a/nova/virt/firewall.py
+++ b/nova/virt/firewall.py
@@ -19,12 +19,12 @@ from oslo.config import cfg
 
 from nova.compute import utils as compute_utils
 from nova import context
+from nova.i18n import _
+from nova.i18n import _LI
 from nova.network import linux_net
 from nova import objects
 from nova.objects import security_group as security_group_obj
 from nova.objects import security_group_rule as security_group_rule_obj
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LI
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova import utils
diff --git a/nova/virt/hardware.py b/nova/virt/hardware.py
index 2e5a1deca235..5670fd5bd199 100644
--- a/nova/virt/hardware.py
+++ b/nova/virt/hardware.py
@@ -17,7 +17,7 @@ import collections
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 virt_cpu_opts = [
diff --git a/nova/virt/hyperv/basevolumeutils.py b/nova/virt/hyperv/basevolumeutils.py
index 359417e50063..404d8536c669 100644
--- a/nova/virt/hyperv/basevolumeutils.py
+++ b/nova/virt/hyperv/basevolumeutils.py
@@ -28,7 +28,7 @@ if sys.platform == 'win32':
     import wmi
 
 from nova import block_device
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.virt import driver
 
diff --git a/nova/virt/hyperv/driver.py b/nova/virt/hyperv/driver.py
index daea18b9595c..dc0f2fa889c4 100644
--- a/nova/virt/hyperv/driver.py
+++ b/nova/virt/hyperv/driver.py
@@ -17,7 +17,7 @@
 A Hyper-V Nova Compute driver.
 """
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.virt import driver
 from nova.virt.hyperv import hostops
diff --git a/nova/virt/hyperv/imagecache.py b/nova/virt/hyperv/imagecache.py
index c4b86e2b6c3a..88eacb14fd1e 100644
--- a/nova/virt/hyperv/imagecache.py
+++ b/nova/virt/hyperv/imagecache.py
@@ -20,8 +20,8 @@ import os
 from oslo.config import cfg
 
 from nova.compute import flavors
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import units
 from nova import utils
diff --git a/nova/virt/hyperv/livemigrationops.py b/nova/virt/hyperv/livemigrationops.py
index d8bc81e7f1a2..5411967498df 100644
--- a/nova/virt/hyperv/livemigrationops.py
+++ b/nova/virt/hyperv/livemigrationops.py
@@ -20,8 +20,8 @@ import functools
 
 from oslo.config import cfg
 
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.virt.hyperv import imagecache
 from nova.virt.hyperv import utilsfactory
diff --git a/nova/virt/hyperv/livemigrationutils.py b/nova/virt/hyperv/livemigrationutils.py
index 219b4e10cacf..579965897edf 100644
--- a/nova/virt/hyperv/livemigrationutils.py
+++ b/nova/virt/hyperv/livemigrationutils.py
@@ -19,7 +19,7 @@ if sys.platform == 'win32':
     import wmi
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.virt.hyperv import vmutils
 from nova.virt.hyperv import vmutilsv2
diff --git a/nova/virt/hyperv/migrationops.py b/nova/virt/hyperv/migrationops.py
index e883fba1e6ee..31e3c101ccc9 100644
--- a/nova/virt/hyperv/migrationops.py
+++ b/nova/virt/hyperv/migrationops.py
@@ -18,8 +18,8 @@ Management class for migration / resize operations.
 """
 import os
 
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import units
 from nova.virt.hyperv import imagecache
diff --git a/nova/virt/hyperv/networkutils.py b/nova/virt/hyperv/networkutils.py
index 2b45343b8ac8..27571485cd12 100644
--- a/nova/virt/hyperv/networkutils.py
+++ b/nova/virt/hyperv/networkutils.py
@@ -23,7 +23,7 @@ import uuid
 if sys.platform == 'win32':
     import wmi
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.virt.hyperv import vmutils
 
 
diff --git a/nova/virt/hyperv/networkutilsv2.py b/nova/virt/hyperv/networkutilsv2.py
index c3ec6a349713..558f7c44cd8b 100644
--- a/nova/virt/hyperv/networkutilsv2.py
+++ b/nova/virt/hyperv/networkutilsv2.py
@@ -24,7 +24,7 @@ import sys
 if sys.platform == 'win32':
     import wmi
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.virt.hyperv import networkutils
 from nova.virt.hyperv import vmutils
 
diff --git a/nova/virt/hyperv/pathutils.py b/nova/virt/hyperv/pathutils.py
index 853281899d2f..02937689c6b9 100644
--- a/nova/virt/hyperv/pathutils.py
+++ b/nova/virt/hyperv/pathutils.py
@@ -18,7 +18,7 @@ import shutil
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova import utils
 
diff --git a/nova/virt/hyperv/snapshotops.py b/nova/virt/hyperv/snapshotops.py
index a103557579d6..0c604b46fc80 100644
--- a/nova/virt/hyperv/snapshotops.py
+++ b/nova/virt/hyperv/snapshotops.py
@@ -21,8 +21,8 @@ import os
 from oslo.config import cfg
 
 from nova.compute import task_states
+from nova.i18n import _
 from nova.image import glance
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.virt.hyperv import utilsfactory
 
diff --git a/nova/virt/hyperv/vhdutils.py b/nova/virt/hyperv/vhdutils.py
index a7c650272035..801533ba8011 100644
--- a/nova/virt/hyperv/vhdutils.py
+++ b/nova/virt/hyperv/vhdutils.py
@@ -31,7 +31,7 @@ if sys.platform == 'win32':
 
 from xml.etree import ElementTree
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.virt.hyperv import constants
 from nova.virt.hyperv import vmutils
 
diff --git a/nova/virt/hyperv/vhdutilsv2.py b/nova/virt/hyperv/vhdutilsv2.py
index 44a0f7663f23..8d865aac2433 100644
--- a/nova/virt/hyperv/vhdutilsv2.py
+++ b/nova/virt/hyperv/vhdutilsv2.py
@@ -26,7 +26,7 @@ if sys.platform == 'win32':
 
 from xml.etree import ElementTree
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import units
 from nova.virt.hyperv import constants
 from nova.virt.hyperv import vhdutils
diff --git a/nova/virt/hyperv/vmops.py b/nova/virt/hyperv/vmops.py
index ca5286d9f9d9..177696d6cba0 100644
--- a/nova/virt/hyperv/vmops.py
+++ b/nova/virt/hyperv/vmops.py
@@ -24,8 +24,8 @@ from oslo.config import cfg
 
 from nova.api.metadata import base as instance_metadata
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
diff --git a/nova/virt/hyperv/vmutils.py b/nova/virt/hyperv/vmutils.py
index e036ba89ff5d..1b71248d4e7c 100644
--- a/nova/virt/hyperv/vmutils.py
+++ b/nova/virt/hyperv/vmutils.py
@@ -28,7 +28,7 @@ if sys.platform == 'win32':
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.virt.hyperv import constants
 
diff --git a/nova/virt/hyperv/volumeops.py b/nova/virt/hyperv/volumeops.py
index 7b3b0598fbc2..1e9df559e288 100644
--- a/nova/virt/hyperv/volumeops.py
+++ b/nova/virt/hyperv/volumeops.py
@@ -22,8 +22,8 @@ import time
 from oslo.config import cfg
 
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.virt import driver
 from nova.virt.hyperv import utilsfactory
diff --git a/nova/virt/hyperv/volumeutils.py b/nova/virt/hyperv/volumeutils.py
index 2740da291139..ccd890daef4a 100644
--- a/nova/virt/hyperv/volumeutils.py
+++ b/nova/virt/hyperv/volumeutils.py
@@ -28,7 +28,7 @@ import time
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova import utils
 from nova.virt.hyperv import basevolumeutils
diff --git a/nova/virt/hyperv/volumeutilsv2.py b/nova/virt/hyperv/volumeutilsv2.py
index be97b1a4abbb..ae2a7f6b2e60 100644
--- a/nova/virt/hyperv/volumeutilsv2.py
+++ b/nova/virt/hyperv/volumeutilsv2.py
@@ -26,7 +26,7 @@ if sys.platform == 'win32':
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova import utils
 from nova.virt.hyperv import basevolumeutils
diff --git a/nova/virt/images.py b/nova/virt/images.py
index 23b2a5242697..fc6cd8423c46 100644
--- a/nova/virt/images.py
+++ b/nova/virt/images.py
@@ -24,9 +24,9 @@ import os
 from oslo.config import cfg
 
 from nova import exception
+from nova.i18n import _
 from nova import image
 from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import imageutils
 from nova.openstack.common import log as logging
 from nova import utils
diff --git a/nova/virt/libvirt/blockinfo.py b/nova/virt/libvirt/blockinfo.py
index 746bc6908fe7..27800eceedd8 100644
--- a/nova/virt/libvirt/blockinfo.py
+++ b/nova/virt/libvirt/blockinfo.py
@@ -77,8 +77,8 @@ from oslo.config import cfg
 from nova import block_device
 from nova.compute import flavors
 from nova import exception
+from nova.i18n import _
 from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
 from nova.virt import block_device as driver_block_device
 from nova.virt import configdrive
 from nova.virt import driver
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index 914ea95f7b7c..053b267acd9f 100644
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -56,16 +56,16 @@ from nova.compute import utils as compute_utils
 from nova.compute import vm_mode
 from nova import context as nova_context
 from nova import exception
+from nova.i18n import _
+from nova.i18n import _LE
+from nova.i18n import _LI
+from nova.i18n import _LW
 from nova import image
 from nova import objects
 from nova.objects import flavor as flavor_obj
 from nova.objects import service as service_obj
 from nova.openstack.common import excutils
 from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
-from nova.openstack.common.gettextutils import _LI
-from nova.openstack.common.gettextutils import _LW
 from nova.openstack.common import importutils
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
diff --git a/nova/virt/libvirt/firewall.py b/nova/virt/libvirt/firewall.py
index f36e7946ff83..f935c7163e44 100644
--- a/nova/virt/libvirt/firewall.py
+++ b/nova/virt/libvirt/firewall.py
@@ -18,8 +18,8 @@
 from oslo.config import cfg
 
 from nova.cloudpipe import pipelib
-from nova.openstack.common.gettextutils import _LI
-from nova.openstack.common.gettextutils import _LW
+from nova.i18n import _LI
+from nova.i18n import _LW
 from nova.openstack.common import log as logging
 import nova.virt.firewall as base_firewall
 from nova.virt import netutils
diff --git a/nova/virt/libvirt/imagebackend.py b/nova/virt/libvirt/imagebackend.py
index 4d73d536d185..4caf9e0001a1 100644
--- a/nova/virt/libvirt/imagebackend.py
+++ b/nova/virt/libvirt/imagebackend.py
@@ -21,10 +21,10 @@ from oslo.config import cfg
 import six
 
 from nova import exception
+from nova.i18n import _
+from nova.i18n import _LE
 from nova.openstack.common import excutils
 from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import units
diff --git a/nova/virt/libvirt/imagecache.py b/nova/virt/libvirt/imagecache.py
index 0542b431a488..7a3282f1ef75 100644
--- a/nova/virt/libvirt/imagecache.py
+++ b/nova/virt/libvirt/imagecache.py
@@ -28,10 +28,10 @@ import time
 
 from oslo.config import cfg
 
+from nova.i18n import _LE
+from nova.i18n import _LI
+from nova.i18n import _LW
 from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _LE
-from nova.openstack.common.gettextutils import _LI
-from nova.openstack.common.gettextutils import _LW
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
diff --git a/nova/virt/libvirt/lvm.py b/nova/virt/libvirt/lvm.py
index 0671a5086b57..1ef455eb8384 100644
--- a/nova/virt/libvirt/lvm.py
+++ b/nova/virt/libvirt/lvm.py
@@ -22,9 +22,9 @@
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
-from nova.openstack.common.gettextutils import _LW
+from nova.i18n import _
+from nova.i18n import _LE
+from nova.i18n import _LW
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
 from nova.openstack.common import units
diff --git a/nova/virt/libvirt/utils.py b/nova/virt/libvirt/utils.py
index 54ac1d3283c0..af0cd40f970c 100644
--- a/nova/virt/libvirt/utils.py
+++ b/nova/virt/libvirt/utils.py
@@ -25,9 +25,9 @@ import platform
 from lxml import etree
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LI
-from nova.openstack.common.gettextutils import _LW
+from nova.i18n import _
+from nova.i18n import _LI
+from nova.i18n import _LW
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
 from nova import utils
diff --git a/nova/virt/libvirt/vif.py b/nova/virt/libvirt/vif.py
index 2532e786cac7..1da2b35d3f08 100644
--- a/nova/virt/libvirt/vif.py
+++ b/nova/virt/libvirt/vif.py
@@ -22,11 +22,11 @@ import copy
 from oslo.config import cfg
 
 from nova import exception
+from nova.i18n import _
+from nova.i18n import _LE
+from nova.i18n import _LW
 from nova.network import linux_net
 from nova.network import model as network_model
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
-from nova.openstack.common.gettextutils import _LW
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
 from nova import utils
diff --git a/nova/virt/libvirt/volume.py b/nova/virt/libvirt/volume.py
index 1f4f85cb034c..cb5c6d97465e 100644
--- a/nova/virt/libvirt/volume.py
+++ b/nova/virt/libvirt/volume.py
@@ -26,9 +26,9 @@ import six
 import six.moves.urllib.parse as urlparse
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
-from nova.openstack.common.gettextutils import _LW
+from nova.i18n import _
+from nova.i18n import _LE
+from nova.i18n import _LW
 from nova.openstack.common import log as logging
 from nova.openstack.common import loopingcall
 from nova.openstack.common import processutils
diff --git a/nova/virt/storage_users.py b/nova/virt/storage_users.py
index 752f07efc068..58e7f58498fb 100644
--- a/nova/virt/storage_users.py
+++ b/nova/virt/storage_users.py
@@ -19,7 +19,7 @@ import time
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova import utils
 
diff --git a/nova/virt/vmwareapi/driver.py b/nova/virt/vmwareapi/driver.py
index 313ef5f87cf2..da690f53a74a 100644
--- a/nova/virt/vmwareapi/driver.py
+++ b/nova/virt/vmwareapi/driver.py
@@ -28,8 +28,7 @@ from oslo.config import cfg
 import suds
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LC
+from nova.i18n import _, _LC
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import loopingcall
diff --git a/nova/virt/vmwareapi/ds_util.py b/nova/virt/vmwareapi/ds_util.py
index cc76b9a70020..a91e732c553d 100644
--- a/nova/virt/vmwareapi/ds_util.py
+++ b/nova/virt/vmwareapi/ds_util.py
@@ -18,7 +18,7 @@ Datastore utility functions
 import posixpath
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.virt.vmwareapi import error_util
 from nova.virt.vmwareapi import vim_util
diff --git a/nova/virt/vmwareapi/error_util.py b/nova/virt/vmwareapi/error_util.py
index ba01c931d3b8..89ce19df16ec 100644
--- a/nova/virt/vmwareapi/error_util.py
+++ b/nova/virt/vmwareapi/error_util.py
@@ -17,7 +17,7 @@
 Exception classes and SOAP response error checking module.
 """
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/virt/vmwareapi/imagecache.py b/nova/virt/vmwareapi/imagecache.py
index 617c78833b46..11d300e13b23 100644
--- a/nova/virt/vmwareapi/imagecache.py
+++ b/nova/virt/vmwareapi/imagecache.py
@@ -37,7 +37,7 @@ This will ensure that a image is not deleted during the spawn.
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import lockutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
diff --git a/nova/virt/vmwareapi/io_util.py b/nova/virt/vmwareapi/io_util.py
index 5c79df8772f5..10132dfee0db 100644
--- a/nova/virt/vmwareapi/io_util.py
+++ b/nova/virt/vmwareapi/io_util.py
@@ -24,8 +24,8 @@ from eventlet import greenthread
 from eventlet import queue
 
 from nova import exception
+from nova.i18n import _
 from nova import image
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/nova/virt/vmwareapi/network_util.py b/nova/virt/vmwareapi/network_util.py
index 565c45db4cb2..20d9596ae614 100644
--- a/nova/virt/vmwareapi/network_util.py
+++ b/nova/virt/vmwareapi/network_util.py
@@ -19,7 +19,7 @@ Utility functions for ESX Networking.
 """
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.virt.vmwareapi import error_util
 from nova.virt.vmwareapi import vim_util
diff --git a/nova/virt/vmwareapi/vif.py b/nova/virt/vmwareapi/vif.py
index f611ccf20a5a..2c50b4a6946e 100644
--- a/nova/virt/vmwareapi/vif.py
+++ b/nova/virt/vmwareapi/vif.py
@@ -18,7 +18,7 @@
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.virt.vmwareapi import error_util
 from nova.virt.vmwareapi import network_util
diff --git a/nova/virt/vmwareapi/vim.py b/nova/virt/vmwareapi/vim.py
index f8eb76f20388..d4aa456c2b08 100644
--- a/nova/virt/vmwareapi/vim.py
+++ b/nova/virt/vmwareapi/vim.py
@@ -24,7 +24,7 @@ import urllib2
 from oslo.config import cfg
 import suds
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova import utils
 from nova.virt.vmwareapi import error_util
 
diff --git a/nova/virt/vmwareapi/vim_util.py b/nova/virt/vmwareapi/vim_util.py
index 313d35ffc7fe..e37c6cddf707 100644
--- a/nova/virt/vmwareapi/vim_util.py
+++ b/nova/virt/vmwareapi/vim_util.py
@@ -19,7 +19,7 @@ The VMware API utility module.
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 vmware_opts = cfg.IntOpt('maximum_objects', default=100,
diff --git a/nova/virt/vmwareapi/vm_util.py b/nova/virt/vmwareapi/vm_util.py
index f6e3e7adf2c7..7a60242b238e 100644
--- a/nova/virt/vmwareapi/vm_util.py
+++ b/nova/virt/vmwareapi/vm_util.py
@@ -24,8 +24,8 @@ import functools
 from oslo.config import cfg
 
 from nova import exception
+from nova.i18n import _
 from nova.network import model as network_model
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import units
 from nova import utils
diff --git a/nova/virt/vmwareapi/vmops.py b/nova/virt/vmwareapi/vmops.py
index 9d7093c7a4df..2c5b34523a28 100644
--- a/nova/virt/vmwareapi/vmops.py
+++ b/nova/virt/vmwareapi/vmops.py
@@ -32,8 +32,8 @@ from nova.compute import task_states
 from nova.compute import vm_states
 from nova import context as nova_context
 from nova import exception
+from nova.i18n import _, _LE
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _, _LE
 from nova.openstack.common import lockutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
diff --git a/nova/virt/vmwareapi/volumeops.py b/nova/virt/vmwareapi/volumeops.py
index c332402d82cb..6a5e1c579082 100644
--- a/nova/virt/vmwareapi/volumeops.py
+++ b/nova/virt/vmwareapi/volumeops.py
@@ -20,7 +20,7 @@ Management class for Storage-related functions (attach, detach, etc).
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.virt.vmwareapi import vim
 from nova.virt.vmwareapi import vim_util
diff --git a/nova/virt/xenapi/agent.py b/nova/virt/xenapi/agent.py
index df47d29810e5..00d9e27389d4 100644
--- a/nova/virt/xenapi/agent.py
+++ b/nova/virt/xenapi/agent.py
@@ -28,8 +28,8 @@ from nova.compute import utils as compute_utils
 from nova import context
 from nova import crypto
 from nova import exception
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
diff --git a/nova/virt/xenapi/client/session.py b/nova/virt/xenapi/client/session.py
index 139e1c184cf2..1dc5b4446e27 100644
--- a/nova/virt/xenapi/client/session.py
+++ b/nova/virt/xenapi/client/session.py
@@ -25,8 +25,8 @@ from oslo.config import cfg
 
 from nova import context
 from nova import exception
+from nova.i18n import _
 from nova import objects
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import versionutils
 from nova import utils
diff --git a/nova/virt/xenapi/driver.py b/nova/virt/xenapi/driver.py
index 77c962dddee1..9afab4d1a167 100644
--- a/nova/virt/xenapi/driver.py
+++ b/nova/virt/xenapi/driver.py
@@ -40,7 +40,7 @@ import math
 from oslo.config import cfg
 import six.moves.urllib.parse as urlparse
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import units
diff --git a/nova/virt/xenapi/fake.py b/nova/virt/xenapi/fake.py
index eabe139aec79..0c8e6935954d 100644
--- a/nova/virt/xenapi/fake.py
+++ b/nova/virt/xenapi/fake.py
@@ -57,7 +57,7 @@ from xml.sax import saxutils
 import zlib
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import timeutils
diff --git a/nova/virt/xenapi/host.py b/nova/virt/xenapi/host.py
index afa484a80c65..c842df8a7b1f 100644
--- a/nova/virt/xenapi/host.py
+++ b/nova/virt/xenapi/host.py
@@ -25,9 +25,9 @@ from nova.compute import task_states
 from nova.compute import vm_states
 from nova import context
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.objects import service as service_obj
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.pci import pci_whitelist
diff --git a/nova/virt/xenapi/image/bittorrent.py b/nova/virt/xenapi/image/bittorrent.py
index a77775d11366..d400feef5bb0 100644
--- a/nova/virt/xenapi/image/bittorrent.py
+++ b/nova/virt/xenapi/image/bittorrent.py
@@ -17,7 +17,7 @@ from oslo.config import cfg
 import pkg_resources
 import six.moves.urllib.parse as urlparse
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 import nova.openstack.common.log as logging
 from nova.virt.xenapi import vm_utils
 
diff --git a/nova/virt/xenapi/network_utils.py b/nova/virt/xenapi/network_utils.py
index cfa983fbcb99..d838f69886b6 100644
--- a/nova/virt/xenapi/network_utils.py
+++ b/nova/virt/xenapi/network_utils.py
@@ -19,7 +19,7 @@ their lookup functions.
 """
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 def find_network_with_name_label(session, name_label):
diff --git a/nova/virt/xenapi/pool.py b/nova/virt/xenapi/pool.py
index 9867dbad7282..f8d2e4f9271f 100644
--- a/nova/virt/xenapi/pool.py
+++ b/nova/virt/xenapi/pool.py
@@ -22,7 +22,7 @@ import six.moves.urllib.parse as urlparse
 
 from nova.compute import rpcapi as compute_rpcapi
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
 from nova.virt.xenapi import pool_states
diff --git a/nova/virt/xenapi/vif.py b/nova/virt/xenapi/vif.py
index a763718d3c08..74408cb3c360 100644
--- a/nova/virt/xenapi/vif.py
+++ b/nova/virt/xenapi/vif.py
@@ -19,7 +19,7 @@
 
 from oslo.config import cfg
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.virt.xenapi import network_utils
 from nova.virt.xenapi import vm_utils
 
diff --git a/nova/virt/xenapi/vm_utils.py b/nova/virt/xenapi/vm_utils.py
index a655b1dc8c17..e810b4a846db 100644
--- a/nova/virt/xenapi/vm_utils.py
+++ b/nova/virt/xenapi/vm_utils.py
@@ -37,9 +37,9 @@ from nova.compute import power_state
 from nova.compute import task_states
 from nova.compute import vm_mode
 from nova import exception
+from nova.i18n import _, _LI
 from nova.network import model as network_model
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _, _LI
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.openstack.common import processutils
diff --git a/nova/virt/xenapi/vmops.py b/nova/virt/xenapi/vmops.py
index c7db7ea99215..4338b520e244 100644
--- a/nova/virt/xenapi/vmops.py
+++ b/nova/virt/xenapi/vmops.py
@@ -35,9 +35,9 @@ from nova.compute import vm_mode
 from nova.compute import vm_states
 from nova import context as nova_context
 from nova import exception
+from nova.i18n import _
 from nova import objects
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import importutils
 from nova.openstack.common import jsonutils
 from nova.openstack.common import log as logging
diff --git a/nova/virt/xenapi/volume_utils.py b/nova/virt/xenapi/volume_utils.py
index d1a01d58f2b3..96b261a17889 100644
--- a/nova/virt/xenapi/volume_utils.py
+++ b/nova/virt/xenapi/volume_utils.py
@@ -25,7 +25,7 @@ from eventlet import greenthread
 from oslo.config import cfg
 
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 
 xenapi_volume_utils_opts = [
diff --git a/nova/virt/xenapi/volumeops.py b/nova/virt/xenapi/volumeops.py
index 5eb28165afa7..70adbbb68353 100644
--- a/nova/virt/xenapi/volumeops.py
+++ b/nova/virt/xenapi/volumeops.py
@@ -18,8 +18,8 @@ Management class for Storage-related functions (attach, detach, etc).
 """
 
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 from nova.virt.xenapi import vm_utils
 from nova.virt.xenapi import volume_utils
diff --git a/nova/vnc/xvp_proxy.py b/nova/vnc/xvp_proxy.py
index 5ab95c63a014..038d2c467584 100644
--- a/nova/vnc/xvp_proxy.py
+++ b/nova/vnc/xvp_proxy.py
@@ -27,7 +27,7 @@ import webob
 
 from nova.consoleauth import rpcapi as consoleauth_rpcapi
 from nova import context
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova import version
 from nova import wsgi
diff --git a/nova/volume/cinder.py b/nova/volume/cinder.py
index 2ba00aa81121..87ad68f57d69 100644
--- a/nova/volume/cinder.py
+++ b/nova/volume/cinder.py
@@ -28,7 +28,7 @@ from oslo.config import cfg
 
 from nova import availability_zones as az
 from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import log as logging
 from nova.openstack.common import strutils
 
diff --git a/nova/volume/encryptors/__init__.py b/nova/volume/encryptors/__init__.py
index 79879d2a2359..8c87a9e7682d 100644
--- a/nova/volume/encryptors/__init__.py
+++ b/nova/volume/encryptors/__init__.py
@@ -14,7 +14,7 @@
 #    under the License.
 
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 from nova.openstack.common import importutils
 from nova.openstack.common import log as logging
 from nova.volume.encryptors import nop
diff --git a/nova/wsgi.py b/nova/wsgi.py
index f538bcd771ff..4f9a95bd9cb1 100644
--- a/nova/wsgi.py
+++ b/nova/wsgi.py
@@ -34,8 +34,8 @@ import webob.dec
 import webob.exc
 
 from nova import exception
+from nova.i18n import _
 from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
 from nova.openstack.common import log as logging
 
 wsgi_opts = [
diff --git a/requirements.txt b/requirements.txt
index 6949d82614e9..2d9ab4cab1f4 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -34,3 +34,4 @@ oslo.config>=1.2.1
 oslo.rootwrap
 pycadf>=0.5.1
 oslo.messaging>=1.3.0
+oslo.i18n>=0.1.0
diff --git a/tools/db/schema_diff.py b/tools/db/schema_diff.py
index 9e88f4f22c3e..9e441f4834e7 100755
--- a/tools/db/schema_diff.py
+++ b/tools/db/schema_diff.py
@@ -49,7 +49,7 @@ import os
 import subprocess
 import sys
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 ### Dump
diff --git a/tools/esx/guest_tool.py b/tools/esx/guest_tool.py
index 4c830b05d41e..c472d6cbb11c 100644
--- a/tools/esx/guest_tool.py
+++ b/tools/esx/guest_tool.py
@@ -28,7 +28,7 @@ import subprocess
 import sys
 import time
 
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
 
 
 PLATFORM_WIN = 'win32'
diff --git a/tox.ini b/tox.ini
index daeebd56d2b9..61e16ea0b036 100644
--- a/tox.ini
+++ b/tox.ini
@@ -66,4 +66,4 @@ exclude =  .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,t
 
 [hacking]
 local-check-factory = nova.hacking.checks.factory
-import_exceptions = nova.openstack.common.gettextutils
+import_exceptions = nova.i18n