#compdef locale local curcontext="$curcontext" state line expl ret=1 local exargs="-? --help --usage -V --version" _arguments -A -C -S -s \ '(- *)'{-\?,--help}'[display help information]' \ '(- *)--usage[display a short usage message]' \ '(- *)'{-V,--version}'[print program version]' \ - set1 \ "(-a --all-locales $exargs)"{-a,--all-locales}'[list all available locales]' \ "(-v --verbose $exargs)"{-v,--verbose}'[display additional information]' \ - set2 \ "(-m --charmaps $exargs)"{-m,--charmaps}'[list all available charmaps]' \ - set3 \ "(-c --category-name $exargs)"{-c,--category-name}'[print also locale category]' \ "(-k --keyword-name $exargs)"{-k,--keyword-name}'[print also keyword of each value]' \ '*:name:->catkey' \ && return 0 if [[ $state == catkey ]]; then typeset -a cats keys cats=( ${${${(f)"$(locale)"}%=*}%(LANG|LANGUAGE|LC_ALL)} ) keys=( ${${(f)"$(locale -k $cats 2>/dev/null)"}%=*} ) _wanted values expl name compadd "$@" -a - cats keys && ret=0 fi return ret