Translation job scripts support multiple python modules

At now, horizon repo has two python modules and we have
special handling in the translation job scripts.
This commit handles multiple python modules per repository
and locale directory will be prepared per python module.

After this we no longer need to have dedicated functions
for horizon.

Change-Id: Id32fbf37489c0056e5d7722fc3e7c71a95213e08
This commit is contained in:
Akihiro Motoki 2016-02-16 22:57:44 +09:00
parent 8aa39b8d06
commit 2ce411f7f6
4 changed files with 57 additions and 80 deletions

View File

@ -34,33 +34,29 @@ function get_modulename {
-p $project -t $target
}
# Setup a project for Zanata. This is used by both Python and Django
# projects.
# Setup a project for Zanata. This is used by both Python and Django projects.
# syntax: setup_project <project> <zanata_version> <modulename> [<modulename> ...]
function setup_project {
local project=$1
local modulename=$2
local version=${3:-master}
/usr/local/jenkins/slave_scripts/create-zanata-xml.py \
-p $project -v $version --srcdir $modulename/locale \
--txdir $modulename/locale -r '**/*.pot' \
'{locale_with_underscore}/LC_MESSAGES/{filename}.po' -f zanata.xml
local version=$2
shift 2
# All argument(s) contain module names now.
if [ $# -eq 1 ]; then
local modulename=$1
/usr/local/jenkins/slave_scripts/create-zanata-xml.py \
-p $project -v $version --srcdir $modulename/locale \
--txdir $modulename/locale \
-r '**/*.pot' '{locale_with_underscore}/LC_MESSAGES/{filename}.po' \
-f zanata.xml
else
/usr/local/jenkins/slave_scripts/create-zanata-xml.py \
-p $project -v $version --srcdir . --txdir . \
-r '**/*.pot' '{path}/{locale_with_underscore}/LC_MESSAGES/{filename}.po' \
-f zanata.xml
fi
}
# Setup project horizon for Zanata
function setup_horizon {
local project=horizon
local version=${1:-master}
/usr/local/jenkins/slave_scripts/create-zanata-xml.py -p $project \
-v $version --srcdir . --txdir . -r './horizon/locale/*.pot' \
'horizon/locale/{locale_with_underscore}/LC_MESSAGES/{filename}.po' \
-r './openstack_dashboard/locale/*.pot' \
'openstack_dashboard/locale/{locale_with_underscore}/LC_MESSAGES/{filename}.po' \
-e '.*/**' -f zanata.xml
}
# Set global variable DocFolder for manuals projects
function init_manuals {
project=$1

View File

@ -20,10 +20,11 @@ import os
import sys
DJANGO_PROJECT_SUFFIXES = ('-dashboard',
'-horizon',
'-ui',
'django_openstack_auth',
DJANGO_PROJECT_SUFFIXES = (
'-dashboard',
'horizon', # to match horizon and *-horizon
'-ui',
'django_openstack_auth',
)
@ -100,13 +101,13 @@ def main():
if 'openstack_translations' in config:
translate_options = get_translate_options(config, args.target)
return translate_options
print(' '.join(translate_options))
return
modules = get_valid_modules(config, args.project, args.target)
# A shortest module name is selected now.
if modules:
print(sorted(modules, key=len)[0])
print(' '.join(modules))
if __name__ == '__main__':
main()

View File

@ -74,11 +74,7 @@ function propose_training_guides {
# Propose updates for python projects
function propose_python {
local project=$1
local modulename=$2
# Pull updated translations from Zanata
pull_from_zanata "$project"
local modulename=$1
# Extract all messages from project, including log messages.
extract_messages "$modulename"
@ -102,29 +98,9 @@ function propose_python {
git add $modulename/locale/
}
function propose_horizon {
# Pull updated translations from Zanata.
pull_from_zanata "$PROJECT"
# Invoke run_tests.sh to update the po files
# Or else, "../manage.py makemessages" can be used.
./run_tests.sh --makemessages -V
# Compress downloaded po files
compress_po_files "horizon"
compress_po_files "openstack_dashboard"
# Add all changed files to git
git add horizon/locale/ openstack_dashboard/locale/
}
# This function can be used for all django projects
function propose_django {
local project=$1
local modulename=$2
# Pull updated translations from Zanata.
pull_from_zanata "$project"
local modulename=$1
# Update the .pot file
extract_messages_django "$modulename"
@ -152,25 +128,29 @@ case "$PROJECT" in
setup_training_guides "$ZANATA_VERSION"
propose_training_guides
;;
horizon)
setup_horizon "$ZANATA_VERSION"
propose_horizon
;;
*)
# Common setup for python and django repositories
# ---- Python projects ----
MODULENAME=$(get_modulename $PROJECT python)
if [ -n "$MODULENAME" ]; then
setup_project "$PROJECT" "$MODULENAME" "$ZANATA_VERSION"
module_names=$(get_modulename $PROJECT python)
if [ -n "$module_names" ]; then
setup_project "$PROJECT" "$ZANATA_VERSION" $module_names
setup_loglevel_vars
propose_python "$PROJECT" "$MODULENAME"
# Pull updated translations from Zanata
pull_from_zanata "$PROJECT"
for modulename in $module_names; do
propose_python "$modulename"
done
fi
# ---- Django projects ----
MODULENAME=$(get_modulename $PROJECT django)
if [ -n "$MODULENAME" ]; then
setup_project "$PROJECT" "$MODULENAME" "$ZANATA_VERSION"
propose_django "$PROJECT" "$MODULENAME"
module_names=$(get_modulename $PROJECT django)
if [ -n "$module_names" ]; then
setup_project "$PROJECT" "$ZANATA_VERSION" $module_names
# Pull updated translations from Zanata.
pull_from_zanata "$PROJECT"
for modulename in $module_names; do
propose_django "$modulename"
done
fi
;;
esac

View File

@ -40,26 +40,26 @@ case "$PROJECT" in
training-guides)
setup_training_guides "$ZANATA_VERSION"
;;
horizon)
setup_horizon "$ZANATA_VERSION"
./run_tests.sh --makemessages -V
;;
*)
# Common setup for python and django repositories
# ---- Python projects ----
MODULENAME=$(get_modulename $PROJECT python)
if [ -n "$MODULENAME" ]; then
setup_project "$PROJECT" "$MODULENAME" "$ZANATA_VERSION"
module_names=$(get_modulename $PROJECT python)
if [ -n "$module_names" ]; then
setup_project "$PROJECT" "$ZANATA_VERSION" $module_names
setup_loglevel_vars
extract_messages "$MODULENAME"
extract_messages_log "$MODULENAME"
for modulename in $module_names; do
extract_messages "$modulename"
extract_messages_log "$modulename"
done
fi
# ---- Django projects ----
MODULENAME=$(get_modulename $PROJECT django)
if [ -n "$MODULENAME" ]; then
setup_project "$PROJECT" "$MODULENAME" "$ZANATA_VERSION"
extract_messages_django "$MODULENAME"
module_names=$(get_modulename $PROJECT django)
if [ -n "$module_names" ]; then
setup_project "$PROJECT" "$ZANATA_VERSION" $module_names
for modulename in $module_names; do
extract_messages_django "$modulename"
done
fi
;;
esac