Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >tornado with i18n

tornado with i18n

作者头像
pydata
发布于 2018-08-02 03:44:35
发布于 2018-08-02 03:44:35
1.1K00
代码可运行
举报
文章被收录于专栏:pydatapydata
运行总次数:0
代码可运行

i18n是国际化的简称(Internationalization,去掉开始的I和最后的N,中间一共18个字符)。 tornado中使用i18n需要下面两个工具 两个工具:pygettext,msgfmt,两个相关文件:po文件和mo文件

pygetext和msgfmt的使用方法:

编写python代码文件 test.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from gettext import gettext as _
print _("well down")
print _("good")

pygetext test.py

生成messages.pot文件,更改文件后缀 mv messages.pot messages.po 配置msgstr值

生成一个名为messages.mo文件: msgfmt messages.po

建立目录locale/cn/LC_MESSAGES/

mv messages.po locale/cn/LC_MESSAGES

cn目录是所对应的语言,LC_MESSAGES是gettext.py文件里要求的 mo文件必须和所定义的域同名 gettext.py中有 modfile=os.path.join(localedir,lang,’LC_MESSAGES’,’%s.mo’ %domain)

测试: $python  »>gettext.install(‘messages’,’./locale’,unicode=True) 三个参数: 作用域名,用于限定翻译文件的主名 路径,存放翻译文件的路径 unicode,是否使用unicode(如果应用程序是unicode的,此处应设为True)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>>gettext.translation('messages','./locale',languages=['cn']).install(True)
>>>print _("good")

在tornado中使用时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$xgettext -L python -k=_ -o openquant.po $(find . -name \*.py) $(find template/ -name \*.html) 查找所有需要翻译的相关项生成 po 文件

$msgfmt openquant.po -o locale/zh_CN/LC_MESSAGES/openquant.mo 生成mo文件

完成相关文件的生成后,需要在代码中加载:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tornado.locale.load_gettext_translations(options.I18N_PATH,"openquant")

handler中自定义get_user_locale函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def get_user_locale(self):
    #zh_CN or en_US
    user_locale = self.get_cookie("user_locale")

    if user_locale:
        return tornado.locale.get(user_locale)

    return None

参考文章:

iMind

django多国语言

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014年04月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python国际化(i18n)和中英文切
Python通过gettext模块支持国际化(i18n),可以实现程序的多语言界面的支持,下面是我的多语言支持实现:
py3study
2020/01/06
1.3K0
python i18n实现
10 Mar 2016 python i18n实现 本文简单介绍python实现i18n的方法。i18n来源于英文单词internationalization的首末字符i和n,18为中间的字符数,是“国际化”的简称。指让产品(出版物,软件和硬件等)无需做大的改变就能够适应不同的语言和地区的需要,对软件来说,表示在不修改内部代码的情况下,能根据不同语言及地区显示相应的界面,本文以中文和英文作为例子,当系统默认语言是中文时,输出中文,当默认语言是英文时,输出英文
俊采
2018/05/15
1.9K0
gettext模块实现Python国际化
gettext模块为Python模块和应用程序提供国际化(i18n)和本地化(l10n)服务。它提供两套API,一套高层的类似于GNU gettext的API和一套基于类的API。前者适用于单语言的场景,并且语言的选择通常依赖于用户的locale,会全局性地影响到你整个应用程序语言的转译。后者允许你在一个python模块内进行本地化,非常适用于在应用程序运行时切换你的语言。
py3study
2020/01/07
2.5K0
python gettext使用
2.从源代码中抽取需要国际化的文本消息,并转换创建.pot文件, 可以使用的工具为pygettext.py 或者GNU工具 xgettext
py3study
2020/01/03
1.6K0
django2.2 国际化实践
Django 框架具有很好的 I18N 和 L10N 的支持,其实现是基于 GNU 的 gettext, 所以要想在 Django 中使用 I18N 还需要先安装配置 gettext。
卓越笔记
2023/02/18
6860
django2.2 国际化实践
带你认识 flask 国际化和本地化
你猜对了,Flask-Babel正是用于简化翻译工作的。可以使用pip命令安装它:
公众号---人生代码
2019/11/24
1.9K0
python下wxpython程序国际化的实践(中文英文切换)
i18n是 Internationalization 这个英文的简写,因为Internationalization这个单词去掉头尾的i和n刚好还剩下18个字符,意思是国际化。
黯然销魂掌
2018/09/27
2.2K0
python下wxpython程序国际化的实践(中文英文切换)
flask babel国际化(flask 101)
安装它的时候会顺便安装 Babel、pytz、speaklater 这三个包,其中 Babel 是 Python 的一个国际化工具包。pytz 是处理时区的工具包,speaklater 相当于是 Babel 的一个辅助工具。
用户5760343
2019/08/21
1.5K0
flask babel使用(flask 107)
本文参考https://translations.readthedocs.io/en/latest/flask-babel.html做了修改,如有疑问请指正。
用户5760343
2019/08/21
9110
flask babel使用(flask 107)
Flask-Admin修改成中文显示
今天的文章的主题是国际化和本地化,通常简称 I18n 和 L10n。我们想要我们的 microblog 应用程序被尽可能多的用户使用,因为我们不能忘记有许多人是不是讲英文的,或者会说英文,但是更愿意讲本国语言。
菲宇
2020/10/26
1.8K0
python如何解决国际化Internationalization(i18n)问题
在Python中,解决国际化(Internationalization,简称i18n)的问题通常涉及到将应用程序的文本和用户界面元素本地化为不同的语言和地区。Python提供了一些工具和库,帮助你实现国际化。
很酷的站长
2024/01/01
1.4K0
python如何解决国际化Internationalization(i18n)问题
Ubuntu使用MAC主题[通俗易懂]
我们第一步还是把Ubuntu自带的菜单给隐藏起来吧,不然谁看了都知道这个是Ubuntu系统
全栈程序员站长
2022/09/27
1.5K0
Ubuntu使用MAC主题[通俗易懂]
centos安装git上遇到的问题
1. 下载地址:https://www.kernel.org/pub/software/scm/git/
山海散人
2021/03/03
8130
[译] 软件本地化中的 10 个常见错误
原文:https://phrase.com/blog/posts/10-common-mistakes-in-software-localization/
江米小枣
2020/06/15
8080
【Django | 开发】 (国际化项目&支持多语言)
导入i18n,为需要翻译的代码添加代码{% translate %} 或者{% blocktranslate %}(用于存在变量翻译)
计算机魔术师
2022/08/19
8070
【Django | 开发】 (国际化项目&支持多语言)
locale的详细解释
* Thu Sep 27 2001 Bernhard Rosenkraenzer 2.5-0.f.2
大江小浪
2018/07/25
1.7K0
使用dropwizard(6)-国际化-easy-i18n
前言 Dropwizard官方文档并没有提供国际化的模块,所以只能自己加。Spring的MessageResource用的很顺手,所以copy过来。 Easy i18n 在整合Dropwizard的时候,多语言貌似只能通过jdk自带的ResourceBundle拿数据。其实也就够了,但在开发过程中发现需要缓存,需要解析占位符等。代码越写越多,显然不是仅仅一个调用就完事的。写的差不多的时候突然觉得和spring context里的message source结构类似。于是,放弃维护已经开始变的复杂的逻辑,直
Ryan-Miao
2018/03/14
1.2K0
使用dropwizard(6)-国际化-easy-i18n
Typecho配置多国语支持,检查客户端语言自动切换翻译
Typecho 原生自带了翻译功能,但不支持随客户端语言自动切换。 我们可以通过获取客户端语言,替换原生翻译功能所调用的翻译文件,来实现自动切换翻译。
德顺
2020/10/23
2.3K0
SpringBoot 多语言 – 国际化 – i18n
快速小结:LocaleResolver接口的实现类获得Locale对象,Locale对象告诉MessageSource从哪个配置文件获得消息!
收心
2024/06/15
1.2K0
SpringBoot 多语言 – 国际化 – i18n
Spring i18n国际化
随着互联网的发展,越来越多的企业和个人开始关注全球化的需求。在这个背景下,多语言支持成为了一个重要的课题。Spring框架作为一款优秀的Java开发框架,提供了丰富的i18N支持,能帮助搬砖工快速实现多语言应用。
鱼找水需要时间
2023/06/20
3600
Spring i18n国际化
相关推荐
python国际化(i18n)和中英文切
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验