modeltranslation_tags.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:modeltranslation 作者: intelligenia 项目源码 文件源码
def get_translated_attribute(instance, attr):
    """
    Wraps Django Model __getattribute__ method making translation in templates less painful
    """

    # If its class has no translatable fields, returns attribute
    try:
        if not hasattr(instance._meta, "translatable_fields") or len(getattr(instance._meta,"translatable_fields"))==0:
            return getattr(instance, attr)
    except AttributeError:
        return instance

    # Translatable fields of this instance
    translatable_fields = instance._meta.translatable_fields

    # Current language
    cur_language = get_language()
    lang = cur_language.title().lower()

    # If current language is default language, returns attribute
    if lang == settings.LANGUAGE_CODE:
        return getattr(instance, attr)

    # Otherwise, if a translation is NOT needed for attr atribute, get attribute
    if not attr in translatable_fields:
        return getattr(instance, attr)

    # Gets field translations of this instance and return the translated attribute
    field_translation = _get_fieldtranslations(instance, field=attr, lang=lang)
    if field_translation:
        if not field_translation.is_fuzzy:
            return field_translation.translation
    return getattr(instance, attr)


# Register this template filter
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号