mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-02-04 04:30:05 +00:00
add zh_TW locale, rename ssl to tls
This commit is contained in:
175
script/i18n.sh
Executable file
175
script/i18n.sh
Executable file
@@ -0,0 +1,175 @@
|
||||
#!/bin/bash
|
||||
|
||||
LANG=()
|
||||
while IFS='' read -r line; do LANG+=("$line"); done < <(ls pkg/i18n/translations)
|
||||
TEMPLATE="pkg/i18n/template.pot"
|
||||
PODIR="pkg/i18n/translations/%s/LC_MESSAGES"
|
||||
GIT_ROOT=$(git rev-parse --show-toplevel)
|
||||
|
||||
red='\033[0;31m'
|
||||
green='\033[0;32m'
|
||||
yellow='\033[0;33m'
|
||||
plain='\033[0m'
|
||||
|
||||
err() {
|
||||
printf "${red}%s${plain}\n" "$*" >&2
|
||||
}
|
||||
|
||||
success() {
|
||||
printf "${green}%s${plain}\n" "$*"
|
||||
}
|
||||
|
||||
info() {
|
||||
printf "${yellow}%s${plain}\n" "$*"
|
||||
}
|
||||
|
||||
generate() {
|
||||
case $1 in
|
||||
"template")
|
||||
generate_template
|
||||
;;
|
||||
"en")
|
||||
generate_en
|
||||
;;
|
||||
*)
|
||||
err "invalid argument"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
generate_template() {
|
||||
read -ra src < <(find . -name "*.go" | sort)
|
||||
xgettext -C --add-comments=TRANSLATORS: -kErrorT -kT -kTf -kN:1,2 --from-code=UTF-8 -o $TEMPLATE "${src[@]}"
|
||||
}
|
||||
|
||||
generate_en() {
|
||||
local po_file
|
||||
po_file=$(printf "$PODIR/nezha.po" "en_US")
|
||||
local mo_file
|
||||
mo_file=$(printf "$PODIR/nezha.mo" "en_US")
|
||||
msginit --input=$TEMPLATE --locale=en_US.UTF-8 --output-file="$po_file" --no-translator
|
||||
msgfmt "$po_file" -o "$mo_file"
|
||||
}
|
||||
|
||||
compile() {
|
||||
if [[ $# != 0 ]]; then
|
||||
compile_single "$1"
|
||||
else
|
||||
compile_all
|
||||
fi
|
||||
}
|
||||
|
||||
compile_single() {
|
||||
local param="$1"
|
||||
local found=0
|
||||
|
||||
for lang in "${LANG[@]}"; do
|
||||
if [[ "$lang" == "$param" ]]; then
|
||||
found=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $found == 0 ]]; then
|
||||
err "the language does not exist."
|
||||
return
|
||||
fi
|
||||
|
||||
local po_file
|
||||
po_file=$(printf "$PODIR/nezha.po" "$param")
|
||||
local mo_file
|
||||
mo_file=$(printf "$PODIR/nezha.mo" "$param")
|
||||
|
||||
msgfmt "$po_file" -o "$mo_file"
|
||||
}
|
||||
|
||||
compile_all() {
|
||||
local po_file
|
||||
local mo_file
|
||||
for lang in "${LANG[@]}"; do
|
||||
po_file=$(printf "$PODIR/nezha.po" "$lang")
|
||||
mo_file=$(printf "$PODIR/nezha.mo" "$lang")
|
||||
|
||||
msgfmt "$po_file" -o "$mo_file"
|
||||
done
|
||||
}
|
||||
|
||||
update() {
|
||||
if [[ $# != 0 ]]; then
|
||||
update_single "$1"
|
||||
else
|
||||
update_all
|
||||
fi
|
||||
}
|
||||
|
||||
update_single() {
|
||||
local param="$1"
|
||||
local found=0
|
||||
|
||||
for lang in "${LANG[@]}"; do
|
||||
if [[ "$lang" == "$param" ]]; then
|
||||
found=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $found == 0 ]]; then
|
||||
err "the language does not exist."
|
||||
return
|
||||
fi
|
||||
|
||||
local po_file
|
||||
po_file=$(printf "$PODIR/nezha.po" "$param")
|
||||
msgmerge -U "$po_file" $TEMPLATE
|
||||
}
|
||||
|
||||
update_all() {
|
||||
for lang in "${LANG[@]}"; do
|
||||
local po_file
|
||||
po_file=$(printf "$PODIR/nezha.po" "$lang")
|
||||
msgmerge -U "$po_file" $TEMPLATE
|
||||
done
|
||||
}
|
||||
|
||||
show_help() {
|
||||
echo "Usage: $0 [command] args"
|
||||
echo ""
|
||||
echo "Available commands:"
|
||||
echo " update Update .po from .pot"
|
||||
echo " compile Compile .mo from .po"
|
||||
echo " generate Generate template or en_US locale"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 update # Update all locales"
|
||||
echo " $0 update zh_CN # Update zh_CN locale"
|
||||
echo " $0 compile # Compile all locales"
|
||||
echo " $0 compile zh_CN # Compile zh_CN locale"
|
||||
echo " $0 generate template # Generate template"
|
||||
echo " $0 generate en # Generate en_US locale"
|
||||
}
|
||||
|
||||
main() {
|
||||
if [[ $PWD != "$GIT_ROOT" ]]; then
|
||||
err "Must execute in the project root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
"update")
|
||||
update "$2"
|
||||
;;
|
||||
"compile")
|
||||
compile "$2"
|
||||
;;
|
||||
"generate")
|
||||
generate "$2"
|
||||
;;
|
||||
*)
|
||||
echo "Error: Unknown command '$1'"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user