diff --git a/translations-app/handleAppTranslations.sh b/translations-app/handleAppTranslations.sh
index 10ef3e83..42815fea 100755
--- a/translations-app/handleAppTranslations.sh
+++ b/translations-app/handleAppTranslations.sh
@@ -9,13 +9,27 @@ gpg --allow-secret-key-import --import /gpg/nextcloud-bot.asc
gpg --list-keys
# fetch git repo
-git clone git@github.com:$1/$2 /app
+git clone git@github.com:$1/$2 /app/default --depth 1
-if [ ! -f '/app/.tx/config' ]; then
+cd default
+
+if [ ! -f '.tx/config' ]; then
echo "Missing transifex configuration file .tx/config"
exit 1
fi
+##################################
+# Migrate the transifex config to the new client version
+##################################
+tx migrate
+git add --force .tx/config
+rm .tx/config_*
+git commit -am "fix(l10n): Update Transifex configuration" -s || true
+git push
+
+##################################
+# Validate sync setup
+##################################
APP_ID=$(grep -oE '.*' appinfo/info.xml | head --lines 1 | sed -E 's/(.*)<\/id>/\1/')
IS_EX_APP=$(grep -q '' appinfo/info.xml && grep -q '' appinfo/info.xml && echo "true" || echo "false")
RESOURCE_ID=$(grep -oE '\[o:nextcloud:p:nextcloud:r:.*\]' .tx/config | sed -E 's/\[o:nextcloud:p:nextcloud:r:(.*)\]/\1/')
@@ -31,32 +45,36 @@ if [ "$RESOURCE_ID" = "talk_desktop" ]; then
APP_ID="talk_desktop"
fi
-# TODO use build/l10nParseAppInfo.php to fetch app names for l10n
-
versions='main master stable31 stable30'
-if [ -f '/app/.tx/backport' ]; then
- versions="main master $(cat /app/.tx/backport)"
+if [ -f '.tx/backport' ]; then
+ versions="main master $(cat .tx/backport)"
fi
-# build POT files for all versions
mkdir stable-templates
+mkdir -p translationfiles/templates/
+
+##################################
+# Clone backport branches
+##################################
+# Don't fail on checking out non existing branches
+set +e
+for version in $versions
+do
+ git clone git@github.com:$1/$2 /app/$version --depth 1 --branch $version
+done
+set -e
+
+##################################
+# Build POT files for all versions
+##################################
for version in $versions
do
- # skip if the branch doesn't exist
- if git branch -r | egrep "^\W*origin/$version$" ; then
- echo "Valid branch: $version"
- else
- echo "Invalid branch: $version"
+ if [ ! -d /app/$version ]; then
+ # skip if the branch doesn't exist
continue
fi
- git checkout $version
- # Migrate the transifex config to the new client version
- tx migrate
- git add --force .tx/config
- rm .tx/config_*
- git commit -am "fix(l10n): Update Transifex configuration" -s || true
- git push
+ cd /app/$version
# build POT files
/translationtool.phar create-pot-files
@@ -65,11 +83,17 @@ do
for file in $(ls)
do
FILE_SAVE_VERSION=$(echo $version | sed -E 's/\//-/')
- mv $file ../../stable-templates/$FILE_SAVE_VERSION.$RESOURCE_ID.pot
+ mv $file /app/default/stable-templates/$FILE_SAVE_VERSION.$RESOURCE_ID.pot
done
cd ../..
done
+
+##################################
+# Sync with transifex
+##################################
+cd /app/default
+
# merge POT files into one
for file in $(ls stable-templates/master.*)
do
@@ -92,6 +116,9 @@ tx push -s
# pull translations - force pull because a fresh clone has newer time stamps
tx pull -f -a --minimum-perc=5
+# delete removed l10n files that are used for language detection (they will be recreated during the write)
+rm -f l10n/*.js l10n/*.json
+
# Copy back the po files from transifex resource id to app id
if [ "$RESOURCE_ID" = "$APP_ID" ] ; then
echo 'App id and transifex resource id are the same, not renaming po files …'
@@ -112,34 +139,33 @@ else
done
fi
+# build JS/JSON based on translations
+/translationtool.phar convert-po-files
+
+##################################
+# Add translations to branches again
+##################################
for version in $versions
do
- # skip if the branch doesn't exist
- if git branch -r | egrep "^\W*origin/$version$" ; then
- echo "Valid branch"
- else
- echo "Invalid branch"
+ if [ ! -d /app/$version ]; then
+ # skip if the branch doesn't exist
continue
fi
- git checkout $version
+
+ cd /app/$version
# delete removed l10n files that are used for language detection (they will be recreated during the write)
rm -f l10n/*.js l10n/*.json
- # build JS/JSON based on translations
- /translationtool.phar convert-po-files
-
- if [ -d tests ]; then
- # remove tests/
- rm -rf tests
- git checkout -- tests/
- fi
+ # Copy JS and JSON
+ cp /app/default/l10n/*.js /app/default/l10n/*.json l10n
# create git commit and push it
git add l10n/*.js l10n/*.json
# for ExApps, we need to include .po translation files as well
if [ "$IS_EX_APP" = "true" ]; then
+ cp /app/default/translationfiles/*.po translationfiles
git add translationfiles/*.po
fi
@@ -152,5 +178,8 @@ done
# End of verbose mode
set +xe
-/validateTranslationFiles.sh
+##################################
+# Validate translations
+##################################
+/validateTranslationFiles.sh /app/default
exit $?
diff --git a/translations/handleTranslations.sh b/translations/handleTranslations.sh
index 62a7bf66..53184f83 100755
--- a/translations/handleTranslations.sh
+++ b/translations/handleTranslations.sh
@@ -9,34 +9,48 @@ gpg --allow-secret-key-import --import /gpg/nextcloud-bot.asc
gpg --list-keys
# fetch git repo
-git clone git@github.com:nextcloud/server /app
+git clone git@github.com:nextcloud/server /app/default --depth 1
+##################################
# Migrate the transifex config to the new client version
-cd /app
+##################################
+cd /app/default
tx migrate
git add .tx/config
rm .tx/config_*
git commit -am "fix(l10n): Update Transifex configuration" -s || true
git push
-cd -
-
-# TODO use build/l10nParseAppInfo.php to fetch app names for l10n
+##################################
+# Prepare sync setup
+##################################
versions='master stable31 stable30'
-# build POT files for all versions
mkdir stable-templates
+mkdir -p translationfiles/templates/
+
+##################################
+# Clone backport branches
+##################################
+# Don't fail on checking out non existing branches
+set +e
+for version in $versions
+do
+ git clone git@github.com:nextcloud/server /app/$version --depth 1 --branch $version
+done
+set -e
+
+##################################
+# Build POT files for all versions
+##################################
for version in $versions
do
- # skip if the branch doesn't exist
- if git branch -r | egrep "^\W*origin/$version$" ; then
- echo "Valid branch"
- else
- echo "Invalid branch"
+ if [ ! -d /app/$version ]; then
+ # skip if the branch doesn't exist
continue
fi
- git checkout $version
+ cd /app/$version
# build POT files
/translationtool.phar create-pot-files
@@ -44,14 +58,20 @@ do
cd translationfiles/templates/
for file in $(ls)
do
- mv $file ../../stable-templates/$version.$file
+ mv $file /app/default/stable-templates/$version.$file
done
cd ../..
done
+##################################
+# Sync with transifex
+##################################
+cd /app/default
+
# merge POT files into one
for file in $(ls stable-templates/master.*)
do
+ # Change below to 23 when server switches to main
name=$(echo $file | cut -b 25- )
msgcat --use-first stable-templates/*.$name > translationfiles/templates/$name
done
@@ -72,28 +92,47 @@ tx pull -a -f -r nextcloud.lib --minimum-perc=0
# pull 20% of "settings" translations for the region name
tx pull -a -f -r nextcloud.settings-1 --minimum-perc=20
+
+# delete removed l10n files
+find core/l10n/*.js -type f -delete
+find core/l10n/*.json -type f -delete
+find lib/l10n/*.js -type f -delete
+find lib/l10n/*.json -type f -delete
+find apps/*/l10n/*.js -type f -delete
+find apps/*/l10n/*.json -type f -delete
+
+# build JS/JSON based on translations
+/translationtool.phar convert-po-files
+
+##################################
+# Add translations to branches again
+##################################
for version in $versions
do
- # skip if the branch doesn't exist
- if git branch -r | egrep "^\W*origin/$version$" ; then
- echo "Valid branch"
- else
- echo "Invalid branch"
+ if [ ! -d /app/$version ]; then
+ # skip if the branch doesn't exist
continue
fi
- git checkout $version
+ cd /app/$version
# delete removed l10n files that are used for language detection (they will be recreated during the write)
- find core/l10n -type f -delete
- find lib/l10n -type f -delete
-
- # build JS/JSON based on translations
- /translationtool.phar convert-po-files
-
- # remove tests/
- rm -rf tests
- git checkout -- tests/
+ find core/l10n/*.js -type f -delete
+ find core/l10n/*.json -type f -delete
+ find lib/l10n/*.js -type f -delete
+ find lib/l10n/*.json -type f -delete
+ find apps/*/l10n/*.js -type f -delete
+ find apps/*/l10n/*.json -type f -delete
+
+ # Copy JS and JSON
+ cd /app/default
+ find core/l10n/*.js -type f -exec cp {} /app/$version/{} \;
+ find core/l10n/*.json -type f -exec cp {} /app/$version/{} \;
+ find lib/l10n/*.js -type f -exec cp {} /app/$version/{} \;
+ find lib/l10n/*.json -type f -exec cp {} /app/$version/{} \;
+ find apps/*/l10n/*.js -type f -exec cp {} /app/$version/{} \;
+ find apps/*/l10n/*.json -type f -exec cp {} /app/$version/{} \;
+ cd /app/$version
# create git commit and push it
git add apps core lib
@@ -104,6 +143,10 @@ do
echo "done with $version"
done
+##################################
+# Validate translations
+##################################
+cd /app/default
set +xe
EXIT_CODE=0
/validateTranslationFiles.sh core