用户名: 密码: 免费注册 忘记密码? 网站地图 | 加入收藏 | 设为首页
首页 | 新闻 | 工具 | 系统 | 办公 | 聊天 | 多媒体 | 网页 | 运营 | 平面 | 欣赏 | 数据库 | 程序 | 服务器 | 组网
网页 | 3dmax | Ghost | Windows Xp| Dreamweaver | photoshop | Flash | office | Alexa | Css | QQ | Asp | PHP | Jsp | Access
Flash MX 2004入门 | 网站推广策略 | CorelDRAW入门 | ASP学习 | 网站建设大师功 | Word入门
  iTbulo.com > 学院 > 程序开发教程 > ASP.net教程 > Asp.Net开发技巧 > 文章正文
基于Gettext的asp.net网站多语言解决方案
iTbulo.COM 2007-4-1 动态网站制作指南()

很久以前就想写这篇blog,系统的介绍一下偶是如何使用Gettext给blogwind做多语言界面的……

很不喜欢.net内置的多语言解决方案……因为,它使用xml……编辑xml是一件很痛苦的事情……我也不想给每个页面弄一堆resouce文件……光看着这些资源文件我就很晕……

偶是从Django里面知道有Gettext这套在开源软件中广为使用的程序多语言解决方案的……

最喜欢它的地方是它默认直接使用英文原文作为字符串的键值……而不是像.net默认的那样,给所有的字符串加上一个编号……而当翻译不存在的时候,.net是会抛出异常,而Gettext是会返回原文……这样子,我可以部分给网站制作一个语言版本……而不需要一步到位……

--------------------------------------------

Gettext的翻译文件为.po文件……其实就是纯文本文件……其内容类似:

#: D:/web/blogwind/default.aspx:87
msgid "Loading..."
msgstr "读取中..."

第一行代表偶需要翻译的字符串在程序中的位置……msgid则是需要翻译的字符……msgstr则是翻译的结果……很简单……

偶在做网站的时候,把所有需要翻译的字符串都使用一个函数包涵起来……比方说:
    ph.g("编写网志")

然后,自己写了个小python程序去搜索偶网页程序中所有的 ph.g("XXXXX"),并生成/更新现有的po文件……

可以用的PoEdit来编辑po文件……非常方便……因为注释中可以放待翻译的字符串在源程序中的位置,偶翻译的时候还随时可以查阅源程序,看看究竟是在什么地方用到这个词句……以保证遇到一词多译时能够选择正确的一个翻译……

编辑完po文件之后,便需要使用Gettext包中msgfmt这个小程序把po文件直接编译为.net使用的资源dll……命令类似:

msgfmt --csharp -r blogwind -l zh-CHS -d . blogwind.po

--csharp 是指定输出为.net的dll……呃……需要指定这点,是因为它还可以输出为java / tcl /qt有几个.net resource文件等格式……对于.net的支持是后来新加的……如果报错,确定你使用的是0.13.1版或者更新的Gettext库……

-r blogwind 是指dll的资源名称为blogwind

-l zh-CHS 则是语系

最后的则是待编译的po文件名了……

[1] [2] 下一页

文章搜索
相关资讯
相关文章 相关下载
在ASP.NET中上传图片并生成缩略图
Excel在.Net下驻留内存的解决方法
ASP.NET中常用的优化性能方法详解
网友原创:从N层到.NET详细剖析原理
经验之谈:MySQL与ASP.NET配合更强大
焦点信息