modeltransflation是一个转换django模型字段的实用程序。
modeltranslation的Python项目详细描述
埃斯帕诺尔版本README.es.md
简介
此应用程序允许您使用 Django模型转换很容易。 一切都基于fieldtranslation,一个存储 转换应用程序模型的每个字段。
所有的过程都是透明的,当save是 打电话。
您不必修改fieldtranslation,但可以读取代码。
github存储库中的所有代码: https://github.com/intelligenia/modeltranslation
说明
安装
此应用程序依赖于 django-cuser和 TinyMCE所以你会 需要先安装并将其放入已安装的应用程序列表中 模型翻译。
我们鼓励您使用pip安装django cuser。
安装ModelTranslation的最简单方法是从 pipy:
pip install modeltranslation
完成此操作后,可以在settings.py:
中安装ModelTranslation已安装的应用程序=(“tinymce”、“cuser”、“modeltransflation”)
添加为设置的单语。py
您必须在settings.py中包含新设置 是“单语=错误”。是不是单语充当了 模型转换:
# modeltranslation only works when IS_MONOLINGUAL is FalseIS_MONOLINGUAL=False
将可翻译的_model_模块添加到settings.py
将文件设置可翻译的_model_modules添加到settings.py。 可翻译的_model_modules包含将 被翻译。例如:
TRANSLATABLE_MODEL_MODULES=["app1.models","app2.models","fees.models","menus.models",...]
导入addtranslations
如果每个models.py文件:
frommodeltranslation.translationimportaddtranslations
在这之后,您必须在本文末尾调用addtranslations 文件:
addtranslations(__name__)
此调用添加了一个观察者,在save模型 方法被执行。
将可翻译字段添加到模型中
修改模型,包括一个元字段“可翻译字段”。这个 字段是包含要翻译的字段的列表。
例如:
fromdjango.dbimportmodelsclassEvent(models.Model):name=models.CharField(blank=False,max_length=150,verbose_name=u"Name",help_text=u"Name of the event.")description=models.TextField(blank=False,verbose_name=u"Description",help_text=u"Long description of the event.")short_description=models.CharField(blank=False,max_length=150,verbose_name=u"Short description",help_text=u"Short description of the event.")#...## Event MetaclassMeta:verbose_name="event"verbose_name_plural="events"translatable_fields=("name","description","short_description")
就这些!
现在您已经配置了所有内容,可以使用ModelTranslation 翻译。
如何在模型窗体中使用翻译
使modelform对象继承translatablemodelform。本遗嘱 自动包含每种语言的额外字段 你的网站。
frommodeltranslation.formsimportTranslatableModelFormclassEventForm(TranslatableModelForm):pass
如果需要修改init方法中的任何字段(例如 通过更改一个字段的小部件,您将不得不调用 _更改后添加“翻译”表单域。
例如:
# EventForm __init__def__init__(self,event,*args,**kwargs):super(EventForm,self).__init__(*args,**kwargs)# Adds TinyMCE editor but we also want this editor in other# languages' description fieldsself.fields["description"].widget=TinyMCE()# Manually adition of translation fieldsself._add_translation_form_fields()
django模板中的动态翻译
- 在要使用此功能的每个模板中包含ModelTranslation筛选器 特殊过滤器。
{%loadmodeltranslation_tags%}
- 对对象及其字段之一使用filter“\u”。这个过滤器 将返回该字段在当前语言中的翻译。
例如:
{{event|_:"name"}}{# Translates event name #}{{event.area|_:"name"}}{# Translates area name #}
代码中的动态翻译
此应用程序为每个可翻译模型注入新方法: get_trans_attr。此方法返回 在当前语言中(如果存在)属性,否则返回 此属性的默认值:
例如:
# Original event nameoriginal_event_nameevent.name# Translated event nametranslated_event_nameevent.get_trans_attr("name")
联系方式和建议
- 在此存储库中创建新问题。
- 在diegoREMOVE_THIS@intelligeniaREMOVE_THIS.com给我发电子邮件