我正在try 覆盖Django管理站点的默认翻译.

我用的是Django 1.6.我的settings.py包含:

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

# ...

LANGUAGE_CODE = 'nl'
USE_I18N = True
USE_L10N = True
LOCALE_PATHS = (os.path.join(BASE_DIR, "locale"),)

我已将文件django/contrib/admin/locale/nl/LC_MESSAGES/django.po复制到my_project/locale/nl/LC_MESSAGES/django.po,并对其进行了一些更改.

接下来,我跑了python manage.py compilemessages米和python manage.py runserver米.

然而,当我访问localhost:8000/admin的时候,我仍然看到Django的默认管理员翻译.我做错了什么?

Edit - I found the problem:

以上描述是覆盖应用程序翻译的正确方法.我按照我自己的指示go 做,结果他们成功了.问题的原因是我第一次不小心漏掉了nl子目录.我是个哑巴.

推荐答案

我在提供一个答案,尽管@hedgie主要是回答他们自己的问题.我将添加一些上下文和对正在发生的事情的描述.从Django 3.0开始,这个答案仍然适用.

就像您可以通过在我们自己的项目中复制Django提供的管理模板的名称和目录 struct 来覆盖该模板一样,您可以通过在我们的项目中复制.po个文件的名称和目录 struct 来覆盖Django提供的管理转换.

Django的管理翻译驻留在django/contrib/admin/locale/个目录中,并按语言组织在名为[language code]/LC_MESSAGES/的目录中.这些单独的语言目录包含两个.po文件,django.podjangojs.po,以及它们各自编译的.mo文件.您将覆盖.po个文件,并编译我们自己的.mo个文件.

您必须做的第一件事是在设置中启用翻译,并告诉Django您将我们的翻译文件存储在哪里.

settings.py

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

# ...

LANGUAGE_CODE = 'nl-NL'
USE_I18N = True
USE_L10N = True
LOCALE_PATHS = (os.path.join(BASE_DIR, "locale"),)  # our custom translations will go here

请注意,尽管Django使用的目录是nl,但荷兰荷兰语的完整语言标识符是nl-NL.您可以找到按国家/地区here组织的标识符的完整列表.

接下来,您将模拟Django的目录 struct ,并在新目录中创建两个文件:

my_project/locale/nl/LC_MESSAGES/django.po

my_project/locale/nl/LC_MESSAGES/djangojs.po

请注意,此路径还必须与您在settings.py中提供的路径匹配.

复制并粘贴Django's translation files的内容.现在,您可以编辑任意字符串的翻译.例如:

django.po

msgid "Are you sure?"
--- msgstr "Weet u het zeker?"
+++ msgstr "Weet u het zeker?!"

现在,您需要使用以下命令编译消息:

python manage.py compilemessages

该命令将您的.po个文件编译成.mo个文件,Django将使用这些文件来转换任何匹配的gettext调用.您现在应该会在管理界面中看到您的自定义翻译.

Django相关问答推荐

django命令中的no_color不起作用

如何根据递归ManyToManyField值创建Django查询集?

Django-Values()并按月分组

当使用django-tinymce时,我在哪里指定referer?

Django ImproperlyConfigured: AUTH_USER_MODEL指向尚未安装的模型'users.User'

如何删除django请求中的重复项

断开连接不会发生

如何在 Django 模板中的计数器上进行 for 循环中断?

Django ORM 和锁定表

Django Rest Framework 中的 to_representation() 可以访问普通字段吗

是否可以在没有模型的情况下创建自定义管理视图

具有基于类的视图的 cache_page

如何使用 SQL 的IN等字段上的数组过滤 django 查询集?

超过 1 个外键

从 virtualenv 中,pip freeze > requirements.txt 给出了一堆垃圾!如何修剪它?

如何在 django 元素中开始做 TDD?

Django - 在设置中使用反向 url 映射

如何动态访问 Django 模型字段详细名称?

Django:根据自定义函数过滤查询

想要在 Django 测试中禁用信号