公告加载中...
设为首页 加入收藏 联系我们
登陆加载中...
随心工作室 - 专注于软件实用化与简单化
分类导航
超级搜索
热点文章
版权申明
本站资料文章其版权归作者本人所有。
如果有任何侵犯您版权的地方,请尽快与本站联系!
 查看方式: 查看:[ 大字 中字 小字 ]

GNU gettext-0.18.3.2最新版本在Visual C++(MSVC)中实现多语言

来源: 随心工作室 - 专注于软件实用化与简单化 作者:webmaster 发表日期: 2014-4-18 9:36:25 阅读次数: 4526 查看权限: 普通文章

介绍

GetText是GNU的一个项目,GetText主页有最丰富的信息。下面的翻译摘自网络,有关GetText主页的介绍 :

“通常,程序及其文档信息都是用英语语言写的,程序运行时同用户交互的信息也是英语。这是一个事实,不仅仅GNU的软件是这样,其他大部分私有软件或自由软件也是这样。一方面,对于来自所有国家的开发者、维护者和用户来说,相互沟通中使用一种通用的语言非常的方便。另一方面,相对于母语来说大多数人并不适应使用英语,而且他们的日常工作都是尽可能的使用他们自己的母语。多数人都会喜欢他们的计算机屏幕显示的英语更少,显示的母语更多。"

" GNU 的 'gettext' 是 GNU翻译项目的一个重要步骤,我们依赖于它 作很多其他的步骤。这个软件包给程序员、翻译者,或者用户提供了一套集成工具和文档。详细地说,GNU gettext 提供了一套工具, 能让其他 GNU 软件创建多语言信息。..."

gettext的工作流程是这样的:比如我们写一个Visual C++(MSVC)程序,通常printf等输出信息都是English的。如果我们在程序中加入gettext支持,在需要交互的字符串上用gettext函数,程序运行是就可以先调用gettext函数获取当前语言的字符串,替换当前的字符串了。注意是运行时替换。

GNU gettext-0.18.3.2 是最新版本,GNU官网上可以直接下载,只是没有Visual C++(MSVC)可用的运行支持库,只能自己动手编译了,编译好的运行支持库,点击这里下载

在Visual C++(MSVC)中使用GNU gettext实现多语言时,可以编写翻译函数来实现界面与菜单字符串的自动替换,程序中的字符串只能一个个手工替换了,这样使用起来,就跟在Delphi与C++Builder中使用GNU gettext差不多方便快捷了。

简单使用的例子

一个简单的例子,

#include <stdio.h>
#include <libgnuintl.h>

/*使用gettext通常使用类似下面的一个带函数的宏定义
  *你完全可以不用,直接使用 gettext(字符串)
*/
#define _(S) gettext(S)

/*PACKAGE是获取语言字符串的文件名字(运行时输入的命令)*/
#define PACKAGE "default"

int main(int argc, char **argv)
{
/* 下面三个参数都是使用gettext时候需要使用的
  * setlocale
  * bindtextdomain
  * textdomain
*/
  setlocale(LC_ALL,"");
  bindtextdomain(PACKAGE, "locale");
  textdomain(PACKAGE);

  printf(_("Hello,GetText!\n"));

  return 0;
}

其中语言字符串文件的结构: .\locale\语言名称\LC_MESSAGES\default.mo,如简体中文:.\locale\ZH_CN\LC_MESSAGES\default.mo

mo文件是编译后的语言字符串文件,GNU网站上有相应的工具软件可以编辑与生成;

点击这里下载Visual C++(MSVC)中可用的GNU gettext-0.18.3.2运行支持库

感谢为这个项目做出贡献的所有人!有问题请去随心社区论坛讨论!

 

【公共评论】 发表评论
评论加载中...
[共0条]【相关新闻】
 暂 无 相 关 内 容
[共0条]【相关软件】
 暂 无 相 关 内 容