可能重复:
使用Pip安装特定软件包版本
我是一个有点新的pip install和virtualenv一般的.
我已经在我的服务器以及我的本地开发环境中设置了virtualenv.
在服务器上,包django_modeltranslation-0.4.0_beta2完全正常.
但是在我的本地机器django_modeltranslation-0.5.0-alpha上似乎根本不能正常工作.
我通常只需将它安装在virtual-env中,如下所示:
$ source bin/active
(env)$ pip install django_modeltranslation
Run Code Online (Sandbox Code Playgroud)
这会获得最新版本,现在这是第一次导致使用最新版本的问题.
所以我卸载了像这样的版本5 alpha:
(env)$ pip uninstall django_modeltranslation
Run Code Online (Sandbox Code Playgroud)
但现在我不知道如何才能再次获得0.4.0 Beta的工作版本.我尝试了这个,但它找不到它:
(env)$ pip install django_modeltranslation-0.4.0_beta2
Downloading/unpacking django-modeltranslation-0.4.0-beta2
Could not find any downloads that satisfy the requirement django-modeltranslation-0.4.0-beta2
No distributions at all found for django-modeltranslation-0.4.0-beta2
Run Code Online (Sandbox Code Playgroud)
我认为必须有办法,因为这是使用虚拟环境的重点.
我正在为多语言站点使用 django 模型翻译。
直接读取属性时,语言回退效果很好。例如,如果当前语言是德语并且我打印 object.title,如果未定义德语标题,我将看到英文标题。
我希望回退也适用于查询,但事实并非如此。事实上,如果我做类似的事情
results = MyModel.objects.filter(title = 'hello')
Run Code Online (Sandbox Code Playgroud)
如果未设置德语标题,这将不会得到任何结果,而我希望它返回带有英文标题“你好”的对象。
我怎样才能使这项工作?
提前致谢。
我正在使用 django modeltranslation 来构建一个多语言站点。
Slug 字段也被翻译。让我们考虑有一个带有 slug 字段的 Page 模型,该字段已注册用于翻译。每个页面都有一个以 slug 结尾的 url。在模板中打印 slug,回退效果很好。因此,假设只设置了 english slug,如果活动语言是德语,它将打印带有 english slug 的 url。还行吧。
在视图中搜索该页面时,使用类似
get_object_or_404(Page, slug = slug)
Run Code Online (Sandbox Code Playgroud)
如果未设置德语 slug,则引发 404,并且不会回退到英语。
我怎样才能使回退工作也适用于查询?
谢谢你的帮助。
python django fallback internationalization django-modeltranslation
一段时间以来,我一直在使用django-modeltranslation来翻译 django 中的模型。它非常简单,并且在我一直在开发的应用程序上运行良好,其中所有模型翻译的内容都由最终用户插入表单。
例如:输入:内容,content_en,content_pt,...
我必须构建一个应用程序,我需要在其中翻译由 django 生成的“内置”模型字符串,例如“auth.permission.name”或“contenttypes.contenttype.name” ,并将它们添加到翻译 django.po 文件中。
它使用 post_migration 信号创建一个包含 ugettext_lazy 元素列表的文件,因此新字符串(例如新的 contenttype.name)被动态添加到 'django.po' 并加载到数据库中。
为了注册字符串,但我没有找到另一种注册方法并将它们动态添加到 django.po 文件中,所以我需要你的帮助
这是我所做的:
1.我创建了一个名为“tools”的应用程序,它是 INSTALLED_APPS 上的最后一个,所以它的迁移自然是最后一个被调用的。这个应用程序没有任何模型,它只是运行迁移,有 django-modeltranslation translation.py 文件和一个带有 post_migration 信号调用的应用程序配置。
# translations.py
from modeltranslation.translator import translator, TranslationOptions
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
class PermissionTranslationOptions(TranslationOptions):
fields = ('name',)
class ContentTypeTranslationOptions(TranslationOptions):
fields = ('name',)
translator.register(Permission, PermissionTranslationOptions)
translator.register(ContentType, ContentTypeTranslationOptions)
Run Code Online (Sandbox Code Playgroud)
2.运行 ' …
我正在使用 django 和 oracle 数据库。我有一个使用 django-modeltranslation 的模型。当我添加超过一种语言的文本时,Oracle 数据库抛出 ORA-22284: 不支持重复的 LONG 绑定错误。我该如何解决?我是 StackOverFlow 的新手。如果我的问题不够详细,请告诉我。
这是我的模型:
class About(models.Model):
image = models.ImageField(upload_to='about', verbose_name=_('Image'))
text = models.TextField(verbose_name=_("Text"))
phone = models.CharField(max_length=50, verbose_name="Phone")
address = models.CharField(max_length=255, verbose_name=_("Address"))
class Meta:
verbose_name = _("About")
verbose_name_plural = _("About")
def __str__(self):
return str(_('About AzeriCard'))
Run Code Online (Sandbox Code Playgroud)
这是 Translations.py
from app.models import *
from modeltranslation.translator import translator, TranslationOptions
class AboutTrans(TranslationOptions):
fields = ('text', 'address')
Run Code Online (Sandbox Code Playgroud) 我正在使用 Django Rest Framework 开发一个 API,我需要一些带有一些字段的模型,这些字段应该支持多种语言的翻译,然后,当然,序列化器应该必须使用预期的语言检索字段。我考虑过两种选择:向模型添加额外的字段(一个语言字段)或使用每种语言的所有文本创建另一个模型。另一方面,我看到有一些库(例如 django-modeltranslation)旨在解决该问题,但是,我想了解一些关于它们的意见。你怎么认为?你会向我推荐什么?
非常感谢
django translation django-models django-rest-framework django-modeltranslation
我正在使用 django-rest-framework,并且我有一个模型“TextElement”,其属性“text”是使用 django-modeltranslation 翻译的。我需要创建一个通用序列化程序,它接受翻译的字段并作为数据返回字典,其中语言作为键,翻译的属性作为值。例子:
text_element = TextElement.objects.get(id=1)
text_element_serializer = TextElementSerializer(text_element)
text_element_serializer.data
>> {"text": {"en": "Something", "es": "Algo"}, "other_attribute": "Something else"}
Run Code Online (Sandbox Code Playgroud)
我可以使用以下序列化器来做到这一点:
class TextElementSerializer(serializer.ModelSerializer):
text = serializer.SerializerMethodField()
class Meta:
model = TextElement
fields = ('text', 'other_attribute')
def get_text(self, instance):
return {
'en': instance.text_en,
'es': instance.text_es
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否可以创建一个通用序列化程序,自动检查“字段”中的所有翻译属性,使用 settings.LANGUAGES 中的可用语言并返回相同的数据结构。
提前致谢!
我想用于django-oscar建立一个网上商店,该商店将提供两种主要语言。
Oscar'sView chart翻译对于常规字段(例如or )效果很好Add to chart,但不支持自定义元素,例如Categoriesor Product's Titles。
我想要翻译:
CategoryProduct.TitleProduct.Description我想出了两种方法:
方法一——修改django-oscar模板
我可以根据奥斯卡的翻译文档创建自定义翻译集。
然后django.po用翻译后的类别和产品标题填写适当的文件。
不幸的是,我将不得不覆盖一些模板,因为它们trans默认不使用 templatetag。例如我会改变。
<a href="{{ category.get_absolute_url }}">{{ category.name }}</a>
Run Code Online (Sandbox Code Playgroud)
到
<a href="{{ category.get_absolute_url }}">{% trans category.name %}</a>
Run Code Online (Sandbox Code Playgroud)
在这个奥斯卡的模板中。
这种方法的主要问题是需要覆盖模板、更新django.po以及使用每个要翻译的新条目进行编译。
方法二——使用django-modeltranslation
使用这个插件。
问题
我是否错过了一些内置django-oscar's功能,或者我必须使用上述方法之一?
django locale translation django-modeltranslation django-oscar
我正在尝试将我的应用程序从 Django v1.6.11 升级到 v1.7.8。我按照说明从南方升级,但一次又一次遇到相同的错误。更确切地说:
\n\n$ python manage.py migrate makemigrations\n/home/roberto/virtualenvs/ve_unicms-django1.7/local/lib/python2.7/site-packages/reversion/admin.py:385: RemovedInDjango18Warning: commit_on_success is deprecated in favor of atomic.\n def recover_view(self, request, version_id, extra_context=None):\n\n/home/roberto/virtualenvs/ve_unicms-django1.7/local/lib/python2.7/site-packages/reversion/admin.py:397: RemovedInDjango18Warning: commit_on_success is deprecated in favor of atomic.\n def revision_view(self, request, object_id, version_id, extra_context=None):\n\n/home/roberto/virtualenvs/ve_unicms-django1.7/local/lib/python2.7/site-packages/django/forms/widgets.py:143: RemovedInDjango18Warning: `VersionMetaAdmin.queryset` method should be renamed `get_queryset`.\n .__new__(mcs, name, bases, attrs))\n\n/home/roberto/virtualenvs/ve_unicms-django1.7/local/lib/python2.7/site-packages/cms/publisher/manager.py:5: RemovedInDjango18Warning: `PublisherManager.get_query_set` method should be renamed `get_queryset`.\n class PublisherManager(models.Manager):\n\n/home/roberto/virtualenvs/ve_unicms-django1.7/local/lib/python2.7/site-packages/cms/models/managers.py:15: RemovedInDjango18Warning: `PageManager.get_query_set` method should be renamed `get_queryset`.\n class PageManager(PublisherManager):\n\n/home/roberto/virtualenvs/ve_unicms-django1.7/local/lib/python2.7/site-packages/cms/admin/change_list.py:39: RemovedInDjango18Warning: `CMSChangeList.get_query_set` method should be renamed `get_queryset`.\n class CMSChangeList(ChangeList):\n\n/home/roberto/virtualenvs/ve_unicms-django1.7/local/lib/python2.7/site-packages/cms/admin/forms.py:397: RemovedInDjango18Warning: Creating …Run Code Online (Sandbox Code Playgroud) 我想将国际化添加到项目中,所以我使用django-modeltranslation app.但是,在完成配置和运行迁移的所有步骤后,当我输入我的管理员时,模型已注册,但是当我点击它时:
"数据库安装出了问题.请确保已创建相应的数据库表,并确保相应用户可以读取数据库."
这是代码(注意我为了清楚起见将它全部放在一个文件中):
INSTALLED_APPS = [
'modeltranslation',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'nuggets',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'Trans',
'USER': 'postgres',
'PASSWORD': 'c1l2a3u4',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
gettext = lambda s: s
LANGUAGES = (
('en', gettext('English')),
('es', gettext('Spanish')),
)Run Code Online (Sandbox Code Playgroud)
#Models code
from django.db import models
class News(models.Model):
title = models.CharField(max_length=255)
text = models.TextField()
#Admin code
from …Run Code Online (Sandbox Code Playgroud)我需要查询:
MyModel.objects.filter(title_de="some title")
Run Code Online (Sandbox Code Playgroud)
其中,de里面title_de是动态
我不能做:
MyModel.objects.filter('title_%s' % language = "some title")
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正试图django-modeltranslation在我的项目中使用.
目前,仅适用于Tag具有一个字段的模型 - name.
我已创建并注册TranslationOptions,然后makemigrations和migrate.
现在我无法访问原始name文本.它似乎被''(空字符串)替换,但它不是:
In [6]: Tag.objects.first()
Out[6]: <Tag: >
In [7]: Tag.objects.first().name
Out[7]: u''
In [8]: Tag.objects.first().__dict__
Out[8]:
{'_state': <django.db.models.base.ModelState at 0x7fc96ad41710>,
'id': 1,
'name': u'Sport',
'name_cs': None,
'name_de': None,
'name_en': None,
'name_es': None,
'name_fr': None,
'name_ru': None,
'name_sk': None}
In [9]: Tag.objects.first().name
Out[9]: u''
Run Code Online (Sandbox Code Playgroud)
你知道如何访问这个领域吗?
编辑
models.py
class Tag(models.Model):
name = models.CharField(max_length=50,verbose_name=u'Tag',unique=True)
def __unicode__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
translation.py
from modeltranslation.translator import register, TranslationOptions
from …Run Code Online (Sandbox Code Playgroud) python django django-database django-modeltranslation django-2.0
django ×11
python ×8
translation ×2
django-2.0 ×1
django-oscar ×1
django-south ×1
fallback ×1
locale ×1
oracle ×1
pip ×1
virtualenv ×1