⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000002.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
/*&nbsp;file&nbsp;this_app.c&nbsp;*/&nbsp;<BR>#include&nbsp;&nbsp;<BR>#include&nbsp;&nbsp;<BR>#define&nbsp;_(String)&nbsp;gettext(String)&nbsp;<BR>#define&nbsp;N_(String)&nbsp;gettext(String)&nbsp;<BR>#define&nbsp;__(String)&nbsp;(String)&nbsp;<BR>&nbsp;<BR>int&nbsp;main(){&nbsp;<BR>//由环境变量决定locale&nbsp;<BR>setlocale(LC_ALL,&nbsp;&quot;&quot;);&nbsp;<BR>&nbsp;<BR>//设置message的位置和文件名&nbsp;<BR>bindtextdomain(&quot;this_app&quot;,&nbsp;&quot;/usr/share/locale&quot;);&nbsp;<BR>textdomain(&quot;this_app&quot;);&nbsp;<BR>&nbsp;<BR>printf(_(&quot;Some&nbsp;String&quot;));&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>至此,&nbsp;本程序的国际化过程已完成.&nbsp;编译并联接成可执行文件this_app.&nbsp;<BR>&nbsp;<BR>gcc&nbsp;-o&nbsp;this_app&nbsp;this_app.c&nbsp;<BR>&nbsp;<BR>下面是本地化的过程.&nbsp;<BR>&nbsp;<BR>o&nbsp;提取要翻译的信息:&nbsp;xgettext&nbsp;-a&nbsp;-o&nbsp;this_app.po&nbsp;this_app.c&nbsp;<BR>o&nbsp;翻译信息&nbsp;<BR>&nbsp;<BR>在文件this_app.po&nbsp;中含有&quot;Some&nbsp;String&quot;:&nbsp;<BR>&nbsp;<BR>msgid&nbsp;&quot;Some&nbsp;String&quot;&nbsp;<BR>msgstr&nbsp;&quot;&quot;&nbsp;<BR>&nbsp;<BR>翻译成:&nbsp;<BR>&nbsp;<BR>msgid&nbsp;&quot;Some&nbsp;String&quot;&nbsp;<BR>msgstr&nbsp;&quot;一些字符串&quot;&nbsp;<BR>&nbsp;<BR>o&nbsp;格式化信息文件:&nbsp;msgfmt&nbsp;-o&nbsp;this_app.mo&nbsp;this_app.po&nbsp;<BR>o&nbsp;拷贝信息文件到locale的目录下,&nbsp;比如对于中文zh_CN,&nbsp;cp&nbsp;this_app.mo&nbsp;<BR>/usr/share/locale/zh_CN/LC_MESSAGES&nbsp;<BR>o&nbsp;执行文件:&nbsp;LC_ALL=zh_CN&nbsp;./this_app&nbsp;<BR>&nbsp;<BR>3.&nbsp;输入的国际化&nbsp;<BR>&nbsp;<BR>在X窗口系统下输入主要有三种方式:&nbsp;<BR>&nbsp;<BR>1.&nbsp;单此击键输入单字符&nbsp;<BR>2.&nbsp;两个或多个组合键输入单字符&nbsp;<BR>3.&nbsp;除键输入外,&nbsp;还需要转换服务器&nbsp;<BR>&nbsp;<BR>其中前两种用于输入西文字符,&nbsp;比如对于欧洲语言的特殊字符的输入,&nbsp;通常采用&nbsp;<BR>重映射键盘的方法.&nbsp;或者使用&quot;加速键&quot;的方法输入,&nbsp;加速键是键盘&nbsp;上的特殊键,&nbsp;<BR>按下后不会使光标向后移动.&nbsp;<BR>&nbsp;<BR>在Linux下,&nbsp;使用软件xkeycaps可以把键盘重新映射并且保存整个键盘&nbsp;在映射后&nbsp;<BR>的对照表,&nbsp;使用命令xmodmap可以加载映射表.&nbsp;<BR>&nbsp;<BR>对于中文输入,&nbsp;主要使用第三种输入方式.&nbsp;针对各种语言的综合考虑,&nbsp;X&nbsp;窗口系&nbsp;<BR>统在输入上定义了下列区域:&nbsp;<BR>&nbsp;<BR>1.&nbsp;预编辑区域(Preedit&nbsp;Area),&nbsp;用于显示输入的过程,&nbsp;当用户输入&nbsp;字符时,&nbsp;<BR>应立即显示在该区域&nbsp;<BR>2.&nbsp;状态区域(Status&nbsp;Area),&nbsp;用于显示输入状态,&nbsp;对中文来说,&nbsp;用于显示输入&nbsp;<BR>方法,&nbsp;全角/半角状态,&nbsp;中文/西文标点符号状态.&nbsp;<BR>3.&nbsp;辅助区域(Auxiliary&nbsp;Area),&nbsp;显示可供选择的列表,&nbsp;又称选择&nbsp;区域,&nbsp;它由&nbsp;<BR>输入服务器控制.&nbsp;<BR>&nbsp;<BR>根据预编辑区域和状态区域的不同组合,&nbsp;X&nbsp;窗口系统共定义了四种输入&nbsp;的风格&nbsp;<BR>(Input&nbsp;Style):&nbsp;<BR>&nbsp;<BR>1.&nbsp;Root风格:&nbsp;预编辑区域和选择区域都在应用软件之外,&nbsp;它们都是&nbsp;由输入服&nbsp;<BR>务器完成的,&nbsp;输入服务器所显示的界面是根窗口的子&nbsp;窗口.&nbsp;如类似&quot;中文之&nbsp;<BR>星&quot;的独立的输入条模式.&nbsp;<BR>2.&nbsp;OffTheSpot风格:&nbsp;预编辑区域和选择区域在应用软件之内,&nbsp;通常&nbsp;是在窗口&nbsp;<BR>下方的某个固定区域内.&nbsp;如XEmacs的缺省输入模式.&nbsp;<BR>3.&nbsp;OverTheSpot风格:&nbsp;预编辑区域在当前的输入位置,&nbsp;状态区域&nbsp;在应用程序的&nbsp;<BR>某一固定区域.&nbsp;它通常又称为光标跟随模式,&nbsp;类似&nbsp;于Windows下的智能ABC&nbsp;<BR>输入方法&nbsp;<BR>4.&nbsp;OnTheSpot风格:&nbsp;预编辑区域和选择区域都在应用软件之内,&nbsp;内容是又输入&nbsp;<BR>服务器发送的,&nbsp;应用程序负责显示.&nbsp;<BR>&nbsp;<BR>对中文输入来说,&nbsp;最好的风格是(3),(4),(1).&nbsp;对大部分中文输入方法,&nbsp;必须弹出&nbsp;<BR>辅助区域,&nbsp;供用户选择,&nbsp;只有少数的中文输入方法,&nbsp;如五笔字型,&nbsp;比较适合(4).&nbsp;<BR>对于状态区域,&nbsp;中文输入多数选用在Root风格的窗口的某个&nbsp;位置或使用专用的控&nbsp;<BR>制条.&nbsp;在MS&nbsp;Windows下比较常用的光标跟随模式,&nbsp;可以&nbsp;用(3),(4)来实现.&nbsp;鉴于&nbsp;<BR>Linux下有的用户把X&nbsp;Window设置成为虚屏模式,&nbsp;选&nbsp;择上述的任何一种模式都不&nbsp;<BR>尽满意.&nbsp;<BR>&nbsp;<BR>对应用软件来说,&nbsp;最简单的输入接口是Root风格,&nbsp;它把显示部分交给&nbsp;输入服务器&nbsp;<BR>去做.&nbsp;编写软件时所用的代码量少,&nbsp;是对软件初步使用国际化&nbsp;标准的最佳选择.&nbsp;<BR>从方便用户的角度来看,&nbsp;应用软件,&nbsp;特别是高层的库函数&nbsp;应该同时支持四种输入&nbsp;<BR>风格.&nbsp;令人遗憾的是,&nbsp;一般软件仅支持两到三种输入&nbsp;风格.&nbsp;所以在现在的输入服&nbsp;<BR>务器(IM&nbsp;Server)也很少支持四种风格,&nbsp;这似乎&nbsp;成了鸡和蛋的问题.&nbsp;<BR>&nbsp;<BR>下面列出几种常用软件和图形库的XIM支持情况:&nbsp;<BR>&nbsp;<BR>NetscapeRoot,OffTheSpot,OverTheSpot&nbsp;<BR>Java&nbsp;Root,OnTheSpot&nbsp;<BR>Qt&nbsp;Root,OverTheSpot&nbsp;<BR>gtk+&nbsp;Root,OverTheSpot&nbsp;<BR>rxvt&nbsp;Root,OffTheSpot,OverTheSpot&nbsp;<BR>&nbsp;<BR>中文输入需要客户软件和服务器软件的的密切配合,&nbsp;它们之间是通过&nbsp;XIM(X&nbsp;<BR>Input&nbsp;Method)协议来通讯的.&nbsp;输入服务器首先起动,&nbsp;在X&nbsp;Server里&nbsp;注册自己,&nbsp;<BR>服务器的名字也被注册.&nbsp;当客户程序起动时,&nbsp;到X&nbsp;Server里查寻&nbsp;有没有符合自己&nbsp;<BR>locale类型的输入服务器(如果用XMODIFIERS指定服务器名,&nbsp;则同时用locale和名&nbsp;<BR>字区分).&nbsp;找到后,&nbsp;根据输入服务器提供的风格种类&nbsp;选择一个最适合自己的风格.&nbsp;<BR>然后客户程序为每一个需要输入的窗口都建立&nbsp;一个自己的标示IC(Input&nbsp;<BR>Context),&nbsp;里面含有客户程序的信息,&nbsp;以后的通讯&nbsp;则一直使用该标示.&nbsp;<BR>&nbsp;<BR>下面是直接使用X&nbsp;Lib和服务器联接的过程,&nbsp;在高层函数库中,&nbsp;把这一&nbsp;过程隐藏&nbsp;<BR>了起来:&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>XIM&nbsp;im;&nbsp;<BR>XIC&nbsp;ic;&nbsp;<BR>...&nbsp;<BR>if(&nbsp;(im&nbsp;=&nbsp;XOpenIM(display,&nbsp;NULL,&nbsp;NULL,&nbsp;NULL))&nbsp;==&nbsp;NULL&nbsp;)&nbsp;{&nbsp;<BR>printf(&quot;Error&nbsp;:&nbsp;XOpenIM&nbsp;!\n&quot;);&nbsp;<BR>exit(0);&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>//指定预编辑的类型等...&nbsp;<BR>if(&nbsp;(ic&nbsp;=&nbsp;XCreateIC(im,&nbsp;<BR>XNInputStyle,&nbsp;XIMPreeditPosition&nbsp;|&nbsp;XIMStatusNothing,&nbsp;<BR>XNClientWindow,&nbsp;window,&nbsp;<BR>NULL))&nbsp;==&nbsp;NULL&nbsp;)&nbsp;{&nbsp;<BR>printf(&quot;Error&nbsp;:&nbsp;XCreateIC()&nbsp;!&nbsp;\n&quot;);&nbsp;<BR>XCloseIM(im);&nbsp;<BR>exit(0);&nbsp;<BR>}&nbsp;<BR>...&nbsp;<BR>&nbsp;<BR>for(;;)&nbsp;{&nbsp;<BR>XNextEvent(display,&nbsp;&amp;event);&nbsp;<BR>&nbsp;<BR>//如果输入服务器接收并处理...继续&nbsp;<BR>if&nbsp;(XFilterEvent(&amp;event,&nbsp;None)&nbsp;==&nbsp;True)&nbsp;<BR>continue;&nbsp;<BR>switch(event.type)&nbsp;{&nbsp;<BR>case&nbsp;Expose:&nbsp;<BR>XmbDrawString(...);&nbsp;<BR>case&nbsp;KeyPress:&nbsp;<BR>count&nbsp;=&nbsp;XmbLookupString(ic,&nbsp;<BR>(XKeyPressedEvent&nbsp;*)&nbsp;&amp;event,&nbsp;<BR>string,&nbsp;len,&nbsp;&amp;keysym,&nbsp;&amp;status);&nbsp;<BR>...&nbsp;<BR>}&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>目前使用比较广泛的XIM输入服务器有Chinput(简体中文,&nbsp;同时支持繁体),&nbsp;xcin&nbsp;<BR>(繁体中文),&nbsp;kinput2(日文)&nbsp;和&nbsp;hanIM/ami(韩文).&nbsp;<BR>&nbsp;<BR>中文输入服务器Chinput&nbsp;选择了OverTheSpot风格作为缺省的输入模式,&nbsp;它与标准&nbsp;<BR>的输入风格略有不同,&nbsp;即把预编辑区域偏离输入位置,&nbsp;使输入区&nbsp;域同时作为状态&nbsp;<BR>区域,&nbsp;在很大程度满足了用户的输入习惯.&nbsp;同时它还使用&nbsp;辅助工具条显示和改变&nbsp;<BR>输入状态.&nbsp;Chinput还解决了同时使用GB和Big5编码&nbsp;的问题,&nbsp;被动输入(Passive&nbsp;<BR>Input)问题等.&nbsp;对于普通用户,&nbsp;除了使用键盘&nbsp;输入外,&nbsp;还可以使用手写识别输入&nbsp;<BR>和语音识别输入方式.&nbsp;目前的输入架构&nbsp;基本能够满足它们的要求.&nbsp;笔者在手写识&nbsp;<BR>别输入方面做了一些尝试,&nbsp;发&nbsp;现对绝大部分软件是能够适合被动输入的.&nbsp;<BR>&nbsp;<BR>4.&nbsp;打印的国际化&nbsp;<BR>&nbsp;<BR>在X窗口系统下的打印是一个很难解决的问题,&nbsp;所以到目前为止没有形成&nbsp;一个统&nbsp;<BR>一的打印标准.&nbsp;其原因之一就是X窗口系统在设计上把显示和打印完全&nbsp;分开了.&nbsp;<BR>&nbsp;<BR>在Linux最常见的需要打印的文件格式是普通文本文件和PostScript文件.&nbsp;对于中&nbsp;<BR>文的普通文本文件的打印一般需要先转换为PostScript文件再打印.&nbsp;对于&nbsp;<BR>PostScript文件,&nbsp;如果应用软件在生成时含有中文字体信息,&nbsp;则打印&nbsp;比较容易实&nbsp;<BR>现,&nbsp;反之,&nbsp;则很难实现甚至不可能打印.&nbsp;<BR>&nbsp;<BR>目前中文文本文件常用的打印方法通常是,使用gb2ps/bg2ps/cnprint&nbsp;等&nbsp;软件转&nbsp;<BR>换成PS文件打印,&nbsp;转换过程使用了中文的点阵字体.&nbsp;对已经形成的PS&nbsp;文件的打&nbsp;<BR>印,&nbsp;如果不包含中文字体,&nbsp;直接打印就会输出乱码,&nbsp;通常使用的方法&nbsp;是将这一类&nbsp;<BR>PS文件过滤一下,&nbsp;改为使用中文字体,&nbsp;然后再打印.&nbsp;如陈向阳先生&nbsp;的过滤软件&nbsp;<BR>ps2cps可以打印Netscape的存储文件.&nbsp;这种打印的缺点是有时输出&nbsp;的PS中汉字字&nbsp;<BR>符串和英文字符串对不齐.&nbsp;最好的方法是在PostScript一级实现&nbsp;中文打印,&nbsp;陈向&nbsp;<BR>阳先生对ghostscript进行了中文化,&nbsp;可以直接使用TTF轻松打&nbsp;印Netscape,&nbsp;<BR>Qt/KDE,&nbsp;lyx等软件输出的PS文件.&nbsp;这种从底层实现打印的方法&nbsp;也是日文和韩文&nbsp;<BR>所采用的方法.&nbsp;<BR>&nbsp;<BR>使用CID(adobe)字体打印的方法也在尝试之中.&nbsp;<BR>&nbsp;<BR>总之,&nbsp;目前的中文打印缺乏统一标准,&nbsp;应用软件在输出打印PS文件时多数&nbsp;不考虑&nbsp;<BR>双字节语言的问题,&nbsp;使打印变得更加复杂化,&nbsp;所以当前的中文Linux发&nbsp;布版本多&nbsp;<BR>数不支持中文打印,&nbsp;<BR>&nbsp;<BR>5.&nbsp;客户程序间通讯的国际化&nbsp;<BR>&nbsp;<BR>客户程序间通讯(Interclient&nbsp;Communications&nbsp;Conventions,&nbsp;简称ICCC)是&nbsp;客户&nbsp;<BR>程序之间共享资源的手段之一.&nbsp;最常见的应用是文本的拷贝和粘贴和与窗口&nbsp;管理&nbsp;<BR>器通讯.&nbsp;但是如果两个应用程序之间所使用的字符集不同,&nbsp;粘贴就会出现问&nbsp;题,&nbsp;<BR>甚至粘贴的内容会丢失.&nbsp;所以客户程序之间必须国际化了的通讯协议.&nbsp;<BR>&nbsp;<BR>应用程序和窗口管理器之间的通讯也属于客户程序间通讯.&nbsp;<BR>&nbsp;<BR>如果客户程序之间使用的字符集相同,&nbsp;但是编码不同,&nbsp;则不会丢失数据,&nbsp;这时应&nbsp;<BR>该使用复合文本(COMPOUND&nbsp;TEXT)传输.&nbsp;X内部定义了COMPOUND_TEXT&nbsp;的原子&nbsp;<BR>(Atom)用于传输中英文混和的字符串.&nbsp;对7字节编码,&nbsp;ASCII或者其它&nbsp;ISO8859-1&nbsp;<BR>字符集,&nbsp;客户程序通讯可以不用转换而直接使用XA_STRING原子传输.&nbsp;<BR>&nbsp;<BR>Linux&nbsp;is&nbsp;my&nbsp;life.&nbsp;<BR>=&gt;欢迎访问主页&nbsp;&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;166.111.214.121]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -