]> git.plutz.net Git - shellwiki/blob - handlers/10_translations.sh
4b3464031aced41bae5581ea40728d2caf6a4e31
[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     :;;  # Default attachment handler
34   */:?*/)   # Faulty URL build
35     REDIRECT "${_BASE}${PATH_INFO%/}"
36     ;;
37 # */:"${LANGUAGE_DEFAULT}")
38 #   REDIRECT "${_BASE}${PATH_INFO%:*}"
39 #   ;;
40   */:?*)
41     LANGUAGE="${PATH_INFO##*/:}"
42     PATH_INFO="${PATH_INFO%:*}"
43
44     [ "$LANGUAGE" != "$LANGUAGE_DEFAULT" ] \
45     && case "$(mdfile "${PATH_INFO}")" in
46       *"/:$LANGUAGE/#page.md")
47         :;;
48       '')
49         :;;
50       *)ERROR_MSG="TRANSLATION NOT FOUND"
51         ;;
52     esac
53     ;;
54   /|*/*/)  # Keep Language from Referer
55     if [ "$LANGUAGE_REFERRED" -a "$LANGUAGE_REFERRED" != "$LANGUAGE_DEFAULT" ]; then
56       REDIRECT "${_BASE}${PATH_INFO}:${LANGUAGE_REFERRED}"
57     fi
58     ;;
59   */\[*\])  # Keep Language from Referer
60     if [ "$LANGUAGE_REFERRED" -a "$LANGUAGE_REFERRED" != "$LANGUAGE_DEFAULT" ]; then
61       REDIRECT "${_BASE}${PATH_INFO%\[*\]}:${LANGUAGE_REFERRED}/[${PATH_INFO##*/\[}"
62     fi
63     ;;
64 esac
65
66 [ -r "${_EXEC}/l10n/${LANGUAGE}.sh" ] && . "${_EXEC}/l10n/${LANGUAGE}.sh"
67
68 return 1