使用 GNU gettext 实现国际化
1. gettext 下载地址https://nchc.dl.sourceforge.net/project/gnuwin32/gettext/0.14.4/gettext-0.14.4.exe
2. 代码中使用安装后的头文件和库文件:
(1)头文件
(2) 库文件
(3)libintl.lib 库依赖一些dll文件,需要把需要的dll文件拷到项目目录下:
3. 项目中使用的代码
(1)代码 (代码页名称:DesignPattern.cpp)
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <locale.h>
#include <libintl.h>
#define _(STRING) gettext(STRING)using namespace std;int main()
{setlocale(LC_ALL, "en_US"); // 设置使用环境变量的默认地域,中国bindtextdomain("DesignPattern", "locale"); // 设置mo文件名称,设置mo文件所在目录textdomain("DesignPattern");printf(_("Error en los parametros de entrada.\n"));printf(_("Uso: ./sumatorio [Max num] [Threads]\n"));getchar();return 0;
}
(2)说明:
1. "DesignPattern"为生成的mo文件名称;
2. “locale” 为mo文件所在的目录:
项目文件里新建locale文件夹,将下图的目录结构复制过去并将mo文件放到对应的目录中;
gettext要求mo文件所在路径要符合它的规则,每种语言在不同的固定路径下:
附注:
4. 我理解的gettext 使用方式
(1)我们根据它的接口将需要国际化的字符串包含起来;
(2)getext读取代码文件中的被接口包含的字符串生成po文件,我们把po文件的对应字符串进行翻译,然后gettext再将po文件转成mo文件,最终根据语言区域,将字符串转成当地的语言;
5. 文件生成步骤:
(1)在cmd中使用语句 (xgettext.exe -k_ -o DesignPattern.po DesignPattern.cpp) 生成.po文件;
生成的po文件中有
"Content-Type: text/plain; charset=CHARSET\n"
msgid "Error en los parametros de entrada.\n"
msgstr ""
将CHARSET 改为UTF-8;
msgid 代表原先代码里的字符串;msgstr 里需要自己写上需要翻译成的字符串;
(2) 在cmd中使用语句 (msgfmt -o DesignPattern.mo DesignPattern.po) 生成.mo文件;
(3)将生成的mo文件放在固定的文件夹下( locale/zh_CN/LC_MESSAGES文件夹下);
(4)运行程序,控制台会显示自己填写的翻译内容;
使用 GNU gettext 实现国际化相关推荐
- java gnu gettext_多国语言解决方案gnu.gettext + poedit
1.工具简介 1.1.关于i18n i18n其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数是"国际化"的简称. i10n为资源本地化 ...
- java file gettext_避免使用.properties文件GNU Gettext Java
首先,我的问题类似于这两个问题: >我想使用GNU Gettext实用程序对我的应用程序进行国际化.我设法通过使用正确的键值对创建一个translations.properties文件来使其工作 ...
- python:gettext --- 多语种国际化服务
python:gettext --- 多语种国际化服务 GNU gettext API 基于类的 API NullTranslations 类 GNUTranslations 类 Solaris 消息 ...
- c语言gettext的头文件,C语言中用GNU gettext实现本地化
首先要确认GNU gettext已经被安装. 写一个示例程序 gettext_test.c: #include #include #include #define _(string) gettext( ...
- GNU gettext
Frequently Asked Questions for GNU gettext Questions General Where is the mailing list? Where is ...
- 第十五章:国际化和本地化-gettext:消息编目-转换工作流概述
第15章:国际化和本地化 15.1 gettext:消息编目 gettext模块提供了一个纯Python实现,与GNU gettext库兼容,用于完成消息转换和编目管理.利用Python源代码发布版提 ...
- GNU/Linux上程序的国际化和本地化(I18N I10N)
[目录] 0. forward 1. i18n and l10n introduction 2. gettext and intltool introduction 3. building a i18 ...
- Python中国际化(i18n)完整指南
这是一个完整的指南,展示了如何为一个Python应用程序进行国际化(i18n).当我在handroll项目中添加i18n时,我很难找到支持其他语言的明确建议.这是我个人的一点经验,解释了我是如何做到这 ...
- wxWidgets:支持国际化
wxWidgets:支持国际化 wxWidgets:支持国际化 入门 翻译目录中的内容 开始翻译成新语言 使用最新的字符串更新更新现有翻译 数据文件组织 将其放入您的应用程序中 wxWidgets:支 ...
最新文章
- java何时支持await,内存-为什么Java等待这么长时间才能运行垃圾回收器?
- 管理文库]我喜欢的10个经典管理学定律点评
- 【Android 异步操作】线程池 ( 线程池 execute 方法源码解析 )
- tensorflow 1.0 学习:模型的保存与恢复(Saver)
- css x轴不滚动_泡沫轴滚动放松是什么原理:你并不了解泡沫轴
- 割裂的前端工程师--- 2017年前端生态窥探
- 将DataFrame某列中的空值填充为0
- 解决CesiumForUnreal加入CesiumSunSky并调整设置后场景仍然纯白的问题
- 什么pdf转换成word转换器在线好
- P5167 xtq的神笔
- 叉积 微分 恒等式_不等式(O):常见符号及恒等式
- java面试全套清单_Java 全套面试题 PDF 下载
- Tomcat : 修改Tomcat端口号
- 安全产品的核心逻辑-杀毒软件
- 3.5Bootstrap组件篇之导航条
- 被称为世上最经典的24句话
- MySQL 常用命令速查表:日常开发、求职面试必备良方!
- Xcode 9 下为适配 iPhoneX 导致对 iOS 10 不兼容问题
- 如何使用码云高校版批改学生作业? | 码云高校版最佳实践
- 键盘快捷键大全 - Mac 技巧