文档章节

django国际化

上官清偌
 上官清偌
发布于 2017/09/12 09:13
字数 757
阅读 46
收藏 0

最近在研究django国际化,最终还是研究好了

1:开启国际化的支持,需要在settings.py文件中设置

MIDDLEWARE_CLASSES = (
   'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',//放在 django.contrib.sessions的后面 
)
 
 
LANGUAGE_CODE = 'zh_Cn'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
 
LANGUAGES = (
    ('en', ('English')),
    ('zh-cn', ('中文简体')),
)
 
#翻译文件所在目录,需要手工创建
LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)
 
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            #insert your TEMPLATE_DIRS here
            os.path.join(BASE_DIR,  'templates'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                "django.core.context_processors.i18n",//记得要加上这句话
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',

                # 'utils.context_processors.clusters',
            ],
        },
    },
]

2:在项目根目录下面创建一个locale文件夹,然后使用命令创建国际化文件:

django-admin.py makemessages -l zh_CN

3:执行完后,locale文件夹下面创建zh_CN/LC_MESSAGES/django.po,里面的内容类似下面:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-11 16:40+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: api/keystone.py:53
#, python-format
msgid "%(type)s (%(backend)s backend)"
msgstr ""

#: api/service/resource/pool_base.py:112
msgid "running"
msgstr ""

#: api/service/resource/pool_base.py:112
msgid "OUT"
msgstr ""

#: api/util.py:26
#, python-format
msgid "%s days %s hours ago"
msgstr ""

#: api/util.py:29
#, python-format
msgid "%s minutes ago"
msgstr ""

#: api/util.py:30
#, python-format
msgid "%s seconds ago"
msgstr ""

#: api/util.py:42 api/util.py:57
#, python-format
msgid "%s days %s hours"
msgstr ""

#: api/util.py:45 api/util.py:60
#, python-format
msgid "%s minutes"
msgstr ""

#: api/util.py:46 api/util.py:61
#, python-format
msgid "%s seconds"
msgstr ""

#: api/util.py:78
msgid "Unable to retrieve instance tenant information."
msgstr ""

#: api/util.py:91
msgid "Unable to retrieve instance size information."
msgstr ""

#: api/util.py:106
msgid "Unable to retrieve instance user information."
msgstr ""

#: templates/template2/menu.html:13
#:菜单
msgid "Dashboard"
msgstr "首页"

msgid "Infrastructure"
msgstr "基础设施"

msgid "Cluster"
msgstr "集群"

msgid "Resource"
msgstr "资源"

msgid "App Center"
msgstr "应用中心"

msgid "System"
msgstr "系统"

#:System下的子菜单
msgid "Authentication"
msgstr "认证"

msgid "Account"
msgstr "帐户"

msgid "Task"
msgstr "任务"

msgid "Schedule"
msgstr "计划表"

msgid "Policy"
msgstr "策略"

msgid "Periodic Task"
msgstr "周期性任务"

msgid "Backup & Log"
msgstr "备份和日志"

msgid "Backup"
msgstr "备份"

msgid "Snapshot"
msgstr "快照"

msgid "Log"
msgstr "日志"

msgid "Template"
msgstr "模板"

msgid "CSM"
msgstr "系统管理"

msgid "Setting"
msgstr "设置"

msgid "Upgrade"
msgstr "升级"

msgid "License"
msgstr "许可证"

#: templates/dashboard/index.html:36
# 主页
msgid "Global View"
msgstr "地图"

4:写好了所有的翻译后,再执行:

django-admin.py compilemessages

5:在html中的应用

  • 注意

<title>{% trans 'str'%}</title>

<!DOCTYPE html>
{% load i18n %}//要加翻译的前缀 
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="/static/css/style.css">
</head>
<body>
<form action="/url 'go'/" method="post" class="smart-green">
    <h1>留言信息
        <span>{% trans 'test' %}</span>//要翻译的信息加入其中
    </h1>
    <label>
        <span>姓名 :</span>
        <input id="name" type="text" name="name" value="{% ifequal my_message.name|slice:"3"  "你好吗" %}我不好{% else %}not name{% endifequal %}" class="error" placeholder="请输入您的姓名"/>
        <div class="error-msg"></div>
    </label>

    <label>
        <span>邮箱 :</span>
        <input id="email" type="email" value="{{ my_message.email }}" name="email" placeholder="请输入邮箱地址"/>
        <div class="error-msg"></div>
    </label>

    <label>
        <span>联系地址 :</span>
        <input id="address" type="text" value="{{ my_message.address }}" name="address" placeholder="请输入联系地址"/>
        <div class="error-msg"></div>
    </label>
    <label>
        <span>留言 :</span>
        <textarea id="message" name="message"   placeholder="请输入你的建议">{{ my_message.message }}</textarea>
        <div class="error-msg"></div>
    </label>
    <div class="success-msg"></div>
    <label>
        <span>&nbsp;</span>
        <input type="submit" class="button" value="提交"/>
    </label>
    <input type='hidden' name='csrfmiddlewaretoken' value='SfHkbL4feo1G00sJQtbO7TtLN4c2BUwa' />
    {% csrf_token %}
</form>

</body>
</html>

© 著作权归作者所有

共有 人打赏支持
上官清偌
粉丝 11
博文 87
码字总数 123671
作品 0
浦东
程序员
私信 提问
Django 国际化实例及原理分析

当 Web 服务搭建好以后,可以接收来自全球不同国家用户访问。这样就要求开发人员调整软件,使之能适用于不同的语言,即国际化和本地化。国际化 -- Internationalization,i 和 n 之间有 18 个...

红薯
2011/02/03
5.4K
9
Django实现国际化的步骤

Django国际化的详细文档: http://djangobook.py3k.cn/2.0/chapter19/ (中文) 英文好的可以看: https://docs.djangoproject.com/en/1.4/topics/i18n/ 在这里写下Django实现国际化的基本步骤,...

messud4312
2016/02/14
108
0
简易博客系统--SimpleBlog

笔者用过django一段时间了,是时候写点东西了。不过官网文档稍微有点复杂,对新手而言很困难,而网上的一些教程很多都过时了,最近看到一个外文的教程非常不错,基于最新的django1.9写的,通...

一刀
2015/01/04
2.8K
0
django 国际化翻译机制和locale文件夹的位置是什么关系呢?

django 国际化翻译机制和locale文件夹的位置是什么关系呢?比如说我在项目文件夹根目录下面有个locale文件夹,在app文件夹 里面也有一个locale文件夹,那么我在用 django-admin.py makemessages...

self001
2013/06/20
615
1
Django REST framework 3.1 发布

Django REST framework 3.1 发布了,该版本值得关注的新特性包括: 超级智能的游标分页模式 改进分页 API,支持头部和内容中分页风格 在可浏览 API 实现分页控制渲染 更好的支持 API 版本化 ...

oschina
2015/03/07
2.2K
2

没有更多内容

加载失败,请刷新页面

加载更多

Word Pattern(leetcode290)

Given a pattern and a string str, find if str follows the same pattern. Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empt......

woshixin
4分钟前
0
0
Kubernetes 1.13.1快速升级

Kubernetes 1.13.1已经正式发布,快速升级(含国内镜像快速下载链接)包括升级kubeadm/kubectl/kubelet版本、拉取镜像、升级Kubernetes集群三个主要步骤。注意Kubernetes 1.12.3版本暂时不支...

openthings
7分钟前
0
0
多线程的实现方式

多线程是指 一个程序运行时,产生或使用了不止一个线程。 线程的生命周期是怎么样的,下面这张图我们可以看出些端倪: 这章我们主要讨论多线程实现的方式,基础知识部分我们可以下来再恶补。...

搬砖大侠
20分钟前
0
0
新人千万不要在 Windows 上使用 Ruby on Rails

标题:新人千万不要在 Windows 上使用 Ruby on Rails 副标题:鼓励新人在 Linux 和 Mac 上使用 Ruby on Rails ! 原则:要走寻常路,不要学美特斯邦伟! "在 Windows上 使用 Ruby on Rails "是...

Jason909
28分钟前
0
0
day177-2018-12-14-英语流利阅读-待学习

艾滋病的治愈方法是否触手可及? Daniel 2018-12-14 1.今日导读 几十年来,艾滋病一直是世界上最难对付的“超级绝症”之一,从人类历史上第一次诊断出艾滋病病例的 20 世纪 80 年代早期到 20...

飞鱼说编程
53分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部