Re: 回复:debian.org 网站中文翻译简繁转换即将面临的问题

Boyuan Yang <[email protected]> Sat, 19 Nov 2016 19:44:14 +0800
Newsgroups gmane.linux.debian.internationalization.chinese,gmane.linux.debian.user.chinese.gb,gmane.linux.debian.user.chinese.big5
Organization USTC
Message-ID <1781964.fFKo0pQhqy@hosiet-tp>
> 赞成把简体中文和繁体中文分开存放到不同文件。
> 支持进行清理工作,现在Debian官网上的中文网页也太旧了

清理是肯定的,不过分开翻译的话恐怕人手不够。

附件是今天修改过的工具,理论上可以同时支持 opencc 0.4 / 1.x。手边只有 unstable 环境,旧版 opencc 没有实际测试过,不过应该
不会有什么大问题。现在剩下的问题便是原始源代码的编写方式问题,简繁混合的情况下不知道效果如何。

make 可以通过,大多数页面都算正常,有了 opencc 1.x 以后 zh_TW 和 zh_HK 也可以正确区分开了,不过日志中 error 不少。稍后
再研究究竟问题在哪里吧。

--
Boyuan Yang
generate-zh-variants.sh (application/x-shellscript, 2.2 KB)
#!/bin/bash

## generate-zh-variants.sh -- Generate pages for different Chinese variants
#
# This script try to process and convert the original texts into different
# Chinese varients using opencc and some predefined converting rules.

base="$1"
ext="$2"

MYPATH=$(/usr/bin/dirname "$0")
OPENCC=/usr/bin/opencc
OPENCC_VERSION_COMPAT=""
if [ -x "$OPENCC" ]; then
    # test opencc version here
    _OPENCC_VERSION="$(${OPENCC} --version | grep '^Version' | cut -d' ' -f2)"
    OPENCC_VERSION_COMPAT=$(echo "${_OPENCC_VERSION}" | grep -o '^.')
fi

# opencc has API breakage between v0.x and v1.x, so we test the opencc version
# and set the correct behaviour before we start. 

if [ -z "$OPENCC_VERSION_COMPAT" ]; then
    printf "%s WARN: opencc NOT FOUND! not converting variants...\n" "$0"
    HANT_TO_HANS="cat"
    HANS_TO_HANT="cat"
    HANT_TO_TW="cat"
    HANT_TO_HK="cat"
elif [ "${OPENCC_VERSION_COMPAT}x" = "0x" ]; then
    printf "%s INFO: using old opencc 0.x...\n" "$0"
    HANT_TO_HANS="$OPENCC -c mix2zhs.ini"
    HANS_TO_HANT="$OPENCC -c mix2zht.ini"
    HANT_TO_TW="cat"
    HANT_TO_HK="cat"
elif [ "${OPENCC_VERSION_COMPAT}x" = "1x" ]; then
    HANT_TO_HANS="$OPENCC -c t2s.json"
    HANS_TO_HANT="$OPENCC -c s2t.json"
    HANT_TO_TW="$OPENCC -c t2tw.json"
    HANT_TO_HK="$OPENCC -c t2hk.json"
else
    printf "%s WARN: opencc v%s not supported! not converting variants...\n"\
        "$0" "${OPENCC_VERSION_COMPAT}"
    HANT_TO_HANS="cat"
    HANS_TO_HANT="cat"
    HANT_TO_TW="cat"
    HANT_TO_HK="cat"
fi

TOCN=$MYPATH/tocn.pl
TOTW=$MYPATH/totw.pl
TOHK=$MYPATH/tohk.pl

check_exist () {
	while [ -n "$1" ]; do
		if [ ! -e "$1" ]; then
			echo "$0: ERROR: $1 does not exist!  Aborting..."
			exit 1
		fi
		shift
	done
}

generate_zh_variants () {
	echo -n "[zh_CN]"
	( eval $HANT_TO_HANS | $TOCN ) < "$base".zh-cn."$ext".tmp > "$base".zh-cn."$ext"
	echo -n ", [zh_TW]"
	( eval $HANS_TO_HANT | $HANT_TO_TW | $TOTW ) < "$base".zh-tw."$ext".tmp > "$base".zh-tw."$ext"
	echo -n ", [zh_HK]"
	( eval $HANS_TO_HANT | $HANT_TO_HK | $TOHK ) < "$base".zh-hk."$ext".tmp > "$base".zh-hk."$ext"
	rm -f "$base".zh-??."$ext".tmp
	echo "."
}

check_exist "${ICONV}" "${TOCN}" "${TOTW}" "${TOHK}" \
	"$base".zh-cn."$ext".tmp "$base".zh-tw."$ext".tmp "$base".zh-hk."$ext".tmp

generate_zh_variants
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIyBAABCgAdFiEEBxWNsAe8FiJWLc/BsaNiERUBsx4FAlgwOw4ACgkQsaNiERUB
sx7e6w/4oEy7jgOpHdy6OE0Lnwcu86ropqKkfdmf/xr1GWUHEyAUTfuybUcTQRAn
TAr7QylxGHkgFlm2qkBv1hbNwTZ+7J7yWXk5ZvQvHKTRQV99KpcA/45/yeKNA+Mk
0AgflrAN3yufNUc574uaUELeQ43DH/VCGgEkE5TRiU/sppSB0BCMuHuVYkydNkJn
muTc2fveo6hHTuzQ2mw9rxSa0JpQyebUoi7GThXsw1AtPFWVodNtp5vuYJvdH3iR
/fKYpMQV19DI/pFpvvLBFeLd5n7PGkgn1mse+Et8JemXnVYQGN26isp0JNVQbxSy
m2W+60SAjR2pPVuErZrIFLYE/EhlR6rZQji6LjqT13Ty/8r4RM0SYiHaqRNLNlDV
BtkjNYDFpKo1g1DqOiKm0rjQGnKxXG8gnyy0jeTsnJ99ZR6bc8sMXa5feearZoVb
9Ip7GK2WomvFFTVwAPL8qtF62E3jYkBKrI3UHkPOYMEDAnZCmwZ/X86OGXfZneUR
g9Pv5nkhnR+m+I91KuX4ZiPrO+4O6tvDkIfHaSJhFIVnXQzIyhWjaSoYMcUiuAB9
A2Mnj4oxHRJOG16rCNedj0TxnPVNeymmXhJZdoNi18kIuqdwbQ24eAqiZF/9xRaC
Z33VWU/gWnEmMalT8DeXs3erHW6hPO1s8tBqgwcZagnibNj4Vg==
=+RCs
-----END PGP SIGNATURE-----