亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: gettext無(wú)法提取翻譯信息,求助 [打印本頁(yè)]

作者: 艾因思念    時(shí)間: 2006-08-09 11:02
標(biāo)題: gettext無(wú)法提取翻譯信息,求助
用glade+anjuta開(kāi)發(fā),glade畫(huà)界面,anjuta就會(huì)自動(dòng)生成main.c。悖幔欤欤猓幔悖耄恪nterface.c 和support.c四個(gè)c文件,還有其他

我把我的這兩個(gè)main。c,callback.c文件貼出來(lái)

callback.c

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <gnome.h>

#include "callbacks.h"
#include "interface.h"
#include "support.h"


void
on_button1_clicked                     (GtkButton       *button,
                                        gpointer         user_data)
{
char *contp;
contp = gettext("aaa");
GtkWidget *msgbox = gnome_app_new("Hello World", "Hello World");
gnome_app_message (GNOME_APP(msgbox), contp);
}


main.c

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <gnome.h>

#include "interface.h"
#include "support.h"

//#define _(String)  gettext(String)
//#define N_(String)  gettext(String)
//#define _ _(String) (String)
int
main (int argc, char *argv[])
{
  GtkWidget *window1;

#ifdef ENABLE_NLS
  bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
  textdomain (GETTEXT_PACKAGE);
#endif

  gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE,
                      argc, argv,
                      GNOME_PARAM_APP_DATADIR, PACKAGE_DATA_DIR,
                      NULL);

  /*
   * The following code was added by Glade to create one of each component
   * (except popup menus), just so that you see something after building
   * the project. Delete any components that you don't want shown initially.
   */
  window1 = create_window1 ();
  gtk_widget_show (window1);

  gtk_main ();
  
  setlocale(LC_ALL, "en");
  bindtextdomain("language", "/usr/local/language/share/local/");
  //textdomain("language");
  GtkWidget *msgbox = gnome_app_new("Hello World", "Hello World");
  gnome_app_message (GNOME_APP(msgbox),gettext("Some String"));
  gnome_app_message (GNOME_APP(msgbox),GETTEXT_PACKAGE);
  
// printf(gettext("Some String"));

  return 0;
}

弄好c文件,然后我配置configure安裝在/usr/local/language/(因?yàn)槲业捻?xiàng)目名稱(chēng)叫做language,所以我在/usr/local/下建立了一個(gè)language目錄),然后運(yùn)行configure,make,make。椋睿螅簦幔欤彀惭b我的程序,然后我再建立/usr/local/language/share/local/en/LC_MESSAGES文件夾,其中l(wèi)ocal/en/LC_MESSAGES這部分是原來(lái)沒(méi)有的,然后把四個(gè)c文件cp到/usr/local/language/share/local/en/LC_MESSAGES,執(zhí)行xgettext -n *.c這時(shí)候生成了messages.po文件,po文件內(nèi)容如下:
[root@FC5TEST LC_MESSAGES]# cat messages.po
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-08-09 11:07+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: callbacks.c:17
msgid "aaa"
msgstr "bbb"

#: main.c:48
msgid "Some String"
msgstr "ddddd"

然后我再運(yùn)行msgfmt messages.po就出現(xiàn)了一個(gè)提示信息:
[root@FC5TEST LC_MESSAGES]# msgfmt messages.po
msgfmt: messages.po: warning: Charset "CHARSET" is not a portable encoding name.
                              Message conversion to user's charset might not work.
此時(shí)我運(yùn)行我安裝后的程序,界面上就有一個(gè)button,正常運(yùn)行后就應(yīng)該彈出一個(gè)message,顯示ddddd,然后單擊那個(gè)button顯示bbb,但是現(xiàn)在是運(yùn)行后沒(méi)有顯示ddddd,點(diǎn)擊button時(shí)候只是彈出了aaa,而不是我要翻譯后的bbb
請(qǐng)各位幫忙,小艾謝謝大家
作者: 艾因思念    時(shí)間: 2006-08-09 11:43
操作系統(tǒng)是FC5,我在FC4也試過(guò)了,同樣的提示信息,同樣的現(xiàn)象
作者: limodou    時(shí)間: 2006-08-09 11:52
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=CHARSET\n"


這些信息的值都是缺省的,需要修改。如果你的翻譯是中文的,charset建議為utf-8,同時(shí)要注意你的整個(gè)文件必須與這里的聲明要一致,比如說(shuō)使用utf-8編碼保存。
作者: 艾因思念    時(shí)間: 2006-08-09 13:45
原帖由 limodou 于 2006-8-9 11:52 發(fā)表


這些信息的值都是缺省的,需要修改。如果你的翻譯是中文的,charset建議為utf-8,同時(shí)要注意你的整個(gè)文件必須與這里的聲明要一致,比如說(shuō)使用utf-8編碼保存。


1。我想把它變成英文的,或者日文的,那么這個(gè)字符集與語(yǔ)言的對(duì)應(yīng)怎么對(duì)應(yīng)?
[root@FC5TEST LC_MESSAGES]# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
我把charset變成了en_US.UTF-8,生成mo文件時(shí)候還是抱錯(cuò)
2。還有就是你說(shuō)那些缺省的部分需要修改,是必須的嗎?有什么用嗎?
作者: 艾因思念    時(shí)間: 2006-08-09 14:06
我剛才把上面的charset變成UTF-8了,結(jié)果那個(gè)msgfmt沒(méi)有問(wèn)題了,至少?zèng)]有提示什么出錯(cuò)信息
但是程序運(yùn)行后,并沒(méi)有取出那個(gè)aaa應(yīng)該翻譯成的字符串bbb
這個(gè)mo文件位置應(yīng)該在哪里?
我的程序安裝在/usr/local/language/
我那個(gè)mo文件放在下面路徑了:
/usr/local/language/share/local/en/LC_MESSAGES/messages.mo
說(shuō)明一下,local包括local以后都是我自己建立的文件夾,安裝時(shí)候沒(méi)有
此時(shí),當(dāng)按鈕單擊后彈出的消息框還是aaa
然后我把這個(gè)message.mo放在/usr/share/locale/en/LC_MESSAGES/language.mo
同樣的現(xiàn)象,還是彈出aaa
作者: 艾因思念    時(shí)間: 2006-08-09 17:13
看過(guò)一些文檔后,我把那個(gè)mo文件放到了/usr/share/locale/en/LC_MESSAGES/下面,但是運(yùn)行時(shí)還是原來(lái)的aaa,不是下面要替換的字串
作者: 艾因思念    時(shí)間: 2006-08-10 08:51
有人用anjuta開(kāi)發(fā)過(guò)嗎?有些資料說(shuō)anjuta就支持i18n國(guó)際化,可是我沒(méi)有找到,只是在新建項(xiàng)目的時(shí)候有一個(gè)gettext的支持,這有什么用呢?




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2