日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux 的中文化問題簡介( 七 )



其中;prog.gmo 。就是我們要的訊息檔,等到我們把它安裝到;
/usr/share/locale/..../LC_MESSAGES/

之後,就名改為;prog.mo; 。在此,;.pot,;pox,;gmo;等附檔名是;info;gettext;中建議的,分別代表未翻譯前的訊息原始檔、翻譯後的訊息原始檔、;經(jīng);GNU;gettext;套件編譯後的訊息檔 。;
七、撰寫;Xi18n;程式:;
Xi18n;意指在;X;Window;中加入;I18N;的支援 。除了上述的部分外,;Xi18n;還需要考慮字形設(shè)定、圖形字串輸出、以及輸入的問題 。由於目前我只有看過;Xlib,;對於其他;Widget;還沒有深入研究,因此我只能對;Xlib;的部分稍作說明 。而這類的參考資料,有興趣的朋友可以找;

The;Definitive;Guides;to;the;X;Window;System;

這一系列的書來看,出版商是;O"Reilly;&;Associates;Inc.;,其中有兩本;

 ;

Volume;One,;Xlib;Programming;Manual;(for;Version;11);
Author:;Adrian;Nye

R6;Update;for;the;R5;Editions;of;vols.;1,;2,;4,;&;5;Programmer"s;Supplement;for;Release;6;of;the;X;Window;System.;
Author:;Adrian;Nye

在;I18N;方面有詳盡的資料,很值得參考 ?;蛘呤强梢钥纯?XFree86;內(nèi)附的;.ps;文件;(如果您有安裝的話,應(yīng)該在;/usr/X11R6/lib/X11/doc;頭) 。;

 ;

第一步;(詳見;man;XSupportsLocale):;
除了;setlocale();之外,您還要呼叫;XSupportsLocale();來確定;X;Window;對您;目前的;locale;是否有支援 。另外,您還要呼叫;XSetLocaleModifiers();來設(shè)定;一些;X-modifier;的值,例如下:;


--------------------------------------------------------------------------------

#include;

#include;

#include;


main()
{
setlocale(LC_CTYPE,;"");
if;(XSupportsLocale();!=;True);{
printf("error;X;locale;settingn");
exit(0);
}
XSetLocaleModifiers("");
}


--------------------------------------------------------------------------------
在此我們用;X11/Xlocale.h;來取代原來的;locale.h,;這是;"Xlib;programming;manual";書中建議的,在其備完整;locale;支援的;libc;環(huán)境下,它其實是等價;於;include;,;但若在其他環(huán)境,;Xlocale.h;會用;XLOCALE;機制來;取代原有的機制 。;
上頭的;XSetLocaleModifiers;會存環(huán)境變數(shù);XMODIFIERS;中取得;X-modifier;的值并加以設(shè)定之 。;XMODIFIERS;的格式為:;

export;XMODIFIERS="@category=value"

目前;category;只有;"im";有用,如;"@im=xcin-cxims",;意指設(shè)定;xcin-cxims;作為此;X;Window;程式的;XIM;server 。;


設(shè)定;fontset;(詳見;man;XCreateFontSet):;
以往;X;Window;程式都是呼叫;XLoadQueryFont();之類的函式來載入并使用字型 。;但在;Xi18n;的架構(gòu)下,一個;locale;的;encoding;通常不能光用一種字型來表示 。;例如我們的;zh_TW.Big5,;半形字需用英文字型;(如;-*-iso8859-1),而全形字需;用中文字型;(如;-twmoe-*-big5-0),;因此,我們不能用;XLoadQueryFont();將這;些字型分別載入,而要用;XCreateFontSet();來載入所需的;fontset 。;

 ;


--------------------------------------------------------------------------------

Display;*display;
XFontSet;fontset;
char;*fontset_name,;**missing_charset,;*def_string;
int;missing_charset_count;

fontset_name;=;"-*-iso8859-1,-twmoe-*-big5-0";
fontset;=;XCreateFontSet(display,;fontset_name,
&missing_charset_list,;
&missing_charset_count,
&def_string);


--------------------------------------------------------------------------------

在這我們可以將;fontset;看成一個「字型物件」,而不要把它看成;"-*-iso8859-1";與;"-twmoe-*-big5-0";這兩種字型的組合 。當我們要畫任何字;串時,我們不用擔心要畫的到底是全型字或半型字,使用;fontset;便能幫我們;處理一切 。;



畫出字串;(詳見;man;XwcDrawImageString,;man;XmbDrawImageString,;manXOpenOM);
平常我們要在視窗畫字串時,都會用;XDrawImageString();等函式,或者用;XDrawImageString16();來畫雙位元的字串;(即全型字) 。現(xiàn)在可以我們用;XwcDrawImageString;(用來畫;wide-char;(wchar_t;*);字串);或;XmbDrawImageString;(用來畫;multi-byte;(char;*);字串); 。不管您輸入的字;串是全型或半型,或二者的混合,使用者兩個函式都能正確處理,同時會根據(jù);您的;fontset;的設(shè)定來畫字 。;

推薦閱讀