Django对模型的简单多语言支持。
django-multilingual-model的Python项目详细描述
Django对模型的简单多语言支持
使用量
为当前所选语言设置翻译属性时 在这个线程中,它将自动生成该属性的正确值 对于当前语言。所以对于一本在 从客户的模板中请求book.title 检测到的语言是英语,只会产生 书名。
型号.py:
from multilingual_model.models import MultilingualModel, MultilingualTranslation class BookTranslation(MultilingualTranslation): class Meta: unique_together = ('parent', 'language_code') parent = models.ForeignKey('Book', related_name='translations') title = models.CharField(max_length=32) description = models.TextField() class Book(MultilingualModel): ISBN = models.IntegerField() >>> book = Book(ISBN="1234567890") >>> book.save() >>> book_en = BookTranslation(language_code='en') >>> book_en.title = "Django for Dummies" >>> book_en.description = "Django described in simple words." >>> book_en.parent = book >>> book_en.save() >>> book_pl = BookTranslation(language_code='pl') >>> book_pl.title = "Django dla Idiotow" >>> book_pl.description = "Django opisane w prostych slowach" >>> book_pl.parent = book >>> book_pl.save() >>> # now here comes the magic >>> book.title_en u'Django for Dummies' >>> book.description_pl u'Django opisane w prostych slowach'
兼容性
目前Django1.4到1.6是为Python2.6、2.7和3.3维护的。
管理集成
管理员:py:
from django.contrib import admin import models from multilingual_model.admin import TranslationStackedInline class BookTranslationInline(TranslationStackedInline): model = models.BookTranslation class BookAdmin(admin.ModelAdmin): list_display = ["ISBN"] inlines = [BookTranslationInline] admin.site.register(models.Book, BookAdmin)
使用翻译字段的unicode表示
为了使unicode函数的翻译工作,一些魔术 是必需的。默认情况下,会包含一个帮助方法,允许您执行以下操作:
def __unicode__(self): return self.unicode_wrapper('title', default='Unnamed')
从以前版本升级
如果您从以前的版本升级,您需要注意两个重要的事实:
- 多语言模型中的模型多语言翻译有一个字段 命名为“语言代码”。在以前的版本中,最大长度设置为5。这个有 已更改为7以允许更长的语言代码有效。这 在某些情况下可能会破坏验证。一种反映这种变化的方法 数据库的级别是手动更改模型的数据库表 翻译出来的。
- 在admin.py中,translationLine类已重命名为 行中的翻译。translationline很快就会被弃用。另外 到translationstackedinline,现在有一个translationtabularinline。
设置
- 多语言故障无提示
- 当
找不到当前语言,多语言返回默认值为
错误。默认为与调试相反
- 多语言返回默认值
- 在没有翻译时是否返回到多语言代码 可以找到当前激活语言的。默认为true
- 多语言代码
- 当多语言返回默认值时使用的默认语言是true。 默认为语言代码
- 多种语言
- 一组可供翻译的语言。默认为语言
- 多语言隐藏语言
- 在管理中隐藏选择语言和删除翻译的功能。 当多语言包含一种语言时,默认为true。
许可证
此应用程序在GNU Affero通用公共许可版本3下发布。