Get current locale with Ansible
I just had the problem to get the currently set locate using ansible. This is non-trivial, since one has to consider four environment variables: LC_ALL, LC_MESSAGES (or another one), and LANG. For details see the Locale Categories documentation.
Now here is the solution, included into an ansible playbook:
# -*- indent-tabs-mode: nil -*- --- - hosts: all become: yes gather_facts: false vars: env1: LC_ALL: "de_DE.UTF-8" LC_MESSAGES: "de_AT.UTF-8" LANG: "de_CH.UTF-8" env2: LC_MESSAGES: "de_AT.UTF-8" LANG: "de_CH.UTF-8" env3: LANG: "de_CH.UTF-8" env4: empty: empty davical_default_locale: '{{ (ansible_env.LC_ALL|d(ansible_env.LC_MESSAGES)|d(ansible_env.LANG)|d("en")).split(".",1)[0] }}' tasks: - set_fact: ansible_env: '{{ env1 }}' - debug: var=davical_default_locale - set_fact: ansible_env: '{{ env2 }}' - debug: var=davical_default_locale - set_fact: ansible_env: '{{ env3 }}' - debug: var=davical_default_locale - set_fact: ansible_env: '{{ env4 }}' - debug: var=davical_default_locale