当前位置: 技术问答>linux和unix
GTK 國際化 高手賜教
来源: 互联网 发布时间:2016-05-29
本文导语: 我現在做的GTK國際化對單個文件有用。 但是當多個.c .cpp文件聯合起來編譯成一個.po .o文件后,用./main來執行的時候就不能轉換語言了。 我只在main.c中設置了 gtk_set_locale(); bindtextdomain("main","/usr/sha...
我現在做的GTK國際化對單個文件有用。
但是當多個.c .cpp文件聯合起來編譯成一個.po .o文件后,用./main來執行的時候就不能轉換語言了。
我只在main.c中設置了
gtk_set_locale();
bindtextdomain("main","/usr/share/locale/");
textdomain("main");
setlocale(LC_ALL,"");
是不是每個要用到翻譯的都地方(函數)都要進行這樣的設置,才能知道怎么翻譯?
請高手指點下 謝謝
但是當多個.c .cpp文件聯合起來編譯成一個.po .o文件后,用./main來執行的時候就不能轉換語言了。
我只在main.c中設置了
gtk_set_locale();
bindtextdomain("main","/usr/share/locale/");
textdomain("main");
setlocale(LC_ALL,"");
是不是每個要用到翻譯的都地方(函數)都要進行這樣的設置,才能知道怎么翻譯?
請高手指點下 謝謝
|
先生成po,然后打开po文件,写上对应的语言,
然后转换为mo,
看
ls /usr/share/locale/zh_CN/LC_MESSAGES
FvwmScript.mo debconf.mo gdesklets.mo iso_15924.mo iso_4217.mo libapt-inst1.1.mo stardict.mo
FvwmTaskBar.mo dpkg.mo ggzcore9.mo iso_3166.mo iso_639.mo libapt-pkg4.6.mo subversion.mo
apt.mo fvwm.mo glade-2.0.mo iso_3166_2.mo iso_639_3.mo pcmanx.mo xdg-user-dirs.mo
然后转换为mo,
看
ls /usr/share/locale/zh_CN/LC_MESSAGES
FvwmScript.mo debconf.mo gdesklets.mo iso_15924.mo iso_4217.mo libapt-inst1.1.mo stardict.mo
FvwmTaskBar.mo dpkg.mo ggzcore9.mo iso_3166.mo iso_639.mo libapt-pkg4.6.mo subversion.mo
apt.mo fvwm.mo glade-2.0.mo iso_3166_2.mo iso_639_3.mo pcmanx.mo xdg-user-dirs.mo
|
要把local设置为你要转换的语言环境。
|
看一下环境变量
export LC_CTYPE
如果没有
[code=BatchFile]
vim /etc/profile 添加
LC_CTYPE=zh_CN.utf8
[/code]
export LC_CTYPE
如果没有
[code=BatchFile]
vim /etc/profile 添加
LC_CTYPE=zh_CN.utf8
[/code]
|
这段代码应该只需要使用一次。
gtk_set_locale();
bindtextdomain("main","/usr/share/locale/");
textdomain("main");
放在gtk_init()调用之前,但必须是同一个作用域。
setlocale(LC_ALL,"");
这句仿佛没有必要,我的代码里就没有用。