2023-03-04 17:29:28 +03:00
#!/bin/sh
2023-03-02 21:33:36 +03:00
2023-03-04 17:29:28 +03:00
# this script runs in alpine image which only has `sh` shell
2023-03-02 21:33:36 +03:00
2023-03-04 17:29:28 +03:00
set +e
if sed --version 2>/dev/null | grep -q GNU; then
SED_INPLACE = "sed -i"
else
SED_INPLACE = "sed -i ''"
2023-03-02 21:33:36 +03:00
fi
2023-03-04 17:29:28 +03:00
set -e
2023-03-02 21:33:36 +03:00
if [ ! -f ./options/locale/locale_en-US.ini ] ; then
echo "please run this script in the root directory of the project"
exit 1
fi
2020-01-21 19:26:17 +03:00
mv ./options/locale/locale_en-US.ini ./options/
2020-01-25 09:19:35 +03:00
2023-03-31 07:16:41 +03:00
# the "ini" library for locale has many quirks, its behavior is different from Crowdin.
# see i18n_test.go for more details
2023-03-02 21:33:36 +03:00
2023-03-31 07:16:41 +03:00
# this script helps to unquote the Crowdin outputs for the quirky ini library
2023-03-02 21:33:36 +03:00
# * find all `key="...\"..."` lines
# * remove the leading quote
# * remove the trailing quote
# * unescape the quotes
# * eg: key="...\"..." => key=..."...
2023-03-04 17:29:28 +03:00
$SED_INPLACE -r -e ' /^[ -.A-Za-z0-9_] +[ ] *= [ ] *".*" $/ {
2023-03-02 21:33:36 +03:00
s/^( [ -.A-Za-z0-9_] +) [ ] *= [ ] *" /\1=/
2020-01-25 09:19:35 +03:00
s/" $//
2023-03-02 21:33:36 +03:00
s/\\ "/" /g
2020-01-25 09:19:35 +03:00
} ' ./options/locale/*.ini
2020-01-21 19:26:17 +03:00
2023-03-02 21:33:36 +03:00
# * if the escaped line is incomplete like `key="...` or `key=..."`, quote it with backticks
# * eg: key="... => key=`"...`
# * eg: key=..." => key=`..."`
2023-03-04 17:29:28 +03:00
$SED_INPLACE -r -e 's/^([-.A-Za-z0-9_]+)[ ]*=[ ]*(".*[^"])$/\1=`\2`/' ./options/locale/*.ini
$SED_INPLACE -r -e 's/^([-.A-Za-z0-9_]+)[ ]*=[ ]*([^"].*")$/\1=`\2`/' ./options/locale/*.ini
2023-03-02 21:33:36 +03:00
2020-01-21 19:26:17 +03:00
# Remove translation under 25% of en_us
2020-11-28 09:12:22 +03:00
baselines = $( wc -l "./options/locale_en-US.ini" | cut -d" " -f1)
2020-01-21 19:26:17 +03:00
baselines = $(( baselines / 4 ))
for filename in ./options/locale/*.ini; do
2020-11-28 09:12:22 +03:00
lines = $( wc -l " $filename " | cut -d" " -f1)
2020-01-21 19:26:17 +03:00
if [ $lines -lt $baselines ] ; then
echo " Removing $filename : $lines / $baselines "
rm " $filename "
fi
done
mv ./options/locale_en-US.ini ./options/locale/