django国际化

最近在研究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>

转载于:https://my.oschina.net/yongxinke/blog/1535606

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值