使用gettext让.net实现多语种(1)- 基本环境搭建

本文介绍如何使用GETTEXT实现.NET项目的多语言支持,包括开发环境搭建、工具链配置及资源文件生成等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整了大半天,终于有所得,整理一下。之前那个晕哦。

 

之所以选择GETTEXT多语种方案用在.NET开发中,是因为只有GETTEXT才能做到代码和翻译分离,让翻译人员不接触源代码的情况下进行多语种翻译,甚至可以外包给第三方翻译公司。从长远来看比微软.NET自带的方案要容易维护。

 

网上搜《基于Gettext的asp.net网站多语言解决方案》可以看到一大堆,原始出处:http://www.blogwind.com/Wuvist/54115.shtml。但是在开发环境搭建过程中会碰到N多问题。
GETTEXT是GNU的开源项目,编译一般是基于LINUX的。在开始尝试用MSYS+MINGW搭建环境做编译,一会儿是iconv.h找不到,安装了libiconv之后又出现libxml/encoding.c里有错误。查一下发现根本无法继续下去,于是继续找纯WINDOWS环境下使用GETTEXT软件的方式。

GETTEXT分为TOOLS和RUNTIME两个部分。网上一般只能搜到1.3版本的官方有下载的WIN32版本。后来在http://groups.google.com/group/Django-I18N/browse_thread/thread/577afdaef1392958找到下载链接:
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-tools-0.17.zip
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-0.17-1.zip

将gettext-tools-0.17里的bin目录解压之后尝试运行会提醒intl.dll找不到,这个文件在gettext-runtime-0.17-1.zip中,将其放出即可。

好了,接下去可以测试将PO文件生成RESOURCE了。随便网上找一个PO文件,用类似这样的命令:
msgfmt --csharp -r test -l zh_CN -d . test.zh_CN.po

居然看到错误信息:“msgfmt: C# compiler not found, try installing pnet ”

缺少PNET?搜索一下发现又是GNU的Portable.Net,项目地址为http://www.gnu.org/software/dotgnu/。啊哈,还要找PNET得WIN32下安装包。幸好有现成的,下载地址http://www.steki.net/dotGNU/JIT/

安装dotGNU_0_8_0.exe之后,默认路径:C:/Program Files/Portable.NET/0.8.0

要让msgfmt调用cscc编译程序,还是最偷懒的办法,将原来gettext tool里所有文件拷贝到C:/Program Files/Portable.NET/0.8.0/bin里面。运行C:/Program Files/Portable.NET/0.8.0/bin>msgfmt --csharp -r test -l zh_CN -d . test.zh_CN.po,没有报错了。(如果要看详细信息最后加参数 --verbose)

生成的文件去哪里了?就在bin目录下的zh-CN/test.resources.dll。呼呼

接下去的工作就要参考
http://www.gnu.org/software/hello/manual/gettext/C_0023.html
和之前那篇牛人的博文了。另外还可参考:http://www.cnblogs.com/armtop/archive/2008/09/25/1299102.html

 

继续研究,待续集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值