# shellcheck shell=dash disable=2120

___X_CMD_TLDR_LANG_IGNORE="bn,hi,lo,ml,ne,ta,th" # ar.fastmod
___x_cmd_tldr_lang(){
    local op="$1"
    case "$op" in
        set|get|get_)
                    shift; ___x_cmd_tldr_lang___"$op" "$@" ;;
        *)          ___x_cmd_tldr_lang___main "$@" ;;
    esac
}

___x_cmd_tldr_lang___main(){
    local lang="$1";
    if [ "$#" -eq 0 ]; then
        local x_=; ___x_cmd_tldr_lang___listfp_ || return $?
        if ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_chatty; then
            ___x_cmd storeread_  ___x_cmd pick --col 6 ___x_cmd_cmds_cat "$x_" || return $?
            lang="$x_"
            [ -n "$lang" ] || return $?
        else
            ___x_cmd_cmds_cat "$x_"
            return
        fi
    fi

    ___x_cmd_tldr_lang___set "$lang"
}

___x_cmd_tldr_lang___set(){
    local lang="${1:-en}"
    ___x_cmd_tldr_pages_prepare "$lang" || return $?

    local fp="$___X_CMD_TLDR_DIR_DATA/.prefered.lang"
    ___x_cmd ensurefp "$fp"
    printf "%s\n" "$lang" > "$fp"
    ___X_CMD_TLDR_LANG_PREFERED=
    tldr:info "Already setting prefered language to $lang"
}

___x_cmd_tldr_lang___get_(){
    [ -z "$___X_CMD_TLDR_LANG_PREFERED" ] || {
        x_="$___X_CMD_TLDR_LANG_PREFERED"
        return 0
    }

    x_=""
    local fp="$___X_CMD_TLDR_DIR_DATA/.prefered.lang"
    [ ! -f "$fp" ] || read -r x_ < "$fp"
    [ -n "$x_" ] || x_="${___X_CMD_LANG:-en}"
    ___X_CMD_TLDR_LANG_PREFERED="$x_"
}

___x_cmd_tldr_lang___get(){
    local x_=; ___x_cmd_tldr_lang___get_ || return $?
    printf "%s\n" "$x_"
}

___x_cmd_tldr_lang___listfp_(){
    ___x_cmd_tldr_version_pages_ || return $?
    local listfp="$___X_CMD_TLDR_DIR_DATA/${___X_CMD_TLDR_PAGES_VERSION}/lang.txt"
    { [ -f "$listfp" ] && [ "$1" != --update ]; } || \
        ( ___x_cmd fslock run "tldr.lang.txt" ___x_cmd_tldr_download "${___X_CMD_TLDR_PAGES_VERSION}/lang.txt"  "$listfp" ) || return $?
    x_="$listfp"
    [ -f "$listfp" ]
}

___x_cmd_tldr_lang___list_exist(){
    ___x_cmd_tldr_pages_prepare || return
    local dirpath="$___X_CMD_TLDR_DIR_DATA/$___X_CMD_TLDR_PAGES_VERSION"
    local i; for i in "$dirpath/pages."*; do
        printf "%s\n" "${i##*"pages."}"
    done
}
