django web框架对于国际化和本地化都提供了很好的支持,对于django的本地化简单的说主要是指将标记的待翻译字符串翻译成本地语言的过程。
通过以下三步可以完成django应用的本地化。
- 创建django翻译语言文件(.po文件):django-admin.py makemessages -l zh_CN
- 打开.po文件,将翻译结果写入msgstr后的双引号中。
- 编译.po文件:django-admin.py compilemessages
1. 创建翻译语言文件(.po文件)
创建或者更新翻译语言文件使用命令:
django-admin.py makemessages
这一命令通常在两个地方运行:(1)django项目文件夹中;(2)django应用的根文件夹中。
但是在这个两个地方需要提前创建locale文件夹。(引文makemessages这个命令不能直接创建locale文件夹)
如果为js文件创建翻译文件请参见这里
2. 打开.po文件,进行翻译。
.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: 2011-08-05 11:16+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"
"Plural-Forms: nplurals=1; plural=0;\n"
--------------------------(以上是对文件信息的描述,以下是需要翻译的字符串)
#: ewjxy/menu.py:8
msgid "noticeNews"
msgstr "" (注:在左边的双引号上写出对应的翻译内容即可。)
#: ewjxy/menu.py:11
msgid "notice"
msgstr ""
3. 编译.po文件
django-admin.py compilemessages 编译之后产生扩展名为mo的二进制文件。编译命令运行的位置与makemessages运行的位置相同。
经过这三个步骤基本上就完成了django 的本地化。