问题标签 [django-translated-fields]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
389 浏览

python - 使用带有 django-translated-fields 的表单

请看一下这个问题:

如何将 ModelForm 与 django-translated-fields 一起使用?

你有什么解决办法吗?

简而言之,我正在尝试将 Speedy Net 从 using 转换django-modeltranslationdjango-translated-fields. 我定义了模型和表单,一切都用英语工作,但是用另一种语言(希伯来语)我有一个问题,表单字段是用英语而不是希伯来语(当前语言)定义的。我做错了什么,如何定义表格以使用当前语言?(模型中由 TranslatedField 定义的字段应仅在 SpeedyMatchProfileActivationForm 形式的当前语言中可见)。

我想澄清一下,所需的定义与上述不同。所需的定义是使用表单中的当前语言,而不是始终使用英语。当前语言不是英语时使用英语是一个错误。

你可以在这里看到代码:

表格.py

模型.py

现在的问题在于类SpeedyMatchProfileActivationForm(在forms.py中定义)。我认为这主要是因为类是在get_language()返回任何东西之前定义的。但是当类被定义时django-modeltranslation(例如在 branch staging中),它就起作用了。

顺便说一句,我想切换到的原因之一django-translated-fields是因为它在数据库中只定义了 2 个(语言数量)字段,并django-modeltranslation定义了 3 个字段 - 其中一个(没有任何语言的主要字段)在我看来不是完全有必要。看看: 删除迁移时的原始语言字段

class SpeedyMatchProfileActivationForm现在定义(带有django-translated-fields链接):

它是以前定义的(带有django-modeltranslation, link):

谢谢!

0 投票
2 回答
370 浏览

django - 带有 django 翻译字段的多语言 slug

我正在尝试在django-translated-fields的帮助下实现多语言 Django 网站。

我正在进行的项目基于cookiecutter-django和 Docker。

翻译适用于我的模型字段 - 除了 slug 字段。实际上,slug 的翻译也可以,但我无法使用 slug 字段来获得一个条目。

投票模型摘录:

项目的完整投票模型可以在这里看到。

观点摘录:

完整视图可以在这里看到

由于 Django 翻译的字段创建slug_enslug_de等等,我找不到以相应语言获取 slug 的解决方案。

这应该很明显,因为 Django 翻译字段的文档说:

实际上没有创建模型字段。TranslatedField 实例是一个描述符,默认情况下充当当前语言字段的属性。

不幸的是,无论如何都没有得到它。知道如何更改投票模型以获取特定语言的条目吗?

0 投票
4 回答
1224 浏览

python - Django ModelForm - 有没有办法动态定义字段,但不是最后一个字段?

我有一个ModelFormDjango 2.1,我将一些字段移动到另一个模型。调用make_migrations会导致错误,因为这些字段在当前模型中不存在。我在表单中添加了一些字段,但其中一个字段是TranslatedField(来自django-translated-fields),因此目前有 2 个字段,未来可能会更多,具体取决于语言的数量。该字段的名称是 city,目前我收到一条错误消息“ Unknown field(s) (city_en, city_he) specified for SiteProfile”(因为我使用 2 种语言 - “en”和“he”) - 但我想使用 for 循环动态创建所有字段我们在项目中使用的语言。__new__我可以覆盖(这是一种很好的编程方法)该方法还是有其他方法?我不喜欢硬编码特定的字段名称(city_encity_he) 因为它们将来可能会改变,这取决于我们使用多少种语言。

你可以在 GitHub 上看到我当前的提交(不工作)。

以及这个分支的当前代码

__init__我想知道在保存字段的 ModelForm 中定义动态字段列表的最佳编程方法是什么(它们都是相同的,只会使用其中一个,在方法中删除另一个)另一种型号(有两种型号,但只有一种形式)。

由于运行 make_migrations 时出现此错误,我仍然没有提交迁移。

(我定义了一个make_migrations只做的命令makemigrations

表格(我试图覆盖__new__):

更新 1:我正在考虑在__init__方法中定义这些字段,同时将它们从fieldsin 中删除class Meta,但这是一个好方法吗?定义不在列表中的字段fields

Django警告不要明确定义字段。

强烈建议您使用 fields 属性显式设置应在表单中编辑的所有字段。如果表单意外允许用户设置某些字段,尤其是在向模型添加新字段时,不这样做很容易导致安全问题。根据表单的呈现方式,问题甚至可能在网页上不可见。

另一种方法是自动包含所有字段,或仅将一些字段列入黑名单。众所周知,这种基本方法的安全性要低得多,并导致主要网站(例如 GitHub)上的严重漏洞。

我想知道是否有无需对语言进行硬编码的解决方案。目前我对语言进行了硬编码:

https://github.com/speedy-net/speedy-net/blob/staging/speedy/match/accounts/forms.py#L64-L66

更新2:我发现我可以通过__init__在表单的方法中添加这一行来动态添加这个字段:

然后将其从class Meta表单本身的硬编​​码定义中的字段列表中删除。但是,该字段被创建为表单中的最后一个字段,我希望它位于中间。有没有办法在中间添加这个字段?

0 投票
1 回答
352 浏览

django - Django Parler“不能直接更改'language_code'属性

我目前正在扩展一个插件以与 Django 翻译和语言一起使用。这是有问题的方法。在涉及翻译之前,它根据需要工作。

我扩展了查询以从几个翻译表中提取数据。但是,我收到一个错误,我不确定如何处理。

追溯:

我究竟做错了什么?问题出在这里raw_authors = list(AuthorProfile.objects.raw(query))吗?我是否应该做类似的事情MyModel.objects.language('en'). ...,在更改查询以丢弃处理翻译的部分后通过 Parler 运行查询?什么是正确的方法?

0 投票
2 回答
135 浏览

python - Django 模型字段包含奇怪的属性 _("private")

目前我一直在学习 Django,在阅读时,我遇到了以下我不理解的代码块。

上面的代码行包含_('private'),我无法理解它的作用。我知道_用于翻译相关的东西。为什么没有声明属性名称_("private")

我试图在网上找到答案,但一直无法。

谢谢。

0 投票
0 回答
30 浏览

django - Django {% trans %} 没有翻译新的变化

我正在尝试在本地运行一个网络应用程序(从这里分叉)。我正在使用{% trans %}标签来标记要翻译的字符串。

原始代码是<h3> Personal data</h3>.

但是,当我将其更改为 时<h3>{% trans "Personal data" %}</h3>,即使下一行中的原始文本(来自分叉存储库)被翻译,“个人数据”也不会被翻译。

以下屏幕截图突出显示了该问题: 在此处输入图像描述

当我对标签之间的文本进行任何更改时<html>,它会反映在我的本地实例中。但是,当我对标有 的字符串进行更改时{% trans %},它不会在我的本地实例中被翻译(即使原始文本的其余部分已被翻译)。

注意:对没有{% trans %}标签的文本所做的更改会反映在我的本地实例中。 在此处输入图像描述

该应用程序使用docker-compose up

为什么{% trans %}标签对新更改不起作用?

0 投票
0 回答
65 浏览

django - Django 从数据库 {{ 专业 }} 翻译数据

是否可以翻译数据库条目?我有一个需要翻译的依赖下拉故事。但我无法翻译下拉字段,这些字段来自其他模型并且是硬编码的。我可以使用带有 JQ 的 HTML 来实现这一点,但我想跳过手动劳动以在每次添加新职业或职业类别时更新表单。

0 投票
0 回答
18 浏览

django - 无法翻译

我正在使用 Django 和 Angular,在我的模板中我有:

这条线翻译得很完美<th>{% trans 'Name' %}</th>

但是那行根本没有翻译:<td>{% trans word.name %}</td>

我准确地说我也尝试过blocktrans,但没有效果。

当然,我做了编译消息来测试它。

请问你能帮帮我吗 ?

非常感谢 !

0 投票
0 回答
51 浏览

django - 有什么方法可以翻译已经通过夹具下载到我的 PostgreSQL 数据库中的 django 模型中的字段?

我一直在阅读有关 Django 中的国际化/位置的信息,并且陷入了僵局:

  1. 我需要将 charfield 从英语翻译成西班牙语,但是这些数据会上传到我的项目中,以实现一个夹具。我无法使用 django.utils.translations 中的本机工具,因为 makemessages 命令无法识别此数据。此外,我发现为此类上传的字符串制作自定义 django.po 消息文件是一种不好的做法:https ://code.djangoproject.com/ticket/6952 。
  2. 另一方面,我找到了 django-modeltranslation 包(https://django-modeltranslation.readthedocs.io/en/latest/index.html),但这并不能解决我的问题,因为我需要我的 charfield 中的字符串一个自定义的语言环境,我必须根据要求为每个语言提供特定的翻译,我只看到这个工具只能基于标准本地化进行翻译。

有任何想法吗?

这是我的模型以获取更多信息:

0 投票
0 回答
50 浏览

javascript - 在 django 的 javascript 文件中翻译数组中的单词

我安装了用于翻译 javascript 文件中文本的 JavaScript 目录,如文档中所述:https ://docs.djangoproject.com/en/3.2/topics/i18n/translation/#module-django.views.i18n

效果很好。我可以创建 PO 翻译文件,并制作和编译翻译。例如:

gettext("my-translation")

会工作得很好。

现在我想从 API 调用中获取一个数组,如下所示:

let arr = ["red", "green", "yellow", "blue"].

我不知道如何gettext为数组中的每个单词创建翻译。我试图用arr.map(i => gettext( + i + ")"));. 我也尝试将它添加到整个数组中gettext(arr),但没有成功。

我的网络搜索对我没有帮助。我无法更改数组的表示,因此我需要在前端执行此操作。

这有什么诀窍吗?感谢您的任何帮助和提示。

编辑:

  • 我试过了arr.map(i => gettext( + i + ")"));。这会将最后一个“)”添加到字符串中,因此它不起作用

  • 我试过arr.map(i => gettext(i));这返回相同的数组而不添加gettext

  • 我试过 arr.map(i => gettext() + i); 这会在字符串中添加一个“未定义”

我尝试了其他我不记得的组合