文档章节

django国际化

上官清偌
 上官清偌
发布于 2017/09/12 09:13
字数 757
阅读 44
收藏 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
博文 85
码字总数 118519
作品 0
浦东
程序员
Django 国际化实例及原理分析

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

红薯
2011/02/03
5.3K
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 REST framework 3.1 发布

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

oschina
2015/03/07
2.1K
2
django 国际化翻译机制和locale文件夹的位置是什么关系呢?

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

self001
2013/06/20
569
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

7 个致命的 Linux 命令

导读 如果你是一个 Linux 新手,在好奇心的驱使下,可能会去尝试从各个渠道获得的命令。以下是 7 个致命的 Linux 命令,轻则使你的数据造成丢失,重则使你的系统造成瘫痪,所以,你应当竭力避...

问题终结者
今天
0
0
设计模式:工厂方法模式(工厂模式)

工厂方法模式才是真正的工厂模式,前面讲到的静态工厂模式实际上不能说是一种真正意义上的设计模式,只是一种变成习惯。 工厂方法的类图: 这里面涉及到四个种类: 1、抽象产品: Product 2、...

京一
今天
0
0
区块链和数据库,技术到底有何区别?

关于数据库和区块链,总会有很多的困惑。区块链其实是一种数据库,因为他是数字账本,并且在区块的数据结构上存储信息。数据库中存储信息的结构被称为表格。但是,区块链是数据库,数据库可不...

HiBlock
今天
0
0
react native 开发碰到的问题

react-navigation v2 问题 问题: static navigationOptions = ({navigation, navigationOptions}) => ({ headerTitle: ( <Text style={{color:"#fff"}}>我的</Text> ), headerRight: ( <View......

罗培海
今天
0
0
Mac Docker安装流程

久仰Docker大名已久,于是今天趁着有空,尝试了一下Docker 先是从docker的官网上下载下来mac版本的docker安装包,安装很简易,就直接拖图标就好了。 https://www.docker.com/products/docker...

writeademo
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部