X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=handlers%2F10_translations.sh;h=642d9c382030137b1b49fb680b363a0ef5c1a887;hb=4ad62632e520c153517f8e98ef87543fea0d2c7c;hp=e666408a0147a91482c692e12111e2306e966eab;hpb=555fafa2e76b5c1a146e13529d398ee6c3e50287;p=shellwiki diff --git a/handlers/10_translations.sh b/handlers/10_translations.sh index e666408..642d9c3 100755 --- a/handlers/10_translations.sh +++ b/handlers/10_translations.sh @@ -1,7 +1,11 @@ #!/bin/sh +# Set LANGUAGE_DEFAULT to enable Plugin +[ ! "$LANGUAGE_DEFAULT" ] && return 1 + export LANGUAGE_DEFAULT="${LANGUAGE_DEFAULT:-en}" export HTTP_REFERER="${HTTP_REFERER:-$(HEADER Referer)}" +export LANGUAGE ERROR_MSG case ${HTTP_REFERER} in */:*/*):;; @@ -10,21 +14,29 @@ case ${HTTP_REFERER} in ;; esac -export LANGUAGE="${LANGUAGE_REFERRED:-${LANGUAGE_DEFAULT}}" +LANGUAGE="${LANGUAGE_REFERRED:-${LANGUAGE_DEFAULT}}" case ${PATH_INFO} in */:?*/\[attachment\]/?*) - export LANGUAGE="${PATH_INFO#*/:}" - LANGUAGE="${LANGUAGE%%/*}" + LANGUAGE="${PATH_INFO#*/:}" + LANGUAGE="${LANGUAGE%%/*}" PATH_INFO="${PATH_INFO%%:?*/*}${PATH_INFO#*/:?*/}" ;; */:?*/\[attachment\]) - export LANGUAGE="${PATH_INFO#*/:}" - LANGUAGE="${LANGUAGE%%/*}" + LANGUAGE="${PATH_INFO#*/:}" + LANGUAGE="${LANGUAGE%%/*}" PATH_INFO="${PATH_INFO%:?*/\[attachment\]}[attachment]" ;; - */:*/?*) # Never occurs - :;; + */:?*/\[*\]) + LANGUAGE="${PATH_INFO#*/:}" + LANGUAGE="${LANGUAGE%%/*}" + ;; + */:?*/:?*) + # Accidental double language link, last one stays valid! + REDIRECT "${_BASE}${PATH_INFO%/:?*/:?*}/:${PATH_INFO##*/:}" + ;; + */:?*/?*) + :;; # Default attachment handler */:?*/) # Faulty URL build REDIRECT "${_BASE}${PATH_INFO%/}" ;; @@ -32,28 +44,32 @@ case ${PATH_INFO} in # REDIRECT "${_BASE}${PATH_INFO%:*}" # ;; */:?*) - export LANGUAGE="${PATH_INFO##*/:}" - if mdfile "${PATH_INFO}/"; then - PATH_INFO="${PATH_INFO}/" - elif [ "$LANGUAGE" = "$LANGUAGE_DEFAULT" ]; then - PATH_INFO="${PATH_INFO%:*}" - else - export ERROR_MSG="TRANSLATION NOT FOUND" - PATH_INFO="${PATH_INFO%:*}" - fi + LANGUAGE="${PATH_INFO##*/:}" + PATH_INFO="${PATH_INFO%:*}" + + [ "$LANGUAGE" != "$LANGUAGE_DEFAULT" ] \ + && case "$(mdfile "${PATH_INFO}")" in + *"/:$LANGUAGE/#page.md") + :;; + '') + :;; + *)ERROR_MSG="TRANSLATION NOT FOUND" + ;; + esac ;; - /|*/*/) + /|*/*/) # Keep Language from Referer if [ "$LANGUAGE_REFERRED" -a "$LANGUAGE_REFERRED" != "$LANGUAGE_DEFAULT" ]; then REDIRECT "${_BASE}${PATH_INFO}:${LANGUAGE_REFERRED}" fi ;; - */:*/\[*\]) # Considered valid in most cases - :;; - */\[*\]) + */\[*\]) # Keep Language from Referer if [ "$LANGUAGE_REFERRED" -a "$LANGUAGE_REFERRED" != "$LANGUAGE_DEFAULT" ]; then REDIRECT "${_BASE}${PATH_INFO%\[*\]}:${LANGUAGE_REFERRED}/[${PATH_INFO##*/\[}" fi ;; esac +_(){ printf %s\\n "$*"; } +[ -r "${_EXEC}/l10n/${LANGUAGE}.sh" ] && . "${_EXEC}/l10n/${LANGUAGE}.sh" + return 1