|
|
|
from functools import reduce, partial
|
|
|
|
|
|
|
|
from collections import OrderedDict
|
|
|
|
from django.conf import settings
|
|
|
|
|
|
|
|
from shared.utils.translation import get_language, lang_suffix
|
|
|
|
|
|
|
|
|
|
|
|
def i18n_fields(field_name, languages=None):
|
|
|
|
"""
|
|
|
|
Returns a list of i18n fields for a given fieldname.
|
|
|
|
>>> i18n_fields('title', ['en', 'de'])
|
|
|
|
['title_en', 'title_de']
|
|
|
|
"""
|
|
|
|
return [lang_suffix(l, field_name) for l in languages or
|
|
|
|
OrderedDict(settings.LANGUAGES).keys()]
|
|
|
|
|
|
|
|
|
|
|
|
def i18n_fields_list(field_names, languages=None):
|
|
|
|
"""
|
|
|
|
Returns i18n fields for a list of fields, i.e.
|
|
|
|
|
|
|
|
>>> search_fields = ['title', 'window_title', 'short_title']
|
|
|
|
>>> i18n_fields_list(search_fields, ['en', 'de'])
|
|
|
|
['title_en', 'title_en', 'windowtitle_en', 'windowtitle_en', 'shorttitle_en', 'shorttitle_en', ]
|
|
|
|
"""
|
|
|
|
f = partial(i18n_fields, languages=languages)
|
|
|
|
return reduce(lambda x, y: x + y, map(f, field_names))
|