Django模型表单字段语言没有改变

Django model form field language is not changing

我正在使用 Django 2.2。和 python 3.6。 Bootstrap 4. 我在模板中插入了一个模板和脆皮表格。 此表单是从模型创建的。 model中有imagefield字段。

photo = models.ImageField(upload_to="staff/", null=True, blank=True, verbose_name=_("Fotoğraf"))

crispyform 正在模板中创建字段,但字段中显示的语言是英语。但我想展示土耳其语。 选择文件和浏览应该是土耳其语。 所以我将 settings.py 更改为;

LANGUAGE_CODE = 'tr-tur'

但是还是在页面的字段里写着Choose File and Browse

您可以在屏幕截图中看到除了 "Choose File" 和 "Browse" 之外的所有内容都是土耳其语。

"Choose file" 和 "Browse" 不会被翻译,因为这是 bootstrap 生成字段的一部分。

您可以尝试创建伪 class,如 翻译或自定义字符串 部分中 here 所述。很快,作为 CSS 代码,它应该是这样的:

$custom-file-text: (
  en: "Browse",
  es: "Elegir"
);

问题已解决。首先要更改 "Choose File" 部分:

添加将更改标签文本内容的脚本,

<script>
var input = document.getElementById('id_photo');
var label = input.labels[1];
label.textContent = 'Dosya Seçin'
</script>

其次要更改浏览部分,您必须编辑 bootstrap.min.css 并更改 custom-file-label 部分 内容:"Browse"内容:"What ever you want" 可能有多个内容:"Browse" 定义,全部更改。

尝试在内置表单中更改 Django 的默认语言,方法是在 MIDDLEWARE 中包含 'django.middleware.locale.LocaleMiddleware',在 settings.py