3 # Set LANGUAGE_DEFAULT to enable Plugin
4 [ ! "$LANGUAGE_DEFAULT" ] && return 1
6 export LANGUAGE_DEFAULT="${LANGUAGE_DEFAULT:-en}"
7 export HTTP_REFERER="${HTTP_REFERER:-$(HEADER Referer)}"
11 # Override mdfile Selection from tools.sh
12 local page="$(PATH "$1")"
16 # if PAGE Address is LANGUAGE Page, jump to regular processing
17 # else if LANGUAGE Page exists, add language tag
18 # Also the reason why `mdfile` should not be used in `acl.sh`
19 if [ "${page%/:${LANGUAGE}}" != "$page" ]; then
21 elif [ -f "$_DATA/pages/$page/:$LANGUAGE/#page.md" ]; then
22 printf %s\\n "$_DATA/pages/$page/:$LANGUAGE/#page.md"
24 elif [ -f "$_EXEC/pages/$page/:$LANGUAGE/#page.md" ]; then
25 printf %s\\n "$_EXEC/pages/$page/:$LANGUAGE/#page.md"
29 # Regular processing, keep in sync with tools.sh
30 if [ -f "$_DATA/pages/$page/#page.md" ]; then
31 printf %s\\n "$_DATA/pages/$page/#page.md"
33 elif [ -f "$_EXEC/pages/$page/#page.md" ]; then
34 printf %s\\n "$_EXEC/pages/$page/#page.md"
39 # ^^ suppress error messages produced
40 # by printf when stdout was closed
43 case ${HTTP_REFERER} in
46 LANGUAGE_REFERRED="${HTTP_REFERER##*/:}"
50 LANGUAGE="${LANGUAGE_REFERRED:-${LANGUAGE_DEFAULT}}"
53 */:?*/\[attachment\]/?*)
54 LANGUAGE="${PATH_INFO#*/:}"
55 LANGUAGE="${LANGUAGE%%/*}"
56 PATH_INFO="${PATH_INFO%%:?*/*}${PATH_INFO#*/:?*/}"
59 LANGUAGE="${PATH_INFO#*/:}"
60 LANGUAGE="${LANGUAGE%%/*}"
61 PATH_INFO="${PATH_INFO%:?*/\[attachment\]}[attachment]"
64 :;; # Default handler, considered valid in most cases
66 :;; # Default attachment handler
67 */:?*/) # Faulty URL build
68 REDIRECT "${_BASE}${PATH_INFO%/}"
70 # */:"${LANGUAGE_DEFAULT}")
71 # REDIRECT "${_BASE}${PATH_INFO%:*}"
74 LANGUAGE="${PATH_INFO##*/:}"
76 if mdfile "${PATH_INFO}/"; then
77 # Pretend to deliver Language Page, if Language Tag is valid
78 PATH_INFO="${PATH_INFO}/"
79 elif [ "$LANGUAGE" = "$LANGUAGE_DEFAULT" ]; then
80 # Pretend Language Tag was omitted for default Language
81 PATH_INFO="${PATH_INFO%:*}"
83 # Deliver default Page if Language is not found
84 ERROR_MSG="TRANSLATION NOT FOUND"
85 PATH_INFO="${PATH_INFO%:*}"
88 /|*/*/) # Keep Language from Referer
89 if [ "$LANGUAGE_REFERRED" -a "$LANGUAGE_REFERRED" != "$LANGUAGE_DEFAULT" ]; then
90 REDIRECT "${_BASE}${PATH_INFO}:${LANGUAGE_REFERRED}"
93 */\[*\]) # Keep Language from Referer
94 if [ "$LANGUAGE_REFERRED" -a "$LANGUAGE_REFERRED" != "$LANGUAGE_DEFAULT" ]; then
95 REDIRECT "${_BASE}${PATH_INFO%\[*\]}:${LANGUAGE_REFERRED}/[${PATH_INFO##*/\[}"