免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1660 | 回复: 0
打印 上一主题 下一主题

anjuta+glade3+gtkbuilder+国际化(处理pot,po,gmo,mo) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-03 17:37 |只看该作者 |倒序浏览

                                                                转载请注明文章出处
http://blog.chinaunix.net/u3/96577/showart_1985170.html
gtk从2.12开始就包含了gtkbuilder,带来了新的特性。
所以新编写的程序我准备用gtkbuilder来构建基础界面。
anjuta的国际化支持,用起来不顺手,那就修改一下
字符串的处理流程        -by redtin
.c --------> .pot ---------> .po ---------> .gmo --------->.mo
   提取字符串        翻译            编译成二进制          安装
1 用向导生成一个gtk项目。
修改主文件main.c,去掉对libglade对支持。
注释头文件
//#include
2 在create_window函数中修改
-       GladeXML *gxml;
-      
-       gxml = glade_xml_new (GLADE_FILE, NULL, NULL);
-      
-       /* This is important */
-       glade_xml_signal_autoconnect (gxml);
-       window = glade_xml_get_widget (gxml, "window");
为        -by redtin
+       GtkBuilder *builder;
+       GError * gerr = NULL;
+
+       builder=gtk_builder_new();
+       gtk_builder_add_from_file(builder,GLADE_FILE,&gerr);
+       gtk_builder_connect_signals (builder, NULL);
+       window=GTK_WIDGET(gtk_builder_get_object(builder,"window"));
3 为了调试方便,我们定义glade文件地位置
#define GLADE_FILE "(项目名).glade"
到发布对时候可以改成
#define GLADE_FILE PACKAGE_DATA_DIR"/(项目名)/glade/(项目名).glade"
(有些版本的anjuta提供了替换的定义)
4 打开glade文件,在菜单中 Glade -> Versioning 选中 GtkBuilder
下面用来实现国际化
5 打开po目录下的LINGUAS文件,在最后添加zh_CN(保持文件字母序)
6 进入终端,切换到po目录,运行
    make update-po
会生成一个(项目名).pot文件。
复制一份
cp (项目名).pot zh_CN.po
        -by redtin
7 修改Makefile
在Makefile中加入(可以同时加入Makefile.in.in)
#copy lang.gmo to its bind-text-domain
cpmo:
    linguas="$(USE_LINGUAS)"; \
    for lang in $$linguas; do \
      dir=$(srcdir)/$$lang/LC_MESSAGES; \
      $(mkdir_p) $$dir; \
      if test -r $$lang.gmo; then \
        cp $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
        echo "Copied $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
      fi; \
    done
搜索”all-yes:“,修改为
all-yes: $(CATALOGS) cpmo
如果不修改Makefile可以建立个软链接.
8 main.c中,在 #ifdef ENABLE_NLS 之前,添加
#undef PACKAGE_LOCALE_DIR
#define PACKAGE_LOCALE_DIR "/(项目的绝对路径)/po"
9 编辑po目录下的zh_CN.po文件,把charset=设置成utf-8
10 编辑zh_CN.po,开始翻译。
如果你不想手工翻译,可以使用poedit的TM功能(
见我另一篇文章
)
        -by redtin
至此,glade和国际化对修改就全部完成拉。
有剩余体力的童鞋,可以酌情修改anjuta的模板,一劳永逸。在
/usr/share/anjuta/project/gtk
或        -by redtin
/usr/local/share/anjuta/project/gtk
Anjuta 2.27.3.0,Ubuntu9.04
               
               
               
               
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/96577/showart_1985170.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP