aboutsummaryrefslogtreecommitdiffstats
path: root/chinese/bin/generate-zh-variants.sh
blob: 6e6e5ccc56046b1b2f3bd6bd3e22f47ecc74a305 (plain) (blame)
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
#!/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 variants 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 # opencc version compat


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]"
    # TODO
    ( 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

© 2014-2024 Faster IT GmbH | imprint | privacy policy