modeltransflation是一个转换django模型字段的实用程序。

modeltranslation的Python项目详细描述


埃斯帕诺尔版本README.es.md

简介

此应用程序允许您使用 Django模型转换很容易。 一切都基于fieldtranslation,一个存储 转换应用程序模型的每个字段。

所有的过程都是透明的,当save是 打电话。

您不必修改fieldtranslation,但可以读取代码。

github存储库中的所有代码: https://github.com/intelligenia/modeltranslation

说明

安装

此应用程序依赖于 django-cuserTinyMCE所以你会 需要先安装并将其放入已安装的应用程序列表中 模型翻译。

我们鼓励您使用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模板中的动态翻译

  1. 在要使用此功能的每个模板中包含ModelTranslation筛选器 特殊过滤器。
{%loadmodeltranslation_tags%}
  1. 对对象及其字段之一使用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")

联系方式和建议

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法从组合框中选择值。需要JS替代方案   打印带有规范问题的Java打印程序?   使用Xmodem传输文件内容时的附加ASCII字符的java传输   java JAXB通过socket和流读取器块   java“错误:在类Grad中找不到Main方法,请将Main方法定义为:public static void Main(字符串[]args)”   如何在Java中将图像从彩色转换为黑白(灰度)   java如何使用Google云连接服务器发送上游GCM消息   JAVA中的JSON文件字段交叉点   什么是“搜索:{…}”/Java中正式使用的“中断搜索”语法?   由于明显的类路径冲突导致java ToDiscoverable强制转换错误?   java可以成为一种语言。类文件不能添加到URLClassLoader的urlpath   Android设备上会话管理的java最佳实践   Java8Java上的Google应用程序引擎。开发服务器上的时间不可用?   java Derby数据库导出为单个文件?   java如何让jmeter根据访问日志行中的时间戳进行日志重放   访问EJB分离接口时的java IllegalAccessException   java使用JsonPath在不知道密钥的情况下提取值   java将文件保存到Jersey API中的服务器应用程序目录   jsoup中的java Http异常   java有没有错误?