免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2618 | 回复: 0
打印 上一主题 下一主题

i18n and l10n of Babel [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-17 16:44 |只看该作者 |倒序浏览

                                i18n and l10n of Babel
Babel是用python写的国际化和本地化翻译工具
在pylons book练习中,在i18n和l10n时遇到了一些小问题,记录下来备查。
1.首先安装Babel
  >easy_install Babel
2.生成一个pylons工程
  > paster create -t pylons translation
3. 生成一个控制器
  > cd translation
  > paster controller hello
4.修改 setup.py,查看setup.cfg
  > vim setup.py
  message_extractors = {'translate_demo': [
            ('**.py', 'python', None),
            ('templates/**.html', 'mako', None),
            ('public/**', 'ignore', None)]},
  把这几行反注释,就是把每行前的'#'号去掉
5.建立i18n目录
  > cd translation
  > mkdir i18n
  注意,i18n目录与controller在同一目录,
  这些在4.中提到的setup.cfg中设置。
6.打开hello.py控制器,引入必要的模块
  用任何一款支持utf-8的编辑器打开hello.py
> vim controller\hello.py
from pylons.i18n.translation import ugettext as _
这个是国际化与本地化的关键,需要翻译的字符串都要写成_("xxxx")
#coding=utf-8
import logging
from pylons.i18n import get_lang, set_lang
from pylons.i18n.translation import ugettext as _
from pylons import request, respone, session
from pylons import tmpl_context as c
from pylons.controllers.util import abort, redirect_to
from translate_demo.lib.base import *
log = logging.getLogger(__name__)
class HelloController(BaseController):
    def index(self):
        response.write("Default: %s
" % _("hello"))
        # Return a rendered template
        #   return render('/template.mako')
        # or, Return a response
        for lang in ['fr', 'zh']:
            set_lang(lang)
            response.write("%s: %s" % (get_lang(), _('Hello')))
7.使用Babel来完成本地化
(1)收集要翻译的字符串,
> python setup.py extract_messages
  生成translate_demo/i18n/translation.pot
  里面存放的是要翻译的Unicode字符串。
  对应的其他本地语言的放在对应的子目录中,如中文放到zh中,法文放到fr中。
(2)生成对应的本地语言,如中文
> python setup.py init_catalog -l zh
在i18n\zh\LC_MESSAGE\translation.po
(3) 编辑其中对应的字符串
   如:
   #: translate_demo/controllers/hello.py:22
   msgid "Hello"
   msgstr "你好"
MotsQueen的控制面板 - ChinaUnix博客 - BLOG
文件一定要保存成utf-8格式,否则会出现unicode解码错误
(4)生成.mo文件
> python setup.py compile_catalog
在同目录下生成i18n\zh\LC_MESSAGE\translation.mo
就可以使用了
8. 启动server
http://localhost:5000/hello/index
Default: hello
['fr']: Bonjure
['zh']: 你好
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13637/showart_1132680.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP