]> git.plutz.net Git - shellwiki/blob - handlers/10_translations.sh
implement redirect pragma
[shellwiki] / handlers / 10_translations.sh
1 #!/bin/sh
2
3 # Set LANGUAGE_DEFAULT to enable Plugin
4 [ ! "$LANGUAGE_DEFAULT" ] && return 1
5
6 export LANGUAGE_DEFAULT="${LANGUAGE_DEFAULT:-en}"
7 export HTTP_REFERER="${HTTP_REFERER:-$(HEADER Referer)}"
8 export LANGUAGE ERROR_MSG
9
10 case ${HTTP_REFERER} in
11   */:*/*):;;
12   */:*)
13    LANGUAGE_REFERRED="${HTTP_REFERER##*/:}"
14    ;;
15 esac
16
17 LANGUAGE="${LANGUAGE_REFERRED:-${LANGUAGE_DEFAULT}}"
18
19 case ${PATH_INFO} in
20   */:?*/\[attachment\]/?*)
21     LANGUAGE="${PATH_INFO#*/:}"
22     LANGUAGE="${LANGUAGE%%/*}"
23     PATH_INFO="${PATH_INFO%%:?*/*}${PATH_INFO#*/:?*/}"
24     ;;
25   */:?*/\[attachment\])
26     LANGUAGE="${PATH_INFO#*/:}"
27     LANGUAGE="${LANGUAGE%%/*}"
28     PATH_INFO="${PATH_INFO%:?*/\[attachment\]}[attachment]"
29     ;;
30   */:?*/\[*\])
31     :;;  # Default handler, considered valid in most cases
32   */:?*/:?*)
33     # Accidental double language link, last one stays valid!
34     REDIRECT "${_BASE}${PATH_INFO%/:?*/:?*}/:${PATH_INFO##*/:}"
35     ;;
36   */:?*/?*)
37     :;;  # Default attachment handler
38   */:?*/)   # Faulty URL build
39     REDIRECT "${_BASE}${PATH_INFO%/}"
40     ;;
41 # */:"${LANGUAGE_DEFAULT}")
42 #   REDIRECT "${_BASE}${PATH_INFO%:*}"
43 #   ;;
44   */:?*)
45     LANGUAGE="${PATH_INFO##*/:}"
46     PATH_INFO="${PATH_INFO%:*}"
47
48     [ "$LANGUAGE" != "$LANGUAGE_DEFAULT" ] \
49     && case "$(mdfile "${PATH_INFO}")" in
50       *"/:$LANGUAGE/#page.md")
51         :;;
52       '')
53         :;;
54       *)ERROR_MSG="TRANSLATION NOT FOUND"
55         ;;
56     esac
57     ;;
58   /|*/*/)  # Keep Language from Referer
59     if [ "$LANGUAGE_REFERRED" -a "$LANGUAGE_REFERRED" != "$LANGUAGE_DEFAULT" ]; then
60       REDIRECT "${_BASE}${PATH_INFO}:${LANGUAGE_REFERRED}"
61     fi
62     ;;
63   */\[*\])  # Keep Language from Referer
64     if [ "$LANGUAGE_REFERRED" -a "$LANGUAGE_REFERRED" != "$LANGUAGE_DEFAULT" ]; then
65       REDIRECT "${_BASE}${PATH_INFO%\[*\]}:${LANGUAGE_REFERRED}/[${PATH_INFO##*/\[}"
66     fi
67     ;;
68 esac
69
70 [ -r "${_EXEC}/l10n/${LANGUAGE}.sh" ] && . "${_EXEC}/l10n/${LANGUAGE}.sh"
71
72 return 1