- 浏览: 196188 次
最新评论
-
抛出异常的爱:
netfishx 写道hurricane1026 写道冉翔 写 ...
Ruby way Rails way Milky way -
netfishx:
hurricane1026 写道冉翔 写道好久灭见LZ老,欢迎 ...
Ruby way Rails way Milky way -
冉翔:
好久灭见LZ老,欢迎回来^_^最近一段时间,还真是想念LZ发帖 ...
Ruby way Rails way Milky way -
darkjune:
应该有地方可以下载的么
Ruby way Rails way Milky way -
zlst:
好东西,学习
Four cool IBM的ruby教程, 有的教程放在ibm dev上凉的太久了
道喜技术高强, 下面两篇看完了就明了
http://www.hhtong.com/blog1/articles/2006/05/15/rails20060514_i18n_gettext
关键的步骤是
增加文件application.rb的代码,其中第四行和第十一行参数要调整。其目的在于,我们确定我们软件使用什么语言。在这个文件中,我们定义该软件项目文字区域(textdomain):i18n_gettext。这一点是很重要。它必须和后面谈到文件.po的文件名相同。
http://www.hhtong.com/blog1/articles/2006/05/15/tools20060514_use_poedit
比Globalize简洁易行
Download poedit最新版1.3.6的link
2006-10-30 03:36:
http://sourceforge.net/project/showfiles.php?group_id=27043&package_id=18746&release_id=459538
http://manuals.rubyonrails.com/read/chapter/105
有这么个笑话老鼠给猫挂铃铛, 敢挂是勇气, 要挂的太多了, 老鼠也不愿意干了
铃铛出在第六步, 手工要维护的括号太多了
是的
本贴使用的通俗说法汉化,打算就一个已有的程序,翻译成中文的界面的过程
还在试验其它的方法
http://wiki.rubyonrails.org/rails/pages/InternationalizationComparison
有体验的可以讲解一番
http://www.trikr.net/
这个原创的网站就是用Globalize 作的双语支持
http://www.hhtong.com/blog1/articles/2006/05/15/rails20060514_i18n_gettext
关键的步骤是
引用
增加文件application.rb的代码,其中第四行和第十一行参数要调整。其目的在于,我们确定我们软件使用什么语言。在这个文件中,我们定义该软件项目文字区域(textdomain):i18n_gettext。这一点是很重要。它必须和后面谈到文件.po的文件名相同。
http://www.hhtong.com/blog1/articles/2006/05/15/tools20060514_use_poedit
比Globalize简洁易行
Download poedit最新版1.3.6的link
2006-10-30 03:36:
http://sourceforge.net/project/showfiles.php?group_id=27043&package_id=18746&release_id=459538
http://manuals.rubyonrails.com/read/chapter/105
有这么个笑话老鼠给猫挂铃铛, 敢挂是勇气, 要挂的太多了, 老鼠也不愿意干了
铃铛出在第六步, 手工要维护的括号太多了
引用
#
# 我们要把所有文件D:\works_rails\i18n_gettext\*\*.rb,D:\works_rails\i18n_gettext\*\*.rhtml 需要翻译的文字写成为规定格式为:
_('原文')
例如,我们修改文件D:\works_rails\i18n_gettext\app\views\admin\list.rhtml
_('Show')
原来的形式为
‘Show’
# 我们要把所有文件D:\works_rails\i18n_gettext\*\*.rb,D:\works_rails\i18n_gettext\*\*.rhtml 需要翻译的文字写成为规定格式为:
_('原文')
例如,我们修改文件D:\works_rails\i18n_gettext\app\views\admin\list.rhtml
_('Show')
原来的形式为
‘Show’
评论
4 楼
歆渊
2006-11-03
恰好我刚写完了一个基于Java的文字国际化产品, 现在正在写教程, 基本思想是通过变量的注释块来定义消息模板, 里面可以定义消息参数和写js动态脚本, 程序运行的时候通过调用Messager.format()来生成输出, 一个简单例子如下:
编译的时候自动生成XML资源文件 Quick.msg.xml 如下:
然后翻译成中文的XML资源 Quick_zh.msg.xml 如下:
public class Quick { /** * {name} was {age} {! age>1?"years":"year"} old in year {year}. * * @arg name : name of the person * @arg age : his/her age in that year * @arg year = 2006 : the year * @usage This is a demo message declaiming one person's age in a past year. */ @Msg protected static final String YEAR_AGE = "yr-age"; /** * {! function r2(n) \{ return Math.round(n*100)/100; \} * }Current Memory Usage: \n * \t Free: {! r2(java.lang.Runtime.getRuntime().freeMemory()/1024)} KB\n * \tTotal: {! r2(java.lang.Runtime.getRuntime().totalMemory()/1024/1024)} MB\n * \t Max: {! r2(java.lang.Runtime.getRuntime().maxMemory()/1024/1024)} MB */ @Msg protected final static String MEM = "mem-usage"; /** * There {! num > 1 ? "are" : "is"} {! num <= 0 ? "no" : num} {!num > 1 ? "files" : "file"}. * * @arg num = 1 : the number of file(s). */ @Msg protected final static String FILE = "number-of-files"; /** * This is escaped text:\n * \t \{this-is-text-instead-of-arg}\n * \t \{! this-is-text-instead-of-expr } */ @Msg protected final static String ESC = "escaped-text"; public static void main(String[] args) { Messager msgr = Messager.get(); System.out.println(msgr.format(YEAR_AGE, "name", "Peter", "year", 2006, "age", 26)); System.out.println("------------------------------------------------"); System.out.println(msgr.format(MEM)); System.out.println("------------------------------------------------"); System.out.println(msgr.format(FILE, "num", 0)); System.out.println(msgr.format(FILE, "num", "0.5")); System.out.println(msgr.format(FILE, "num", "1")); System.out.println(msgr.format(FILE, "num", "1.5")); System.out.println(msgr.format(FILE, "num", 6)); System.out.println("------------------------------------------------"); System.out.println(msgr.format(ESC)); } }
编译的时候自动生成XML资源文件 Quick.msg.xml 如下:
<?xml version="1.0" encoding="UTF-8"?> <java> <text> <escaped-text> <![CDATA[This is escaped text: \{this-is-text-instead-of-arg} \{! this-is-text-instead-of-expr }]]> <args /> <defined>tutor.msg.Quick(Quick.java:54)</defined> <used>tutor.msg.Quick(Quick.java:54)</used> </escaped-text> <yr-age> <![CDATA[{name} was {age} {! age>1?"years":"year"} old in year {year}.]]> <args> <name>name of the person</name> <age>his/her age in that year</age> <year default-value="2006">the year</year> </args> <usage> This is a demo message declaiming one person's age in a past year. </usage> <defined>tutor.msg.Quick(Quick.java:24)</defined> <used>tutor.msg.Quick(Quick.java:24)</used> </yr-age> <mem-usage> <![CDATA[{! function r2(n) \{ return Math.round(n*100)/100; \} }Current Memory Usage: Free: {! r2(java.lang.Runtime.getRuntime().freeMemory()/1024)} KB Total: {! r2(java.lang.Runtime.getRuntime().totalMemory()/1024/1024)} MB Max: {! r2(java.lang.Runtime.getRuntime().maxMemory()/1024/1024)} MB]]> <args /> <defined>tutor.msg.Quick(Quick.java:38)</defined> <used>tutor.msg.Quick(Quick.java:38)</used> </mem-usage> <number-of-files> <![CDATA[There {! num > 1 ? "are" : "is"} {! num <= 0 ? "no" : num} {!num > 1 ? "files" : "file"}.]]> <args> <num default-value="1">the number of file(s).</num> </args> <defined>tutor.msg.Quick(Quick.java:46)</defined> <used>tutor.msg.Quick(Quick.java:46)</used> </number-of-files> </text> </java>
然后翻译成中文的XML资源 Quick_zh.msg.xml 如下:
<?xml version="1.0" encoding="UTF-8"?> <java> <text> <number-of-files> <![CDATA[有{num}个文件.]]> <args> <num default-value="1">the number of file(s).</num> </args> </number-of-files> <mem-usage> <![CDATA[{! function r2(n) \{ return Math.round(n*100)/100; \} }当前内存使用情况: 空闲: {! r2(java.lang.Runtime.getRuntime().freeMemory()/1024)} KB 总数: {! r2(java.lang.Runtime.getRuntime().totalMemory()/1024/1024)} MB 限制: {! r2(java.lang.Runtime.getRuntime().maxMemory()/1024/1024)} MB]]> <args /> </mem-usage> <yr-age> <![CDATA[{year} 年的时候, {name} {age} 岁.]]> <args> <name>name of the person</name> <age>his/her age in that year</age> <year default-value="2006">the year</year> </args> <usage> This is a demo message declaiming one person's age in a past year. </usage> </yr-age> <escaped-text> <![CDATA[以下文字是经过转义的: \{这不是参数,而是文字} \{! 这不是表达式,而是文字 }]]> <args /> </escaped-text> </text> </java>
3 楼
bd7lx
2006-11-03
是的
本贴使用的通俗说法汉化,打算就一个已有的程序,翻译成中文的界面的过程
还在试验其它的方法
http://wiki.rubyonrails.org/rails/pages/InternationalizationComparison
有体验的可以讲解一番
http://www.trikr.net/
这个原创的网站就是用Globalize 作的双语支持
2 楼
cookoo
2006-11-03
gettext只解决文字的多语言版本问题,globalize还解决日期,货币,度量格式的国际化问题。
1 楼
bd7lx
2006-11-02
算是给
http://www.iteye.com/topic/29540
接上个小尾巴
还有相关的汉化思考慢慢来
欢迎讨论,汉化的技术
http://www.iteye.com/topic/29540
接上个小尾巴
还有相关的汉化思考慢慢来
欢迎讨论,汉化的技术
发表评论
-
ROR 展厅
2006-11-15 13:11 2565http://happycodr.com/ 向朋友介绍有哪些 ... -
想看看model的关联, 带视觉化的-需要点黑客的技术
2006-11-14 11:46 2577最早发帖在 http://www.railscn.com/ ... -
宣传与广告
2006-11-14 11:27 2238其实 大家都有权利评论此书, 但谁也都没有真正意义上全面的评 ... -
Re: 别打了-改PK(呼吁版主开办ROR战场,不然沾上Ruby和Rails的帖子就卷入征战)
2006-11-14 11:03 1777玩点技术PK比较 ruby对 某某 -不一定当真 ht ... -
向Ning学习, 作一个多子域的程序, Clone开始吧
2006-11-14 10:37 2366是个给用户复制应用的网站, 用户可以定义属于自己的程序 ... -
Hamster 舵手公开招募
2006-11-15 11:38 95Palabre | Flash XML multiuse ... -
可视化你的Rails schema
2006-11-14 08:53 3882http://blog.zmok.net/articles/2 ... -
想起沉睡的Hamster, 心里有点凉
2006-11-13 17:37 3042http://www.railscn.com/viewto ... -
Re: 视觉化的思考:藏医学四部医典与唐卡的启示
2006-11-13 09:11 1564The Visual Display of Quantitat ... -
Java 留心! ROR来抢领地了(ROR camp 活动主题在何方)
2006-11-12 09:20 2055最近Ruby on Rails Camp 的主题说是Ru ... -
书评-松鼠中文
2006-11-10 17:26 1731http://radar.oreilly.com/archiv ... -
erlyweb 也上什么道 mvc -a component-oriented web 框架
2006-11-06 13:23 1682http://www.railscn.com/viewtopi ... -
ajax upload files
2006-11-06 11:20 90http://kpumuk.info/ruby-on-rail ... -
Dreamhost 流浪野猫之家
2006-11-06 11:15 1410[img]http://bd7lx.iteye.com/upl ... -
杰夫的下注------亚马孙和37信号公司全力打造互联网的超级ROR平台服务?
2006-11-04 15:17 4423http://www.businessweek.com/mag ... -
儿时的梦想-造自己的火车
2006-11-03 16:57 1702这篇自己造火车, 单轨 ... -
最佳实践系列之 Sidebars & Layouts in Ruby on Rails
2006-11-03 14:47 1278这也有BP 惊叹 http://web2withrubyo ... -
tips radrails
2006-11-03 17:07 57http://gotapi.com/ http://www. ... -
新手区, 也把Java和Ruby分隔开吧, 不然浅水区太乱了, 不方便阅读(分了已经分了)
2006-11-02 10:53 2620发了最新的回帖, 果然加速了灭顶的进程 http://www ... -
敏捷迁移
2006-11-03 10:04 1945看了白色星球后的感觉 ...
相关推荐
自己经过验证后并进行详细注解后的一套代码
GetText
这时0.18版本,完全满足django1.4.5对于gettext0.15以上的要求。 非常简单,解压缩文件,然后将文件路径\bin加入到环境变量path中。 这样,在django中就可以用django-admin.py makemessages -l zh_CN生成国际化文件...
有些Linux系统缺少gettext库,需要自己手动编译安装。
Laravel开发-gettext 将php gettext库集成到Laravel4中
GNU Gettext Delphi Demo。功能非常简单,只是验证GNU Gettext 是否可用。请首先安装dxgettext和poedit.
django gettext poedit 国际化 django国际化工具gettext和poedit
gettext 是 GNU Translation Project上的重要一步,从它基础上可以构建其他步骤。 gettext提供了一个帮助产生多语言 message的框架:包括一组关于程序改如何编写以支持 message种类的约定, message种类相关的一个...
Laravel开发-laravel-gettext 简单的getText加载程序和分析器
MoReader 用于PHP的Gettext * .mo文件阅读器。 该软件包与 , 和兼容。 如果您发现合规性疏忽,请通过拉取请求发送补丁。用法 $ parser = new \ MoReader \ Reader ();$ data = $ reader -> load ( 'my-file.mo' ); ...
gettext源码,安装glib过程中需要用到
python gettext-runtime-0.13.1
gettext 0.17 django国际化工具
GNU gettext for windows,0.14.4版本
前端开源库-angular-gettext-toolsAngular GetText工具,用于提取/编译Angular GetText字符串的工具。
gettext-0.19.3.tar 源码
gun gettext for delphi2010 demo project 此样例中已经包含了最新的gnugettext.pas
gettext windows系统下的开发库