介绍:

GNU

GNU是一个自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU’s Not Unix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。GNU的创始人,理查德·马修·斯托曼,将GNU视为“达成社会目的技术方法”。
作为操作系统,GNU的发展仍未完成,其中最大的问题是具有完备功能的内核尚未被开发成功。GNU的内核,称为Hurd,是自由软件基金会发展的重点,但是其发展尚未成熟。在实际使用上,多半使用Linux内核、FreeBSD等替代方案,作为系统核心,其中主要的操作系统是Linux的发行版。Linux操作系统包涵了Linux内核与其他自由软件项目中的GNU组件和软件,可以被称为GNU/Linux(见GNU/Linux命名争议)。

GetText

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

使用过程:

源代码中所有需要多语言支持的(需要翻译的)字符串都修改为使用gettext函数包装起来。为了方便也可以使用下划线_。比如:

printf(gettext("My name is %s.\n"), my_name);

printf(_("My name is %s.\n"), my_name);

识别gettext或_标记的字符串,然后转换成.pot文件

/// TRANSLATORS: Please leave %s as it is, because it is needed by the program.
/// Thank you for contributing to this project.
printf(_("My name is %s.\n"), my_name);
#. TRANSLATORS: Please leave %s as it is, because it is needed by the program.
#. Thank you for contributing to this project.
#: src/name.c:36
msgid "My name is %s.\n"
msgstr ""

包含了注释源文件名字符串所在行数源字符串和对应的翻译版本(当然现在是空的)。接下来就是翻译工作。
msginit程序可以由.pot 模板文件生成一个.po 文件(Portable Object)。接下来我们将修改.po 文件,将翻译的文本填进去。比如一个中文的翻译版本,我们可以运行以下命令:

msginit --locale=zh_CN --input=name.pot

我们将得到一个zh_CN.po 文件,编辑 .po 文件可以使用任何文本处理程序手动修改或者使用 Poedit、Emacs。编辑后的效果如下:

#: src/name.c:36
msgid "My name is %s.\n"
msgstr "我的名字是%s。\n"

最后,使用msgfmt程序将 .po 文件编译为二进制的 .mo 文件(Machine Object)。GNU gettext使用 .gmo扩展名。接下来就可以使用到我们的程序中了。

注意:

setlocale()

setlocale(LC_ALL,"") 的意思是使用环境变量(系统当前的值)

xgettext

  • -k 参数 可以只搜索某些字符串,没有用的信息省略。

xgettext jian_gettext.c -k_ -o jian_gettext.po

  • -l 参数 可以针对某一语言生成po文件,中文为例:

msginit -l zh_CN -i jian_gettext.po

上面命令会生成 zh_CN.po 文件,可由此修改生成mo文件

GetText学习记录相关推荐

  1. Android socket 学习记录 之 执行new socket(ip, port)程序崩溃

    这段时间在学习Android的socket编程,我不是专做APP的,做的是bootloader.驱动.hal.framework这个线的,也就是系统搭建和功能优化设计.为了打通这整条线,为此学习了不少 ...

  2. Android Studio学习记录之简单的页面切换及宫格菜单

    Android Studio学习记录之简单的页面切换及宫格菜单 之前上课听老师讲的一些东西自己其实并没有消化,今天把不懂的都去网上搜了一下,有了一种恍然大悟的感觉,包括很多方方面面的东西.有些东西听说 ...

  3. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

  4. HTML5与CSS3权威指南之CSS3学习记录

    title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...

  5. springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis

    本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...

  6. 【Cmake】Cmake学习记录

    Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...

  7. ASP.NETCore学习记录(一)

    ASP.NETCore学习记录(一) asp.net core介绍  Startup.cs  ConfigureServices  Configure  0. ASP.NETCore 介绍 ASP.N ...

  8. Android开发技术周报176学习记录

    Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...

  9. add函数 pytorch_Pytorch学习记录-Pytorch可视化使用tensorboardX

    Pytorch学习记录-Pytorch可视化使用tensorboardX 在很早很早以前(至少一个半月),我做过几节关于tensorboard的学习记录. https://www.jianshu.co ...

最新文章

  1. salt '*' state.highstate 报错找不到文件,环境如下No Top file or master_tops data matches found....
  2. nodejs和python和php_PHP和Nodejs能配合使用吗?
  3. 乘风破浪:LeetCode真题_038_Count and Say
  4. 公司的一些SEO面试题
  5. 分页——SQL Server 对比 MySQL
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的公司人事档案管理系统
  7. 出海,这可能会是国产浏览器产品的唯一出路
  8. [python]pytest实现WEB UI自动化
  9. 开源程序安装框架-BitNami
  10. 思科模拟器 静,动态路由配置
  11. tomcat7下载安装
  12. 辅助脚本使用教程手册
  13. java jersey使用总结_Java Jersey2使用总结
  14. mybatis中的when,then,end的用法
  15. java button属性设置_java的JButton怎样设置内边距
  16. 用Node.js实现一个HTTP服务器程序(文件服务器)
  17. 理解深度神经网络——DNN(Deep Neural Networks)
  18. ue4构建光照失败问题与解决
  19. 超小型迷你BT客户端-uTorrent(附安装教程)
  20. 华为手机鸿蒙系统手机_鸿蒙系统面世之后,以前的华为手机可以用鸿蒙系统吗?不好意思!...

热门文章

  1. mac os 苹果操作系统如何切换输入法
  2. 手绘线条一直画不直_板绘画线手抖?线画不直?板绘练习画线技巧攻略!
  3. 淘宝iOS拍立淘微距能力探索与实现
  4. Page “xxx“ has not been registered yet.
  5. 一键生成舞曲编排的小程序(perl)
  6. java 网格布局管理器,Java图形化界面设计——布局管理器之GridLayout(网格布局)...
  7. 【9】核心易中期刊推荐——图像视觉与图形可视化
  8. 多少往事付东风,go with wind
  9. 计算机5大的控件的功能,7款顶级功能插件,每一款都堪称办公宝典!
  10. 2021年度国家科技奖进入申报期,这几个问题需要重点关注!