X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=handlers%2F10_translations.sh;h=4b3464031aced41bae5581ea40728d2caf6a4e31;hb=c557bbf8988e8e77e5691926fbcccc387cc4ce24;hp=b9d6cb13db64e9cec2f4af0c7e4003e1e9b685b7;hpb=71152d935975fa673d7ad4398a1757228cab8b8c;p=shellwiki diff --git a/handlers/10_translations.sh b/handlers/10_translations.sh index b9d6cb1..4b34640 100755 --- a/handlers/10_translations.sh +++ b/handlers/10_translations.sh @@ -5,40 +5,7 @@ export LANGUAGE_DEFAULT="${LANGUAGE_DEFAULT:-en}" export HTTP_REFERER="${HTTP_REFERER:-$(HEADER Referer)}" -export LANGUAGE='' - -mdfile(){ - # Override mdfile Selection from tools.sh - local page="$(PATH "$1")" - page="${page%/}" - - # Additional part: - # if PAGE Address is LANGUAGE Page, jump to regular processing - # else if LANGUAGE Page exists, add language tag - # Also the reason why `mdfile` should not be used in `acl.sh` - if [ "${page%/:${LANGUAGE}}" != "$page" ]; then - : - elif [ -f "$_DATA/pages/$page/:$LANGUAGE/#page.md" ]; then - printf %s\\n "$_DATA/pages/$page/:$LANGUAGE/#page.md" - return 0 - elif [ -f "$_EXEC/pages/$page/:$LANGUAGE/#page.md" ]; then - printf %s\\n "$_EXEC/pages/$page/:$LANGUAGE/#page.md" - return 0 - fi 2>&- - - # Regular processing, keep in sync with tools.sh - if [ -f "$_DATA/pages/$page/#page.md" ]; then - printf %s\\n "$_DATA/pages/$page/#page.md" - return 0 - elif [ -f "$_EXEC/pages/$page/#page.md" ]; then - printf %s\\n "$_EXEC/pages/$page/#page.md" - return 0 - else - return 1 - fi 2>&- - # ^^ suppress error messages produced - # by printf when stdout was closed -} +export LANGUAGE ERROR_MSG case ${HTTP_REFERER} in */:*/*):;; @@ -72,18 +39,17 @@ case ${PATH_INFO} in # ;; */:?*) LANGUAGE="${PATH_INFO##*/:}" + PATH_INFO="${PATH_INFO%:*}" - if mdfile "${PATH_INFO}/"; then - # Pretend to deliver Language Page, if Language Tag is valid - PATH_INFO="${PATH_INFO}/" - elif [ "$LANGUAGE" = "$LANGUAGE_DEFAULT" ]; then - # Pretend Language Tag was omitted for default Language - PATH_INFO="${PATH_INFO%:*}" - else - # Deliver default Page if Language is not found - ERROR_MSG="TRANSLATION NOT FOUND" - PATH_INFO="${PATH_INFO%:*}" - fi + [ "$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 @@ -97,4 +63,6 @@ case ${PATH_INFO} in ;; esac +[ -r "${_EXEC}/l10n/${LANGUAGE}.sh" ] && . "${_EXEC}/l10n/${LANGUAGE}.sh" + return 1