Translation setup for sahara-dashboard
In Liberty, sahara-dashboard supports translations, but does not now. Once this patch is merged, we can enable the infra tranlation jobs. * Prepare babel-{django|djangojs}.cfg so that the infra script extracts message catalogs [1] * Update devstack plugin to compile message catalogs * Remove babel related entries in setup.cfg because it does not work for horizon plugins. Babel does not support message extraction for multiple domains. * Create symlink sahara_dashboard/content/data_processing/locale (which points to sahara_dashboard/locale) The infra translation script assumes <modulename>/locale as locale dir. On the other hand, sahara dashboard registers "sahara_dashboard.content.data_processing" in INSTALLED_APPS. Django search locale data from <apps>/locale for each INSTALLED_APPS. Thus this symlink is required to make translation work. Note that I am not sure why sahara dashboard uses "sahara_dashboard.content.data_processing" as INSTALLED_APPS unlike other horizon related projects, but it needs more investigation and this patch does not touch it at the moment. [1] http://docs.openstack.org/infra/manual/creators.html#enabling-translation-infrastructure Change-Id: I93609a1af08b5a6f64fc43c16722f4c759f68302
This commit is contained in:
parent
ecdd89583a
commit
9af1c5660b
5
babel-django.cfg
Normal file
5
babel-django.cfg
Normal file
@ -0,0 +1,5 @@
|
||||
[extractors]
|
||||
django = django_babel.extract:extract_django
|
||||
|
||||
[python: **.py]
|
||||
[django: **/templates/**.html]
|
14
babel-djangojs.cfg
Normal file
14
babel-djangojs.cfg
Normal file
@ -0,0 +1,14 @@
|
||||
[extractors]
|
||||
# We use a custom extractor to find translatable strings in AngularJS
|
||||
# templates. The extractor is included in horizon.utils for now.
|
||||
# See http://babel.pocoo.org/docs/messages/#referencing-extraction-methods for
|
||||
# details on how this works.
|
||||
angular = horizon.utils.babel_extract_angular:extract_angular
|
||||
|
||||
[javascript: **.js]
|
||||
|
||||
# We need to look into all static folders for HTML files.
|
||||
# The **/static ensures that we also search within
|
||||
# /openstack_dashboard/dashboards/XYZ/static which will ensure
|
||||
# that plugins are also translated.
|
||||
[angular: **/static/**.html]
|
@ -8,6 +8,16 @@ function install_sahara_dashboard {
|
||||
|
||||
function configure_sahara_dashboard {
|
||||
cp -a ${SAHARA_DASH_DIR}/sahara_dashboard/enabled/* ${DEST}/horizon/openstack_dashboard/local/enabled/
|
||||
# compile message catalogs
|
||||
# NOTE: "python manage.py compilemessages does not work"
|
||||
# so we compile translation catalogs directly.
|
||||
if [ -d sahara_dashboard/locale ]; then
|
||||
for domain in django djangojs; do
|
||||
if find sahara_dashboard/locale -type f | grep -q "${domain}.po$"; then
|
||||
pybabel compile -D ${domain} -d sahara_dashboard/locale
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
# check for service enabled
|
||||
|
1
sahara_dashboard/content/data_processing/locale
Symbolic link
1
sahara_dashboard/content/data_processing/locale
Symbolic link
@ -0,0 +1 @@
|
||||
../../locale
|
14
setup.cfg
14
setup.cfg
@ -30,17 +30,3 @@ all_files = 1
|
||||
|
||||
[upload_sphinx]
|
||||
upload-dir = doc/build/html
|
||||
|
||||
[compile_catalog]
|
||||
directory = sahara_dashboard/locale
|
||||
domain = sahara-dashboard
|
||||
|
||||
[update_catalog]
|
||||
domain = sahara-dashboard
|
||||
output_dir = sahara_dashboard/locale
|
||||
input_file = sahara_dashboard/locale/sahara_dashboard.pot
|
||||
|
||||
[extract_messages]
|
||||
keywords = _ gettext ngettext l_ lazy_gettext
|
||||
mapping_file = babel.cfg
|
||||
output_file = sahara_dashboard/locale/sahara_dashboard.pot
|
||||
|
Loading…
Reference in New Issue
Block a user