]> git.plutz.net Git - shellwiki/blob - handlers/10_translations.sh
speed improvement: save fork when checking mdfile existence
[shellwiki] / handlers / 10_translations.sh
1 #!/bin/sh
2
3 export LANGUAGE_DEFAULT="${LANGUAGE_DEFAULT:-en}"
4 export HTTP_REFERER="${HTTP_REFERER:-$(HEADER Referer)}"
5
6 case ${HTTP_REFERER} in
7   */:*/*):;;
8   */:*)
9    LANGUAGE_REFERRED="${HTTP_REFERER##*/:}"
10    ;;
11 esac
12
13 export LANGUAGE="${LANGUAGE_REFERRED:-${LANGUAGE_DEFAULT}}"
14
15 case ${PATH_INFO} in
16   */:?*/\[attachment\]/?*)
17     export LANGUAGE="${PATH_INFO#*/:}"
18            LANGUAGE="${LANGUAGE%%/*}"
19     PATH_INFO="${PATH_INFO%%:?*/*}${PATH_INFO#*/:?*/}"
20     ;;
21   */:?*/\[attachment\])
22     export LANGUAGE="${PATH_INFO#*/:}"
23            LANGUAGE="${LANGUAGE%%/*}"
24     PATH_INFO="${PATH_INFO%:?*/\[attachment\]}[attachment]"
25     ;;
26   */:*/?*)  # Never occurs
27     :;;
28   */:?*/)   # Faulty URL build
29     REDIRECT "${_BASE}${PATH_INFO%/}"
30     ;;
31 # */:"${LANGUAGE_DEFAULT}")
32 #   REDIRECT "${_BASE}${PATH_INFO%:*}"
33 #   ;;
34   */:?*)
35     export LANGUAGE="${PATH_INFO##*/:}"
36     if mdfile "${PATH_INFO}/"; then
37       PATH_INFO="${PATH_INFO}/"
38     elif [ "$LANGUAGE" = "$LANGUAGE_DEFAULT" ]; then
39       PATH_INFO="${PATH_INFO%:*}"
40     else
41       export ERROR_MSG="TRANSLATION NOT FOUND"
42       PATH_INFO="${PATH_INFO%:*}"
43     fi
44     ;;
45   /|*/*/)
46     if [ "$LANGUAGE_REFERRED" -a "$LANGUAGE_REFERRED" != "$LANGUAGE_DEFAULT" ]; then
47       REDIRECT "${_BASE}${PATH_INFO}:${LANGUAGE_REFERRED}"
48     fi
49     ;;
50   */:*/\[*\])  # Considered valid in most cases
51     :;;
52   */\[*\])
53     if [ "$LANGUAGE_REFERRED" -a "$LANGUAGE_REFERRED" != "$LANGUAGE_DEFAULT" ]; then
54       REDIRECT "${_BASE}${PATH_INFO%\[*\]}:${LANGUAGE_REFERRED}/[${PATH_INFO##*/\[}"
55     fi
56     ;;
57 esac
58
59 return 1