- 论坛徽章:
- 0
|
多谢各位,已经搞定了,原理我还不大懂,但确实可以了,现在英文,简体中文,繁体中文都可以显示,剩下的工作就是综合一下了,我是这么做的。
1、英文
英文的话就不需要po和mo文件了,设置好语言环境即可
setlocale(LC_ALL, "C");
setenv("LANG", "C", 1);
2、简体中文
charset=gb2312,charset应该不是文件的编码,而是要显示的字符串的编码
setlocale(LC_ALL, "zh_CN.UTF-8");
setenv("LANG", "zh_CN", 1);
3、繁体中文
charset=big5
setlocale(LC_ALL, "zh_TW.Big5");
setenv("LANG", "zh_TW", 1);
以下是显示繁体中文的完整源码:
#include <gtk/gtk.h>
#include <stdio.h>
#include <stdio.h>
#include <libintl.h>
#include <stdlib.h>
#define GETTEXT_PACKAGE "gi18n"
#define LOCALEDIR "./locale"
#define _(STRING) gettext(STRING)
int main(int argc,char **argv)
{
GtkWidget *window;
gtk_init (&argc, &argv);
setlocale(LC_ALL, "zh_TW.Big5");
setenv("LANG", "zh_TW", 1);
bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
textdomain (GETTEXT_PACKAGE);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW(window), g_locale_to_utf8(_("help"), -1, NULL, NULL, NULL));
g_signal_connect (G_OBJECT (window), "delete-event", G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show (window);
gtk_main ();
return 0;
}
代码可能有笔误,不是直接拷贝过来的,要在当前目录下建个locale的文件夹,mo文件就放在./locale/zh_TW/LC_MESSAGES/里 |
|