blob: 097f113a4dc55aeacb1affe9d51ffe7afd5b081a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
#!/usr/bin/env bash
set -eu
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"
source utils/log
function main {
case ${1:-""} in
prepare) prepare_localization_strings;;
upload) upload_to_crowdin;;
download) download_from_crowdin;;
sync-local-files) sync_localizations;;
verify) verify;;
"")
echo "Available subcommands: prepare, upload, download, sync-local-files and verify"
;;
*)
echo "Unknown parameter: $1"
exit 1
;;
esac
}
function sync_localizations {
# Update desktop strings in messages.pot
log_header "Extracting localization strings from desktop app source code"
pushd ../gui
npm run update-translations
popd
# Update android strings and add Android strings to messages.pot
log_header "Extracting localization strings from android app source code"
pushd ../android/translations-converter/
cargo run
popd
}
function update_relay_locations_pot {
log_header "Retrieving relay locations from server list and translating by using map data"
pushd ../gui/scripts
# Download geo data
curl -L -O https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/50m/cultural/ne_50m_admin_0_countries.zip
curl -L -O https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/50m/cultural/ne_50m_admin_1_states_provinces_lines.zip
curl -L -O https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip
unzip ne_50m_admin_0_countries.zip -d ne_50m_admin_0_countries/
unzip ne_50m_admin_1_states_provinces_lines.zip -d ne_50m_admin_1_states_provinces_lines/
unzip ne_10m_populated_places.zip -d ne_10m_populated_places/
# Add translations from geo data
python3 extract-geo-data.py
python3 integrate-into-app.py
# Remove geo data
rm ne_10m_populated_places.zip \
ne_50m_admin_0_countries.zip \
ne_50m_admin_1_states_provinces_lines.zip
rm -r ne_10m_populated_places ne_50m_admin_0_countries ne_50m_admin_1_states_provinces_lines
git restore ../assets
popd
}
function commit_changes {
if [[ $(git diff --shortstat 2> /dev/null | tail -n1) != "" ]]; then
git commit -a -S -m "$1"
fi
}
function prepare_localization_strings {
sync_localizations
commit_changes "Update messages.pot"
update_relay_locations_pot
commit_changes "Update relay-locations.pot"
}
function ensure_crowdin_api_key {
test ! -z "$CROWDIN_API_KEY"
}
function upload_to_crowdin {
ensure_crowdin_api_key
log_header "Uploading translations to crowdin"
../gui/scripts/crowdin.sh upload
}
function download_from_crowdin {
ensure_crowdin_api_key
log_header "Downloading translations from crowdin"
../gui/scripts/crowdin.sh export
../gui/scripts/crowdin.sh download
# Add new translations to Android xml-files
log_header "Updating Android xml-files with new translations"
sync_localizations
commit_changes "Update translations"
}
function verify {
sync_localizations
git diff
! git status -s | grep .
local out_of_sync=$?
pushd ../gui/scripts
npm exec ts-node verify-translations-format.ts
local incorrect_format=$?
popd
if [ "$out_of_sync" -ne 0 ] || [ "$incorrect_format" -ne 0 ]; then
exit 1
fi
}
main "$@"
|