标签: django-modeltranslation

如何使用pip安装特定版本的软件包?

可能重复:
使用Pip安装特定软件包版本

我是一个有点新的pip installvirtualenv一般的.

我已经在我的服务器以及我的本地开发环境中设置了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)

我认为必须有办法,因为这是使用虚拟环境的重点.

python pip virtualenv django-modeltranslation

118
推荐指数
1
解决办法
13万
查看次数

Django 模型翻译查询回退

我正在为多语言站点使用 django 模型翻译。

直接读取属性时,语言回退效果很好。例如,如果当前语言是德语并且我打印 object.title,如果未定义德语标题,我将看到英文标题。

我希望回退也适用于查询,但事实并非如此。事实上,如果我做类似的事情

results = MyModel.objects.filter(title = 'hello')
Run Code Online (Sandbox Code Playgroud)

如果未设置德语标题,这将不会得到任何结果,而我希望它返回带有英文标题“你好”的对象。

我怎样才能使这项工作?

提前致谢。

python django internationalization django-modeltranslation

8
推荐指数
1
解决办法
892
查看次数

Django 模型翻译查询回退不起作用

我正在使用 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

5
推荐指数
0
解决办法
226
查看次数

django 权限和内容类型翻译

一段时间以来,我一直在使用django-modeltranslation来翻译 django 中的模型。它非常简单,并且在我一直在开发的应用程序上运行良好,其中所有模型翻译的内容都由最终用户插入表单

例如:输入:内容,content_en,content_pt,...

我必须构建一个应用程序,我需要在其中翻译由 django 生成的“内置”模型字符串,例如“auth.permission.name”或“contenttypes.contenttype.name” ,并将它们添加到翻译 django.po 文件中

我想出了一个很好的解决方案,

它使用 post_migration 信号创建一个包含 ugettext_lazy 元素列表的文件,因此新字符串(例如新的 contenttype.name)被动态添加到 'django.po' 并加载到数据库中。

然而,必须使用 ugettext 调用创建文件有点奇怪

为了注册字符串,但我没有找到另一种注册方法并将它们动态添加到 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.运行 ' …

python django django-modeltranslation

5
推荐指数
1
解决办法
1257
查看次数

如何解决 django 中的 ORA-22284: 不支持重复的 LONG 绑定错误

我正在使用 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)

oracle django django-modeltranslation

5
推荐指数
1
解决办法
1790
查看次数

Django Rest Framework 中的模型翻译

我正在使用 Django Rest Framework 开发一个 API,我需要一些带有一些字段的模型,这些字段应该支持多种语言的翻译,然后,当然,序列化器应该必须使用预期的语言检索字段。我考虑过两种选择:向模型添加额外的字段(一个语言字段)或使用每种语言的所有文本创建另一个模型。另一方面,我看到有一些库(例如 django-modeltranslation)旨在解决该问题,但是,我想了解一些关于它们的意见。你怎么认为?你会向我推荐什么?

非常感谢

django translation django-models django-rest-framework django-modeltranslation

5
推荐指数
1
解决办法
2194
查看次数

如何为带有翻译的 django Rest 框架模型创建自定义序列化器

我正在使用 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 django-rest-framework django-modeltranslation

5
推荐指数
0
解决办法
615
查看次数

django-oscar 类别和产品翻译

我想用于django-oscar建立一个网上商店,该商店将提供两种主要语言。

Oscar'sView chart翻译对于常规字段(例如or )效果很好Add to chart,但不支持自定义元素,例如Categoriesor Product's Titles

我想要翻译:

  • Category
  • Product.Title
  • Product.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

4
推荐指数
1
解决办法
1414
查看次数

django - 迁移和模型翻译的问题

我正在尝试将我的应用程序从 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)

python django django-south django-modeltranslation

3
推荐指数
1
解决办法
4022
查看次数

django中带有modeltranslation的db出错

我想将国际化添加到项目中,所以我使用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)

python django django-modeltranslation

3
推荐指数
1
解决办法
829
查看次数

django模型翻译-按翻译字段过滤

我需要查询:

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)

我怎样才能做到这一点?

python django django-modeltranslation

1
推荐指数
1
解决办法
834
查看次数

Django modeltranslation - 无法获取和查看原始字段

我正试图django-modeltranslation在我的项目中使用.

目前,仅适用于Tag具有一个字段的模型 - name.

我已创建并注册TranslationOptions,然后makemigrationsmigrate.

现在我无法访问原始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

0
推荐指数
1
解决办法
499
查看次数