mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-27 09:54:15 -05:00
288c2e8c48
Follow #23633 and #23240 Close #23814 Now we almost have a complete test set for Gitea's LocalStore. This PR is still a quick fix for the legacy locale system (see the TODOs), to resolve the problems fundamentally, it needs more work in the future.
52 lines
1.6 KiB
Bash
Executable file
52 lines
1.6 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# this script runs in alpine image which only has `sh` shell
|
|
|
|
set +e
|
|
if sed --version 2>/dev/null | grep -q GNU; then
|
|
SED_INPLACE="sed -i"
|
|
else
|
|
SED_INPLACE="sed -i ''"
|
|
fi
|
|
set -e
|
|
|
|
if [ ! -f ./options/locale/locale_en-US.ini ]; then
|
|
echo "please run this script in the root directory of the project"
|
|
exit 1
|
|
fi
|
|
|
|
mv ./options/locale/locale_en-US.ini ./options/
|
|
|
|
# the "ini" library for locale has many quirks, its behavior is different from Crowdin.
|
|
# see i18n_test.go for more details
|
|
|
|
# this script helps to unquote the Crowdin outputs for the quirky ini library
|
|
# * find all `key="...\"..."` lines
|
|
# * remove the leading quote
|
|
# * remove the trailing quote
|
|
# * unescape the quotes
|
|
# * eg: key="...\"..." => key=..."...
|
|
$SED_INPLACE -r -e '/^[-.A-Za-z0-9_]+[ ]*=[ ]*".*"$/ {
|
|
s/^([-.A-Za-z0-9_]+)[ ]*=[ ]*"/\1=/
|
|
s/"$//
|
|
s/\\"/"/g
|
|
}' ./options/locale/*.ini
|
|
|
|
# * if the escaped line is incomplete like `key="...` or `key=..."`, quote it with backticks
|
|
# * eg: key="... => key=`"...`
|
|
# * eg: key=..." => key=`..."`
|
|
$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
|
|
|
|
# Remove translation under 25% of en_us
|
|
baselines=$(wc -l "./options/locale_en-US.ini" | cut -d" " -f1)
|
|
baselines=$((baselines / 4))
|
|
for filename in ./options/locale/*.ini; do
|
|
lines=$(wc -l "$filename" | cut -d" " -f1)
|
|
if [ $lines -lt $baselines ]; then
|
|
echo "Removing $filename: $lines/$baselines"
|
|
rm "$filename"
|
|
fi
|
|
done
|
|
|
|
mv ./options/locale_en-US.ini ./options/locale/
|