国际化

Python 国际化(i18n) 支持

谁说胖子不能爱 提交于 2020-04-07 10:59:25
python使用gettext来实现i18n支持。具体参数信息请看gettext module帮助。 python中对于国际化的字符串,只需要外加_()即可。 如: print(_('hello world')) 然后根据user选择的语言,创建translation对象,然后调用install方法install_()函数 到Python’s builtins namespace。如: import gettext en_trans = gettext.install('messages', locale='i18n_path', languages=['default_language']) zh_trans = gettext.install('messages', locale'i18n_path', languages=['zh_CH']) print(_('hello world')) zh_trans.install() print(_('hello world')) 而对于web服务中前端页面的国际化支持也非常简单,和python source文档中一样 在需要国际化的字符串前面添加_()即可。然后在render函数中,把当前translation对象 传入模板即可。如Tornado render_string的实现: def render_string(self,

第十九章: 国际化

主宰稳场 提交于 2019-12-18 17:28:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 第十九章: 国际化 Django诞生于美国中部堪萨斯的劳伦斯,距美国的地理中心不到40英里。 像大多数开源项目一样,Djano社区逐渐开始包括来自全球各地的许多参与者。 鉴于Django社区逐渐变的多样性, 国际化 和 本地化 逐渐变得很重要。 由于很多开发者对这些措辞比较困惑,所以我们将简明的定义一下它们。 国际化* 是指为了该软件在任何地区的潜在使用而进行程序设计的过程。 它包括了为将来翻译而标记的文本(比如用户界面要素和错误信息等)、日期和时间的抽象显示以便保证不同地区的标准得到遵循、为不同时区提供支持,并且一般 确保代码中不会存在关于使用者所在地区的假设。 您会经常看到国际化被缩写为“I18N”(18表示Internationlization这个单词首字母I和结尾字母N之间的字母有18个)。 本地化* 是指使一个国际化的程序为了在某个特定地区使用而进行实际翻译的过程。 有时,本地化缩写为 L10N 。 Django本身是完全国际化了的,所有的字符串均因翻译所需而被标记,并且设定了与地域无关的显示控制值,如时间和日期。 Django是带着50个不同的本地化文件发行的。 即使您的母语不是英语,Django也很有可能已经被翻译为您的母语了。 这些本地化文件所使用的国际化框架同样也可以被用在您自己的代码和模板中

使用Rythm插件轻松实现JFinal应用的国际化

一世执手 提交于 2019-12-07 08:55:30
刚看了 @eyelee 同学的 JFinal 国际化的简单实现 的文章,我打算分享一下自己为 @紫电清霜 的 JFinal-BBS 示例应用添加 Rythm模版引擎 和国际化功能展示的经验。 在开始之前,大家可以先通过点击 这个视频 看看效果。 下面是实现步骤: 下载 JFinal Rythm插件 。解包后将lib中的jar文件加入到你的JFinal应用项目中 配置JFinal Rythm插件: private Properties conf = null; public void configConstant(Constants me) { this.conf = loadPropertyFile("path/to/properties/"); } public void configPlugin(Plugins me) { ... me.add(new RythmPlugin(conf)); } 在你的配置文件中加入以下配置: # 设置模版根目录到 WEB-INF/rythm rythm.home.template=../rythm # 支持国际化 rythm.i18n.enabled=true 创建你的资源文件: messages_zh_CN.properties messages_en_US.properties 并在其中分别加入所需内容,例如: layout.home

JFinal 国际化 简单实现 beetl

三世轮回 提交于 2019-12-06 16:28:44
JFinal自身带有国际化类com.jfinal.i18n.I18N 文档里没有实现的方法,自己实现了一下,在这里分享给大家,哪里有改进的地方请 @eyelee 1、编写properties资源文件 yourfilename_zh_CN.properties test=您好 yourfilename_en_US.properties test=hello 2、在JFinal配置类,配置常量中 public void configConstant(Constants me) { ... //后面两个参数根据自己情况添加默认语言国家 I18N.init("youfilename", null, null); ... } 如果资源文件不在classpath下面那么需要加上包名称 ,例如 I18N.init("i18n.youfilename", null, null); 3、在页面或者类中调用 页面中调用I18N.getText("key"); 在controller建议使用Controller.getText("key"); 4、做到这里并不能实现根据用户所用的语言对应显示,这是因为还没有实现自动切换,我们可以通过配置一个拦截器实现 定义一个全局过滤器GlobalInterceptor,并在JFinal配置 /*** * * @author yinjun622 2013-05-25 *

使用java.util.ResourceBundle国际化

别来无恙 提交于 2019-12-06 12:47:19
如果简单使用信息文件message.properties,可以使用java.util.Properties直接load文件即可获取键值对。 但是如果考虑到国际化,需要将message.properties的内容写成不同语言的文字,也许可以考虑分别建立message.properties,message1.properties,message2.properties等等的文件存储不同的语言文字,然后在使用java.util.Properties加载时,使用Locale.getDefault()获取默认语言,或者根据客户端信息生成Locale实例,以此来写一堆if语句逐个判断使用哪个properties文件。 java.util.ResourceBundle就是将上面的过程简化的类,ResourceBundle.getBundle("message",Locale.getDefault())可以根据Locale的值自动判断对应的message.properties文件,但是自动总是要有代价的,就是命名properties文件时,有固定格式:自定义名_语言代码_国家代码.properties。如果没有对应Locale的文件,会再找默认的message.properties。 关于语言和国家如下: 语言参数是一个有效的 ISO 语言代码。这些代码是由 ISO-639 定义的小写两字母代码