Add inital i18n translation support
The filter_plugin translate allows to translate strings using yavdr.mo files from the package yavdr-i18n. ansible-playbook must be called with an UTF-8 locale (e.g. de_DE.UTF-8), LANG=C or LANG=POSIX are not allowed. Usage of the new filter: "{{ "my string" | translate }}"
This commit is contained in:
parent
767807e3e4
commit
3051e04c53
@ -12,23 +12,18 @@ ANSIBLE_METADATA = {
|
||||
'supported_by': 'yavdr'
|
||||
}
|
||||
|
||||
|
||||
import gettext
|
||||
from ansible.errors import AnsibleFilterError
|
||||
from ansible.module_utils.six.moves.urllib.parse import urlsplit
|
||||
from ansible.module_utils._text import to_text
|
||||
from ansible.utils import helpers
|
||||
|
||||
|
||||
def translate_yavdr(text, language=None, **kwargs):
|
||||
if language is None:
|
||||
language = kwargs.get('system_language', 'en')
|
||||
translation = kwargs.get('translations', {}).get(language, {}).get(text, None)
|
||||
if translation:
|
||||
return translation
|
||||
else:
|
||||
def translate_yavdr(text):
|
||||
gettext.textdomain('yavdr')
|
||||
try:
|
||||
return gettext.gettext(text)
|
||||
except:
|
||||
return text
|
||||
|
||||
|
||||
# ---- Ansible filters ----
|
||||
class FilterModule(object):
|
||||
''' URI filter '''
|
||||
|
@ -1,6 +1,9 @@
|
||||
---
|
||||
# file: group_vars/all
|
||||
|
||||
# for translation filter
|
||||
locale: "{{ ansible_env.LANG }}"
|
||||
|
||||
# this is the standard text to put in templates
|
||||
ansible_managed_file: "*** YAVDR: ANSIBLE MANAGED FILE ***"
|
||||
branch: experimental
|
||||
|
Loading…
Reference in New Issue
Block a user