Django模型的简单多语言支持。
项目描述
Django模型的简单多语言支持
这是什么?
一种基于外键关系和属性代理的效率低下、最小化和绝对简单的模型翻译方法。
该项目代码是从yazzgoth在Google代码上的原始项目分叉而来的。
用法
当一个翻译属性的值设置为当前线程中选定的语言时,它将自动返回该属性当前语言的正确值。所以对于一本有英文翻译的书籍,如果一个检测到的语言为英文的客户从模板中请求book.title
,它将简单地返回书籍标题的英文翻译。
models.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'
兼容性
目前维护Django 1.4至1.6版本,适用于Python 2.6、2.7和3.3。
管理集成
admin.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')
从早期版本升级
如果您从早期版本升级,需要注意两个重要事实
多语言模型中的Model MultilingualTranslation字段名为“language_code”。在先前版本中,max_length设置为5。现在已更改为7,以允许更长的语言代码有效。这可能会在某些情况下破坏验证。要在数据库级别反映此更改,可以手动更改模型翻译的数据库表。
在admin.py中,类TranslationInline已重命名为TranslationStackedInline。TranslationInline将很快被弃用。除了TranslationStackedInline之外,现在还有一个TranslationTabularInline。
设置
- MULTILINGUAL_FAIL_SILENTLY
当当前语言找不到翻译且MULTILINGUAL_FALL_BACK_TO_DEFAULT为False时,返回None而不是引发ValueError。默认为DEBUG的反义。
- MULTILINGUAL_FALL_BACK_TO_DEFAULT
当找不到当前激活语言的翻译时,是否回退到MULTILINGUAL_LANGUAGE_CODE。默认为True。
- MULTILINGUAL_LANGUAGE_CODE
当MULTILINGUAL_FALL_BACK_TO_DEFAULT为True时使用的默认语言。默认为LANGUAGE_CODE。
- MULTILINGUAL_LANGUAGES
可翻译的语言集合。默认为LANGUAGES。
- MULTILINGUAL_HIDE_LANGUAGE
在管理界面中隐藏选择语言和删除翻译的功能。当MULTILINGUAL_LANGUAGES包含单个语言时,默认为True。
许可证
本应用程序根据GNU Affero通用公共许可证版本3发布。
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
哈希值 for django_multilingual_model-0.6-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 35c17bb70d885125b5f4a407d26d6b8cc2decaf0244493f5a695804f32f1097d |
|
MD5 | 87a63b87d3eaf74c891cc28c02e941fa |
|
BLAKE2b-256 | 24bc534f8f9387b471229954166ed4f2e1c31fbbd0f135ebaf9ef1126a77a714 |