From 94e90c77d0bd141d2a068c50ce02207ee87bef3b Mon Sep 17 00:00:00 2001 From: Boris Bobrov Date: Sun, 7 Dec 2014 20:54:16 +0300 Subject: Added facilities for Pootle. Previously we used Transifex as a web-tool for translations. Some time ago Transifex went proprietary and we decided to move to Pootle. Old script for updating translations was renamed and a new one was added. Also a script for making the layout more Pootle-friendly was added. To accomplish the transition first run the old script: ./devtools/update_translations_transifex.sh Then run the layout changing script: ./devtools/move_translations_for_pootle.sh Commit and push. After that use the new ./devtools/update_translations_pootle.sh to update the translations. Closes bug: #913 --- devtools/move_translations_for_pootle.sh | 31 +++++++++++++ devtools/update_translations.sh | 73 ------------------------------- devtools/update_translations_pootle.sh | 42 ++++++++++++++++++ devtools/update_translations_transifex.sh | 73 +++++++++++++++++++++++++++++++ 4 files changed, 146 insertions(+), 73 deletions(-) create mode 100755 devtools/move_translations_for_pootle.sh delete mode 100755 devtools/update_translations.sh create mode 100755 devtools/update_translations_pootle.sh create mode 100755 devtools/update_translations_transifex.sh (limited to 'devtools') diff --git a/devtools/move_translations_for_pootle.sh b/devtools/move_translations_for_pootle.sh new file mode 100755 index 00000000..b80d4e15 --- /dev/null +++ b/devtools/move_translations_for_pootle.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011, 2012 GNU MediaGoblin contributors. See AUTHORS. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +# exit if anything fails +set -e + +# move the files to Pootle-friendly layout +for lang in $(ls mediagoblin/i18n/); do + from="mediagoblin/i18n/$lang/LC_MESSAGES/mediagoblin.po" + to="mediagoblin/i18n/$lang/mediagoblin.po" + git mv $from $to +done + +# english is not required and is Pootle's "template" now +mkdir mediagoblin/i18n/templates/ +git mv mediagoblin/i18n/en/ mediagoblin/i18n/templates/ diff --git a/devtools/update_translations.sh b/devtools/update_translations.sh deleted file mode 100755 index d82fab1f..00000000 --- a/devtools/update_translations.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash - -# GNU MediaGoblin -- federated, autonomous media hosting -# Copyright (C) 2011, 2012 GNU MediaGoblin contributors. See AUTHORS. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# exit if anything fails -set -e - -echo "==> checking out master" -git checkout master - -echo "==> pulling git master" -git pull - -echo "==> pulling present translations" -./bin/tx pull -a - -git add mediagoblin/i18n/ -git commit -m "Committing present MediaGoblin translations before pushing extracted messages" \ - || true # Don't fail if nothing to commit - -echo "==> Extracting translations" -./bin/pybabel extract -F babel.ini -o mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po . - -echo "==> Pushing extracted translations to Transifex" -./bin/tx push -s - -echo "==> Waiting 5 seconds, so the server can process the new stuff (hopefully)" -sleep 5 - -# gets the new strings added to all files -echo "==> Re-Pulling translations from Transifex" -./bin/tx pull -a - -echo "==> Compiling .mo files" - -## This used to be a lot simpler: -# ./bin/pybabel compile -D mediagoblin -d mediagoblin/i18n/ - -## But now we have a Lojban translation that we can't compile -## currently. We don't want to get rid of it because we want it... see -## https://issues.mediagoblin.org/ticket/1070 -## to track progress. - -for file in `find mediagoblin/i18n/ -name "*.po"`; do - if [ "$file" != "mediagoblin/i18n/jbo/LC_MESSAGES/mediagoblin.po" ]; then - ./bin/pybabel compile -i $file \ - -o `dirname $file`/mediagoblin.mo \ - -l `echo $file | awk -F / '{ print $3 }'`; - else - echo "Skipping $file which pybabel can't compile :("; - fi; -done - -echo "==> Committing to git" -git add mediagoblin/i18n/ - -git commit -m "Committing extracted and compiled translations" || true - -echo "... done. Now consider pushing up those commits!" diff --git a/devtools/update_translations_pootle.sh b/devtools/update_translations_pootle.sh new file mode 100755 index 00000000..161f1acd --- /dev/null +++ b/devtools/update_translations_pootle.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011, 2012 GNU MediaGoblin contributors. See AUTHORS. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +# exit if anything fails +set -e + +echo "==> checking out master" +git checkout master + +echo "==> pulling git master" +git pull + +echo "==> pulling present translations" +rsync -vaz chapters.gnu.org::pootle/mediagoblin/ mediagoblin/i18n/ + +echo "==> Extracting translations" +./bin/pybabel extract -F babel.ini -o mediagoblin/i18n/templates/mediagoblin.pot . + +echo "==> Compiling .mo files" +./bin/pybabel compile -D mediagoblin -d mediagoblin/i18n/ + +echo "==> Committing to git" +git add mediagoblin/i18n/ + +git commit -m "Committing extracted and compiled translations" || true + +echo "... done. Now consider pushing up those commits!" diff --git a/devtools/update_translations_transifex.sh b/devtools/update_translations_transifex.sh new file mode 100755 index 00000000..d82fab1f --- /dev/null +++ b/devtools/update_translations_transifex.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011, 2012 GNU MediaGoblin contributors. See AUTHORS. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +# exit if anything fails +set -e + +echo "==> checking out master" +git checkout master + +echo "==> pulling git master" +git pull + +echo "==> pulling present translations" +./bin/tx pull -a + +git add mediagoblin/i18n/ +git commit -m "Committing present MediaGoblin translations before pushing extracted messages" \ + || true # Don't fail if nothing to commit + +echo "==> Extracting translations" +./bin/pybabel extract -F babel.ini -o mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po . + +echo "==> Pushing extracted translations to Transifex" +./bin/tx push -s + +echo "==> Waiting 5 seconds, so the server can process the new stuff (hopefully)" +sleep 5 + +# gets the new strings added to all files +echo "==> Re-Pulling translations from Transifex" +./bin/tx pull -a + +echo "==> Compiling .mo files" + +## This used to be a lot simpler: +# ./bin/pybabel compile -D mediagoblin -d mediagoblin/i18n/ + +## But now we have a Lojban translation that we can't compile +## currently. We don't want to get rid of it because we want it... see +## https://issues.mediagoblin.org/ticket/1070 +## to track progress. + +for file in `find mediagoblin/i18n/ -name "*.po"`; do + if [ "$file" != "mediagoblin/i18n/jbo/LC_MESSAGES/mediagoblin.po" ]; then + ./bin/pybabel compile -i $file \ + -o `dirname $file`/mediagoblin.mo \ + -l `echo $file | awk -F / '{ print $3 }'`; + else + echo "Skipping $file which pybabel can't compile :("; + fi; +done + +echo "==> Committing to git" +git add mediagoblin/i18n/ + +git commit -m "Committing extracted and compiled translations" || true + +echo "... done. Now consider pushing up those commits!" -- cgit v1.2.3