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