[ English | Indonesia | 中文 (简体, 中国) | English (United Kingdom) | 한국어 (대한민국) | Deutsch | русский | 日本語 ]

How to check translations

It is important to validate your translations by applying them in a real situation where they are rendered and visualised. This page describes how to check your translations.


translation check refers to build OpenStack artifacts with translated strings and check how the translated strings are shown on an actual screen as part of the translation process.


Translated documents are available at the OpenStack Documentation site. It is updated daily. Most contents are linked from:

The documents are maintained in the doc directory using reStructuredText and built by Sphinx. Translated strings are stored as Gettext PO file format in locale/<lang>/LC_MESSAGES directory.

Documents on openstack-manuals

For OpenStack documentation, openstack-manuals git repository hosts essential OpenStack documents such as Installation Guide, and Virtual Machine Image Guide.

To build a translated document on this repository, you need to update the file doc-tools-check-languages.conf in each repository, and add an entry to BOOKS like ["ja"]="install-guide".

For a document in a stable branch, such as the installation guide for Liberty, you need to update the file doc-tools-check-languages.conf in the target stable branch directly.

You can check a generated document for a specified branch on https://docs.openstack.org/<branch>/<language>/<document>. For example, the link of Japanese Ubuntu Installation Guide for Liberty is https://docs.openstack.org/liberty/ja/install-guide-ubuntu/.

To add a link to a generated document, you need to update the file www/<lang>/index.html in the master branch of the openstack-manuals repository. Note that the web pages are published from master branch, which contains the pages for all releases, such as Liberty. Therefore, you don’t need to update the file www/<lang>/index.html in the stable branch.

You can also check:

OpenStack project documentation

Currently, we support translations for small set of OpenStack project documentations like Horizon, OpenStack-Ansible, and OpenStack-Helm upon requests and available bandwidth. Top-level directory structure on doc/source/ follows with Documentation Contributor Guide - Project guide setup and the corresponding generated documents for master branch are available at https://docs.openstack.org/<project>/latest/<language>/<document> URL. For project team documents in stable branch, you can check the documents with https://docs.openstack.org/<project>/<branch>/<language>/<document> URL.

Here are sample document links as examples:

OpenStack Dashboard

Running OpenStack-Ansible

OpenStack-Ansible (OSA) provides Ansible playbooks and roles for the deployment and configuration of an OpenStack environment. As part of the project a feature named ‘Translation Check Site’ is developed. An OSA instance will fetch translation strings from translation platform, compile and serve these strings in Horizon. You need a machine with two or four CPU cores, at least 8 GB memory and 70 GB disk to run OSA.

$ BRANCH=master
$ git clone -b ${BRANCH} https://github.com/openstack/openstack-ansible /opt/openstack-ansible
$ cd /opt/openstack-ansible
$ ./scripts/gate-check-commit.sh translations

You can set the components of your AIO installation in tests/vars/bootstrap-aio-vars.yml. Dependly on your environment the installation takes 1-2 hours. For more details on the AIO configuration, please see OSA AIO documentation.

To fetch translated files regularly, execute this command manually or as a cron:

$ cd /opt/openstack-ansible/playbooks; \
  openstack-ansible os-horizon-install.yml \
  -e horizon_translations_update=True \
  -e horizon_translations_project_version=master \
  --tags "horizon-config"

Running DevStack

Another convenient way is to check dashboard translations is to run DevStack in your local environment. To run DevStack, you need to prepare local.conf file, but no worries. Several local.conf files are shared on the Internet and a minimum example is shown below. From our experience, you need a machine with two or four CPU cores, 8 GB memory and 20 GB disk to run DevStack comfortably. If you enable just major OpenStack projects, the machine requirement would be much smaller like 2~4GB memory.

$ BRANCH=master
$ git clone https://opendev.org/openstack/devstack.git
$ cd devstack
$ git checkout $BRANCH
<prepare local.conf>
$ ./stack.sh
<wait and wait... it takes 20 or 30 minutes>

Replace $BRANCH with an appropriate branch such as master, stable/newton or stable/mitaka.

The following is an example of local.conf for Newton release which runs core components (keystone, nova, glance, neutron, cinder), horizon, swift and heat. The components which the main horizon code supports are chosen.

# NOTE: We need to specify a branch explicitly until DevStack stable branch
# is prepared. At now, swift has no stable/newton branch.

# When OS_CLOUD envvar is set, DevStack will be confused.
unset OS_CLOUD

# Ensure to fetch the latest repository when rerunning DevStack

# Translation check site usually does not use tempest.
disable_service tempest

enable_service heat h-api h-api-cfn h-api-cw h-eng
enable_service s-proxy s-object s-container s-account

enable_plugin neutron https://git.openstack.org/openstack/neutron $BRANCH
enable_service q-qos

enable_plugin neutron-vpnaas https://git.openstack.org/openstack/neutron-vpnaas $BRANCH

SCREEN_HARDSTATUS="%{= rw} %H %{= wk} %L=%-w%{= bw}%30L> %n%f %t*%{= wk}%+Lw%-17< %-=%{= gk} %y/%m    /%d %c"


Import latest translations

Translations are being imported into a project repository daily, so in most cases you do not need to pull translations from Zanata manually. What you need is to pull the latest horizon code.

If you have a machine running DevStack, there are two ways.

One way is to update the Horizon code only. The following shell script fetches the latest horizon code, compiles translation message catalogs and reloads the apache httpd server. Replace $BRANCH with an appropriate branch such as master, stable/newton or stable/mitaka.


# Target branch: master, stable/pike, ...

cd /opt/stack/horizon

# Remove stale compiled python files
find horizon -name '*.pyc' | xargs rm
find openstack_dashboard -name '*.pyc' | xargs rm

# Fetch the latest code from git
git checkout $BRANCH
git remote update origin
git merge origin/$BRANCH

python manage.py compilemessages
python manage.py collectstatic --noinput
python manage.py compress --force
sudo service apache2 reload

The other way is to rerun DevStack. Ensure to include RECLONE=True in your local.conf before running stack.sh again so that DevStack retrieve the latest codes of horizon and other projects.

$ cd devstack
$ ./unstack.sh
<Ensure RECLONE=True in your local.conf>
$ ./stack.sh
<It takes 10 or 15 minutes>

CLI (command line interface)


Server projects