# Do locale settings for this session.  The locale is picked from
# user locale in session information (if that exists), or from the
# device locale (through puavo-conf).

puavo_locale=''

if [ -n "${EXAMMODE_SESSION:-}" ]; then
  puavo_locale=$(jq -r .locale /var/lib/puavo-exammode/session.json \
                   2>/dev/null) || true
fi

# if a language specific Puavo Desktop session was chosen,
# setup language and use the normal DESKTOP_SESSION
case "$DESKTOP_SESSION" in
  zzz-puavo-desktop-lang-*)
    puavo_session_language=${DESKTOP_SESSION#zzz-puavo-desktop-lang-}
    case "$puavo_session_language" in
      de) puavo_locale='de_DE.UTF-8' ;;
      en) puavo_locale='en_GB.UTF-8' ;;
      fi) puavo_locale='fi_FI.UTF-8' ;;
      fr) puavo_locale='fr_FR.UTF-8' ;;
      sv) puavo_locale='sv_FI.UTF-8' ;;
      uk) puavo_locale='uk_UA.UTF-8' ;;
       *)
          echo "unknown language '${puavo_session_language}'" >&2
          puavo_locale=''
          ;;
    esac

    DESKTOP_SESSION=puavo-desktop
    ;;
esac

if [ -z "$puavo_locale" ]; then
  if [ "$USER" != 'guest' -a -r "$PUAVO_SESSION_PATH" ]; then
    puavo_locale=$(jq -r .user.locale "$PUAVO_SESSION_PATH")
  fi
  if [ -z "$puavo_locale" -o "$puavo_locale" = 'null' ]; then
    puavo_locale=$(puavo-conf puavo.l10n.locale)
  fi
fi

if [ -z "$puavo_locale" ]; then
  puavo_locale='en_GB.UTF-8'
  echo "no locale set, falling back to '${puavo_locale}'" >&2
fi

LANG="$puavo_locale"
LANGUAGE=$(printf %s "$puavo_locale" | cut -c 1-2)

export LANG LANGUAGE
