如何解决如何从 C++ 中的 GNU gettext .mo 文件中获取编码
我正在使用 GNU gettext 进行翻译并且它有效。 以下测试代码展示了我的实现思路:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <libintl.h>
#include <locale.h>
#define _(STRING) gettext(STRING)
int main()
{
/* Setting the i18n environment */
setlocale (LC_ALL,"");
bindtextdomain ("hello",getenv("PWD"));
textdomain ("hello");
/* Example of i18n usage */
std::cout << _("Hello World!") << std::endl;
setenv("LANGUAGE","fr",1);
std::cout << _("Hello World!") << std::endl;
return EXIT_SUCCESS;
}
我有一个可用的 .mo 文件,所以当我运行程序时,我得到:
Hello World!
Bonjour le monde!
到目前为止一切顺利。 但是我必须将翻译后的字符串转发到第 3 方应用程序,并且我需要在那里指明编码(Latin 1、Latin 9、Cyrillic、UTF-8 等)。
如何在运行时获取编码?
解决方法
试图找出用于翻译字符串的编码是一种猜测工作。但是您可以通过调用 bind_textdomain_codeset(DOMAINNAME,CODESET)
来强制执行某种编码,请参阅 https://man7.org/linux/man-pages/man3/bind_textdomain_codeset.3.html。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。