在Linux下使用丹麦语/其他国际语言 HOWTO 作者: Niels Kristian Bech Jensen nkbj@sslug.dk 译者: 曾慧涵 azurlachesis@msn.com v2.6, 9 March 2000 _________________________________________________________________ 这份文件叙述如何为 Linux 及 Linux 相关应用程式丹麦语化, 包括键盘设置, 字型, 纸张大小等. 希望其他西欧语系的 Linux 使用者也能从这份文件中获益. _________________________________________________________________ 1. 导言 2. 设定键盘 * 2.1 载入键盘表 (keytable) * 2.2 在 X11 下使用 AltGr 键 * 2.3 死键和重音字元 * 2.4 使用 $ (钱符号), o/ (oslash) 和 O/ (Oslash) 字元 3. 设定显示和应用程式 * 3.1 在控制台中载入 ISO-8859-1 字型 * 3.2 欧元符号 * 3.3 Linux 环境下可显示的字元 * 3.4 特定应用程式中的国际字元集 4. 其他问题 * 4.1 时区 * 4.2 A4 纸张大小 * 4.3 其他作业平台的文字档格式 5. 在 libc 5.4.x 以上版本中支援区域化资料库 (locale) 6. 在 X11下编写程式的一些小技巧 7. 在 X11 应用程式中使用丹麦语 8. 资讯资源 * 8.1 其他相关文件 * 8.2 FTP 及网站 9. 版权 * 9.1 版权所有 _________________________________________________________________ 1. 导言 几乎所有欧洲的作业系统使用者都会遇到以下两个问题: 第一, 如何让电脑知道 你使用的是非美系的键盘; 第二, 如何让电脑显示特殊字元. 更糟糕的是, 有些 应用程式会因为你不是美国人而要求你做特殊设定, 或是更改环境变数. 在 Linux 里, 你可以用指令loadkeys 和 xmodmap 来改变键盘设定. loadkeys 指令只更改纯 Linux 环境下的键盘, 而 xmodmap 在 Linux 和 X11 之间交换字 元的程序不完整时, 会做适当的调整. 为了要正确显示字元, 你必需告诉应用程式你使用的是 ISO-8859-1 ( 亦 即Latin-1) 的国际字元集. 对某些常用的应用程式来说, 这是必要的步骤. 这份 HOWTO 文件目的在於告诉丹麦语使用者如何读写丹麦语. 如果在阅读这份 文件後, 你还是碰到问题, 请参考德语 HOWTO, Linux 键盘和控制台 HOWTO , 或是 ISO 8859-1 National Character Set FAQ. 本文件中许多的提示说明都是 出自这三份文件的内容. 请参见 [1]其他相关文件 来连结到这些文件. 同时, 请你寄信给我, 并叙述你碰到的问题. 最後一个问题是: 许多应用程式的错误讯息, 选单和说明文件都是英文的. 有一 个 GNU 计划正在著手解决这个问题. 你可以从你喜爱的 GNU 映射站中下载 ABOUT-NLS 或是 gettext-0.10.tar.gz 包裹以了解此计划. 这个计划需要自愿 者参与翻译工作. 如果你想要为计划中的丹麦语部份出力, 请寄信到 da-request@li.org 并在内容写上 "subscribe". gettext 中的说明文件会告诉 你如何在你的程式中使用翻译. 2. 设定键盘 2.1 载入键盘表 (keytable) 你可使用两个工具来设定你的键盘. 在纯 Linux 环境下, 你可以用loadkeys , 而在 X11 下则用 xmodmap. 欲使用 loadkeys 指令, 你可以执行: loadkeys /usr/lib/kbd/keytables/dk.map 或 loadkeys /usr/lib/kbd/keytables/dk-latin1.map 这两个键盘对应表 (keymap) 的差异在於, dk-latin1.map 可以使用死键, 而 dk.map 不行. 死键在 [2]死键和重音字元 中会解释到. loadkeys 和 keymap 都是 Linux 里通行的 kbd-0.??.tar.gz ( ?? 代表不同版本) 包裹中的一部份. loadkeys 通常是在系统启动时, 从 /etc/rc.d/ 目录下的某一个命令稿 (script) 执行的. 不同的系统和版本作法各不相同. (注, 给非丹麦语读者: 其他语系的支援也是以类似方法设定的, 例如西班牙语 键盘是用 es.map .) XFree86 从 3.1.2 以上的版本 (包括3.1.2) 通常都使用纯 Linux 环境下的 keymap, 但在 X11 下你可以用 xmodmap 来改变键盘设定. 如果在你的 home 目 录下有一个叫 .Xmodmap 的档案, X11 就会在启动时自动替你执行这个指令. 若使用版本 3.2 以上的 XFree86, 在你的 /etc/XF86Config (或 /etc/X11/XF86Config) 档案中, 应有一个Keyboard 区块如下列 ( 如果选择使 用丹麦语的 keytable, 一个叫 XF86Setup 的程式应该会自动替你做好这件事) : Section "Keyboard" Protocol "Standard" XkbRules "xfree86" XkbModel "pc101" XkbLayout "dk" XkbVariant "nodeadkeys" EndSection 目前只有"nodeadkeys" 是可用的键盘变数, 但你仍可以设定死键. 请参见 [3] 死键和重音字元 以得到更多资讯. 2.2 在 X11 下使用 AltGr 键 若使用版本 3.1.2 以上的 XFree86 (包括 3.1.2), 你应该修改档案 /etc/XF86Config (或 /etc/X11/XF86Config) 并确定以下这行 RightAlt ModeShift 出现在 Keyboard 区块中. 通常, 你只需要在适当的地方移去注解符号即可. 在 版本 3.1.2 的 XFree86 中, 你可用 AltGr 作为 RightAlt 的别键. 如果你有选择丹麦语的键盘支援, AltGr 键在版本 3.2 以上的 XFree86 应会如 预期地发挥作用. 在 Metro-X 下使用 {, [, ] 和 } 在 Metro-X 伺服器下, 你将无法输入 ``{'' (<7>), ``['' (<8>), ``]'' (<9>) 和 ``}'' (<0>) 等字元. 这个 bug 会在 3.1.5 和 3.1.8 的伺服器版本中出现. 要修正这个 bug, 你必须修改档名叫作 /usr/X11R6/lib/X11/xkb/symbols/dk 的档案并把以下句子: key { [ 7, slash ] }; key { [ 8, parenleft ] }; key { [ 9, parenright ] }; key { [ 0, equal ] }; 改成 key { [ 7, slash ], [ braceleft, NoSymbol ] }; key { [ 8, parenleft ], [ bracketleft, NoSymbol ] }; key { [ 9, parenright ], [ bracketright, NoSymbol ] }; key { [ 0, equal ], [ braceright, NoSymbol ] }; 2.3 死键和重音字元 所谓死键, 就是在按下之後, 还必须再按其他键才能够作用的键. 你如果是在纯 Linux 环境下使用 dk-latin1.map keymap, 那颚化符号 (tilde, 译注: 例如西 班牙语字母上的~) 和变音 (umlaut, 译注: 字母上加两点) 都是死键. 另外, 在微软视窗作业系统下, 键盘预设也是如此. 移除死键功能 * 在纯 Linux 与 XFree86 v3.1.2 环境下移除死键功能 在纯 Linux 环境下, 输入 loadkeys dk.map * 在版本 3.2 以上的 XFree86 中移除死键功能 在档案 /etc/XF86Config ( 或 /etc/X11/XF86Config) 中, 在 Keyboard 区块中加入句子: XkbVariant "nodeadkeys" 启动死键功能 * 在纯 Linux 环境下启动死键功能. 在纯 Linux 环境下输入 loadkeys dk-latin1.map * 在 X11R6 下启动死键功能. 首先, 确认你跑的是版本 3.1.2 以上的 XFree86. 如果你的版本低於 3.1.2, 你必须下载并安装所有和最新版本相 关的档案. 在 X11R6 应用程式中, 要使用排字 (compose) 或死键, 就必须 将程式和重音字元 (8-bit) 支援一起编译. GNU emacs v. 19.30 (或更高 的版本) 是一个例子. 然而, 某些 X11 应用程式依然不支援这种输入法. 面对这个问题, 你可以选择修改你的程式, 或是寄一封修辞温和的 bug 报 告给程式作者. 後者是比较有效的解决之道. 请参见 [4]在 X11下编写程式 的一些小技巧 以获得相关资讯. 接下来, 你需要将一个键对应到 Multi_key (Compose.) 若你使用版本 3.1.2 的 XFree86, Scroll Lock 键 很可能已经被对应了(你可以用 xev 这个程式修改设定). 如果要对应右边 的 Control 键, 你只需要在 XFree86 的 configuration file (通常是 /etc/XF86Config 或 /etc/X11/XF86Config) 中的 Keyboard 区块里去掉若 干注解符号即可. 若你想使用其他的键, 或者你是用版本 3.1.2 以上的 XFree86 而且你想改变预设, 你可以在档案 ~/.Xmodmap 中加入: keycode 78 = Multi_key 上面这一行□例做的是定义 Scroll Lock 键为 Compose 键. 在版本 3.2 以上的 XFree86 中, 预设的 Compose 键是 . 版本 3.2 以 上的 XFree86 并不支援在标准丹麦键盘使用死键. 要启动死键, 在档案 /usr/X11R6/lib/X11/xkb/symbols/dk 的 xkb_symbols "basic" 区块中修 改这几行: key { [ acute, grave ], [ bar, dead_ogonek ] }; key { [ diaeresis, asciicircum ], [ asciitilde, dead_macron ] }; 把它改成 key { [ dead_acute, dead_grave ], [ bar, dead_ogonek ] }; key { [ dead_diaeresis, dead_circumflex ], [ dead_tilde, dead_macron ] }; 接下来, 移除档案 /etc/XF86Config (或 /etc/X11/XF86Config) 中 Keyboard 区块里的这一行: XkbVariant "nodeadkeys" (注, 给非丹麦语读者: 在 /usr/X11R6/lib/X11/xkb/symbols 中有各种语 系 keymap 的档案.) 可能的字元对应表列於档案 /usr/X11R6/lib/X11/locale/iso8859-1/Compose 中. 这个档案里有一些你 或许会想修正的 bug: + 下面这一行 : "~" tilde 应被改为 : "~" asciitilde + 在某些地方, asciicircum 被误拼为 asciicirum 最後, 确定你的 shell (或者还有应用程式) 已经如 [5]特定应用程式中的 国际字元集 中所叙述的, 做好 ISO-8859-1 相容性的设定. 2.4 使用 $ (钱符号), o/ (oslash) 和 O/ (Oslash) 字元 $ (the dollar sign) 丹麦 keymap 中有个 bug 会使钱符号的对应键组合为 <4>, 而不是 <4>. 若你有这个问题, 请查看你在启动系统时载入的是哪个 keymap. 这项设定位於 /etc/rc.d/ 目录下, 或者你也可以在启动系统时注意一下. 在我 的电脑上, 我的 keymap 是叫 /usr/lib/kbd/keytables/dk-latin1.map. 你可 以改 keymap 档案中的 keycode 5 = four dollar dollar 这一行改成 keycode 5 = four currency dollar 然後如 [6]载入 keytable 所述, (重新)载入 keytable. 货币符号 (dansk: ``soltegn'') 在丹麦键盘上的预设是 <4>. 以上的方法在 X11 和 Linux 环境下应该都能通行. o/ (oslash) 和 O/ (Oslash) 在某些比较旧的系统里, ``o/'' and ``O/'' 以分 (cent) 或圆 (yen)的形态出 现. 在你的 keymap 档案中, 可以找到 keycode 40 的这一行句子: keycode 40 = cent yen 你可以把它改为 keycode 40 = +oslash +Ooblique 此 bug 已在 kbd-0.88.tar.gz 以上的版本中修正. 为了让 Caps Lock 正常运作, 那个 + 符号是必要的. 在 kbd-0.90.tar.gz 或 更新的版本中, ``Oslash'' 常用来当作 ``Ooblique'' 的别名. 你可以在 [7]这里得到更多资讯. 3. 设定显示和应用程式 大部份的应用程式必须被编译为 ``8-bit-clean'' 才能成功使用欧洲的字元, 有些甚至还需要额外的一些修改. 3.1 在控制台中载入 ISO-8859-1 字型 在 shell 提示字元後执行以下指令: setfont lat1u-16.psf 在 Red Hat Linux 5.2 或更新的版本下, 你可以在档案 /etc/sysconfig/i18n 中加入下列句子: SYSFONT=lat1u-16.psf SYSTERM=linux 由於 Red Hat Linux 5.2 的 ncurses 包裹中有 bug, 你得把档案 /etc/profile.d/lang.sh 中的 ``linux-lat'' 改为 ``linux''. Red Hat Linux 6.0 则没有此问题. 3.2 欧元符号 丹麦字元集里新增了一个符号: 欧元符号 (欧洲货币联盟的新币值). 新的字元 集叫作 ISO-8859-15, 也就是 latin0 (或 latin9) 以取代原先的 ISO-8859-1 (latin1). 为取得 latin0 支援, 你必须使用 [8]EURO 包裹. 这个包裹中包含 字型和 keymap. 3.3 Linux 环境下可显示的字元 在字元提示输入 dumpkeys -l | less 即可知道哪些字元是可用的. 你可以依 [9]载入 keytable 中所述的将它对应到你的键盘. 3.4 特定应用程式中的国际字元集 某些应用程式需要特殊的设定. 本节旨在叙述设定的方法. bash: 在档案 ~/.inputrc 中加入: set meta-flag on set convert-meta off set output-meta on elm: 在档案 ~/.elm/elmrc 中加入以下定义: charset = iso-8859-1 displaycharset = iso-8859-1 textencoding = 8bit 某些版本 elm 不接受这样的设定. 若使用metamail, 则可以在 elm 中 得到部份的 MIME 支援. emacs: 在档案 ~/.emacs 或整个系统的初始设定档 (通常是 /usr/lib/emacs/site-lisp/default.el 或 /usr/share/emacs/site-lisp/default.el) 中加入以下行列: (standard-display-european t) (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0) 若你使用 GNU emacs v19.30 以上的版本, 或是 XFree86 v3.1.2 以上 的版本, 在 GNU emacs 里你应该可以使用死键 (对我而言, 两者都没问 题); 因此你将不需要特地去找像是有 ``electric keys'' 设定的 elisp 包裹. 如果你想要在 emacs 中使用欧洲键盘设定, 却不打算升 级, 你最好从 [10]SunSite DK 下载 remap 包裹. 除此之外, iso-acc.elc 及 iso-trans.elc 这两个包含 emacs 的包裹也有类似的 功能, 只是没有那麽强大. groff: 若你想要 ISO-8859-1 的文字输出, 执行指令 groff -Tlatin1 请注意: 要让 latin1 的字元在 man (不要移除 -mandoc 的 switch) 成功运作, 必须在 /etc/man.config 中执行这项变更. ispell --- 丹麦语拼字检查: 首先, 确定你安装的是版本 3.1.20 而不是 4.0 的 ispell. 後者不但 过时, 而且设计很糟糕. 你可以从 [11]the GNU archive 下载 ispell, 并从 [12]SSLUG 取得丹麦语字典. 依照档案中的编译指示去做, 就应该 不会有问题. (警告: 在为编译作变数定义时, 如果你的 Linux 是 Sys V typs OS, 你必须定义 USG 这个变数以告知 ispell.) 为 ispell 安装好字典後, 你可以执行以下指令来做一个丹麦语档案的 拼字检查: ispell -d danish -T latin1 -w "□□□" <你的丹麦语文字档> (注, 给非丹麦语读者: 你可以在 ispell 的资源档案 Where 中找到大 部份西方语文的字典.) joe: 执行指令 joe -asis 或在档案 ~/.joerc 中加入: -asis 连字号 ( - ) 一定要放在第一行里! kermit: 我能做到最好的地步是, 在档案 ~/.kermrc 中加入: set terminal bytesize 8 set command bytesize 8 set file bytesize 8 set language danish set file character-set latin1-iso set transfer character-set latin1-iso set terminal character-set latin1-iso 我觉得应该不只要设定这些变数, 但我不知道还有哪些. 如果你的远端 系统是以 DOS 或 OS/2 做根据的, 你必须做以上的设定. less: 设定环境变数: LESSCHARSET=latin1 如果你的系统支援区域化资料库 (locale), 就不需要做这项更改, 只需 要设定 LANG, LC_CTYPE 或 LC_ALL (请参见 [13]在 libc 5.4.x 以上 版本中支援区域化资料库 (locale).) ls: 执行指令 ls -N 或是 ls --8bit lynx: 在档案 ~/.lynxrc 中加入定义: character_set=ISO Latin 1 你也可以在 lynx 的 Options 选单中做出同样结果的设定. 键入 `o' 并设定相关选项. man: 请参见本节中的 groff 部分. metamail: 设定环境变数: MM_CHARSET=ISO-8859-1 nn: 在档案 ~/.nn/init 中加入: set data-bits 8 pine: 在档案 ~/.pinerc 中加入定义: character-set=ISO-8859-1 你也可以在 pine 的 Setup, Config 选单选项中做出相同结果的设定. 另外, 你也可以放心地在选单中选择 enable-8bit-esmtp-negotiation 和 enable-8bit-nntp-posting (for news). rlogin: 执行指令 rlogin -8 foo.bar.dk sendmail: 在档案 /etc/sendmail.cf 中加入 (或去掉注解符号): O SevenBitInput=False O EightBitMode=pass8 O DefaultCharSet=iso-8859-1 tcsh: 在档案 /etc/csh.login 或 ~/.tcshrc 中加入: setenv LANG C 事实上, 你只需要定义 LANG 或 LC_CTYPE 这两个环境变数的其中一个. 变数的值无关紧要. 请阅读 tcsh man page 以获得更多资讯. telnet: 在档案 ~/.telnetrc 中, 为"每一个"你想要使用 telnet 登入的 host 加入以下句子: set outbinary true 例如: localhost set outbinary true foo.bar.dk set outbinary true TeX/LaTeX: 在使用 TeX/LaTeX 时,会碰到个问题是: 你希望能在 LaTeX 中使用特殊 字元, 又不希望 LaTeX 在每个章节的开头加入像 "Chapter'' 之类的英 文字, 也不想要使用英文的文字排版. 在 LaTeX2e 下, 你汇入的档案的 header 应该会看起来像这样: \documentclass[a4paper]{article} \usepackage[latin1]{inputenc} \usepackage{t1enc} \usepackage[danish]{babel} 第一个 usepackage 的句子确保 LaTeX 会正确解读欧洲字元, 因此, 你 不必特地使用 escape 字元来输入欧洲字元. 第二个 usepackage 的句 子并非必要, 但若要使用新的 EC 字型 (以前被称作 DC 字型), 则建议 加入. 第三个 usepackage 的句子定义若干丹麦语的文字排版. 所有主要的 Linux 版本都包含 teTeX 包裹. 若要设定 teTex, 你必须 执行命令稿 (script) texconfig. 在此你可选择丹麦语的连字符号 (dansk: ``orddeling''), 为 dvips 和 xdvi 设定 A4 纸张大小等等. 所有够新的 Linux 版本都包含 LaTeX2e, 但在比较老旧的系统里, 你使 用的可能是 LaTeX 2.09. 如果是这样的话, 你可以用 \documentstyle[a4,isolatin]{article} 来支援 ISO-8859-1 字元和欧洲纸张大小规格. 但我建议你最好要求系 统 administrator 升级到 LaTeX2e. 你可以从任一 [14]CTAN servers 网站下载 isolatin.sty. 某些人偏好使用特殊模式下的 emacs, 因为可以将"特殊"字母转变成 TeX escape 码. 这个方法已经不适用了. tin: 在你的档案 ~/.tin/headers 中加入: Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit 如此一来, 你就可以在讯息中使用丹麦字元. 4. 其他问题 4.1 时区 丹麦的时区属於中欧时区 (CET 或 MET), (在冬天时) 相等於格林威治标准时 刻+1 (GMT+1.) 在 Linux 系统下设定时区的方式是建立一个捷径, 连结 /usr/lib/zoneinfo/localtime 和位於 /usr/lib/zoneinfo/ 目录下符合你的时 区或国家的档案名. 若你是丹麦人, 你可以执行以下指令: ln -sf /usr/lib/zoneinfo/MET /etc/localtime 或 ln -sf /usr/lib/zoneinfo/Europe/Copenhagen /etc/localtime 如此一来, 在夏天的时候, 系统将会自动设定日光节约时间 (GMT+2.) 若需要将系统时间与 CMOS 时钟同步, 你需以 root 身份执行指令 clock. 若你 的 CMOS 时钟是设定为 GMT (又名 UTC --- the standard on proper Unix systems), 请执行 clock -u -s 而若你的 CMOS 时钟是设为本地时间, 则执行 clock -s 4.2 A4 纸张大小 * ghostscript: 加入命令列选项 -sPAPERSIZE=a4. * ghostview: 定义以下 Xresource: Ghostview.pageMedia: A4 * TeX/LaTeX, dvips, xdvi: 请参见 [15]特定应用程式中的国际字元集 中 TeX/LaTeX 的部分. 4.3 其他作业平台的文字档格式 你可以使用 recode 包裹将 ISO-8859-1 格式的文字档转译为其他格式, 例如使 用 codepage 850 的 DOS 文字档. 使用下列指令 recode cp850:latin1 foo.txt 就可以将一个名为 foo.txt 的档案转为适当的 UNIX 档. 欲取得 recode, 你可以从 [16]the GNU archive 的任一映射站中下载 recode-3.4.tar.gz. 5. 在 libc 5.4.x 以上版本中支援区域化资料库 (locale) libc 5.4.x 版本已经具备 locale 支援. 如果你的系统支援 locale, 你就不需 要像 [17]特定应用程式中的国际字元集 那样针对每个程式做设定. 欲在 Debian 中取得此支援, 你必须安装 wg15-locale 包裹. 具备 GNU libc 2 (libc 6.x) 的系统则预设支援 locale (详见本节内关於 Red Hat Linux 5.0 版本的资讯.) 若你的系统不支援 locale, 你可以使用以下方法取得支援: 1. 确定你使用最新的 libc 5.4.x library. 若没有, 你可以从 [18] Yggdrasil Computing 取得. 2. 确定你已安装 localedef. 这个程式是跟著 library 一起安装的. 3. 取得 locale 来源档. 可从 DKUUG 取得. 你必须同时拥有 [19]locale 和 [20]charmap 来源档. 4. 将 locale 来源档放入 /usr/share/i18n/locales/, 并将 charmap 来源档 放入 /usr/share/i18n/charmaps/. 5. 执行 localedef 以建立 locale 资料档: localedef -ci da_DK -f ISO_8859-1:1987 da_DK (注, 给非丹麦语读者: 其他语言的 locale 也可以同样方式建立. 所有 locale 和 charmap 来源档都在 DKUUG 网站上.) 你可设定下列两个环境变数中的其中一个以取得丹麦语 locale 支援: LANG=da_DK 或 LC_ALL=da_DK 如果 da_DK 行不同, 请试试 da_DK.ISO_8859-1. 这两个环境变数都会设定所有的 locale 目录. 若要设立一个单独的 locale 目 录, 请将目录名设为环境变数. locale 目录如下: Locale category Application --------------- ----------- LC_COLLATE 字串校对 (排序) LC_CTYPE 字元分类及转换 LC_MESSAGES yes 或 no 的讯息翻译 LC_MONETARY 货币符号格式 LC_NUMERIC 非数字符号格式 LC_TIME 日期与时间格式 LC_ALL 以上所有的设定 (将会覆写以上所有的设定) LANG 设定所有目录, 但可被以上任一单独的目录覆写掉 在 Red Hat Linux 5.2 下, 你可以在档案 /etc/sysconfig/i18n 中设定环境变 数 LANG 以及/或 LC_ALL: LC_ALL=da_DK 某些程式, 像是 bash 和 GNU emacs 仍需要如 [21]特定应用程式中的国际字元 集 中所述的特殊设定程序, 但大部份的程式就不需要进一步的修改. 在经过以 上步骤後, 原先不接受 8-bit 字元的程式, 诸如 nvi, 应该就可以用了. 具备 GNU libc 2 的版本往往支援 locale, 但请注意: 虽然 Red Hat Linux 5.0 具备 GNU libc 2, 但它却不支援 locale. 你必须自己执行 localedef 以 建立 locale 资料档. 以下指令将会建立丹麦语 locale 资料档: localedef -c -i da_DK -f ISO-8859-1 da_DK glibc-2.0.7-4.i386.rpm 的 library 中已包含 locale 资料档, 不需要额外的 设定. 6. 在 X11下编写程式的一些小技巧 显示 8-bit 字元是很容易的. 方法与使用 7-bit ASCII 相同. 然而, 要让应用 程式接受特殊字元输入就没有那麽简单了. 若你使用像 Xt toolkit 这样的程式, 或是类似 Motif 的界面工具集, 你只需 要在你的程式中加入一行句子. 在你"第一次"使用 Xt时, 使用 XtSetLanguageProc 如下: int main (int argc, char** argv) { ... XtSetLanguageProc (NULL, NULL, NULL); top = XtAppInitialize ( ... ); ... } 这样, 你的程式会自动在 /usr/X11R6/lib/X11/locale/ 目录下依据 Compose table 来对照 LC_CTYPE 变数, 并解读死键等. 这个方法应能通行所有西欧规格 键盘. 随著 XFree86 多语系支援功能的进步, 你的程式将慢慢能够在东欧和中 欧通用. Xt, Xlib, 和 Motif (包括 v1.2 以上的版本) 都支援这种输入法. 根据我所得 到的消息, Xaw 只部份支援此输入法. 若你有进一步的资讯, 请通知我. 本节的内容取自 Michael Gschwind 的 Programming for Internationalization. 你可以从 [22]其他相关文件连结到那份文件. 7. 在 X11 应用程式中使用丹麦语 想要在 X11 的应用程式中看见丹麦语的选单, 按钮等, 你只需要将翻译定义这 些文字的来源字串. Jacob Nordfalk 已为许多应用程式做了这样的翻译, 包括 Netscape 和 Ghostview. 你可以在 [23]这里 找到翻译和安装说明. 8. 资讯资源 8.1 其他相关文件 你可以从 www.linuxdoc.org 的任一映射站取得这些 HOWTO. [24]SunSite DK 是一个丹麦映射站. Winfried Truemper 写的德语 HOWTO. 其他像是芬兰语, 西班牙语, 和波兰语都 已经有了以母语写成的 HOWTO. Andries Brouwer 写的 Linux 键盘和控制台 HOWTO. [25]这里有 ISO 8859-1 National Character Set FAQ, Programming for Internationalization, 以及许多其他 Michael Gschwind 写的文件. 8.2 FTP 及网站 [26]SSLUG (Skaane Sjaelland Linux User Group) 是一个瑞典语/丹麦语 Linux user group. 你可以从他们的信件群组中得到许多以丹麦语(或瑞典语)写 下的Linux相关问题. 这个 user group 同时负责维护 [27]这份文件. AAlborg 的 AUC 的主站是 [28]SunSite DK. 它们发行 Debian 及 Red Hat 版 本的 Linux, 最新的 kernel, 以及 [29]Linux Documentation Project, [30] metalab.unc.edu 及 [31]the GNU archive 的映射站. 另外, 你可以从 [32] the CTAN archive 这个映射站得到一切和 TeX 与 LaTeX 相关的资讯. 9. 版权 感谢 Peter Dalgaard, Anders Majland, Jon Haugsand, Jacob Nordfalk, 德 语 HOWTO 的作者们, Michael Gschwind 以及许多其他人给予我的建议和帮助. 我衷心感激 Aalborg University Center 的人, 是他们写出并发行许多本文件 中所提及的包裹. 特别感谢本文件的原作者, Thomas Petersen. 9.1 版权所有 本文件的作者并不能够完全保证文件内容中所有提供的资讯都是没有错误的. 你 必须斟酌情况使用文件中的提示和□例. Copyright (c) 1996 by Thomas Petersen. Copyright (c) 1997-2000 by Niels Kristian Bech Jensen. 这份文件只能在符合 [33] http://www.linuxdoc.org/COPYRIGHT.html 里的 LDP license 的情况下发行. (原文) Trademarks are owned by their owners. Although the information given in this document is believed to be correct, the author will accept no liability for the content of this document. Use the tips and examples given herein at your own risk. Copyright (c) 1996 by Thomas Petersen. Copyright (c) 1997-2000 by Niels Kristian Bech Jensen. This document may be distributed only subject to the terms and conditions set forth in the LDP license at [34]http://www.linuxdoc.org/COPYRIGHT.html. References 1. file://localhost/tmp/zh-sgmltools.20845/Danish-HOWTO.txt.html#docs 2. file://localhost/tmp/zh-sgmltools.20845/Danish-HOWTO.txt.html#deadkeys 3. file://localhost/tmp/zh-sgmltools.20845/Danish-HOWTO.txt.html#deadkeys 4. file://localhost/tmp/zh-sgmltools.20845/Danish-HOWTO.txt.html#programming 5. file://localhost/tmp/zh-sgmltools.20845/Danish-HOWTO.txt.html#apps 6. file://localhost/tmp/zh-sgmltools.20845/Danish-HOWTO.txt.html#loadkbd 7. http://www.ibbnet.nl/~anne/keyboard.html 8. ftp://ftp.freshmeat.net/pub/euro-patch/ 9. file://localhost/tmp/zh-sgmltools.20845/Danish-HOWTO.txt.html#loadkbd 10. ftp://sunsite.auc.dk/pub/emacs/auctex/ftp/auctex/ 11. ftp://sunsite.auc.dk/pub/gnu/ 12. http://www.sslug.dk/ispell/idanish/dansk.html 13. file://localhost/tmp/zh-sgmltools.20845/Danish-HOWTO.txt.html#locale 14. ftp://sunsite.auc.dk/pub/tex/ctan/ 15. file://localhost/tmp/zh-sgmltools.20845/Danish-HOWTO.txt.html#latex 16. ftp://sunsite.auc.dk/pub/gnu/ 17. file://localhost/tmp/zh-sgmltools.20845/Danish-HOWTO.txt.html#apps 18. ftp://ftp.yggdrasil.com/private/hjl/ 19. ftp://dkuug.dk/i18n/WG15-collection/locales/ 20. ftp://dkuug.dk/i18n/WG15-collection/charmaps/ 21. file://localhost/tmp/zh-sgmltools.20845/Danish-HOWTO.txt.html#apps 22. file://localhost/tmp/zh-sgmltools.20845/Danish-HOWTO.txt.html#docs 23. http://alf.nbi.dk/~nordfalk/ovs/ 24. http://sunsite.auc.dk/ldp/HOWTO/ 25. http://www.vlsivie.tuwien.ac.at/mike/i18n.html 26. http://www.sslug.dk/ 27. http://www.sslug.dk/DanishHowto/ 28. ftp://sunsite.auc.dk/pub/os/linux/ 29. http://sunsite.auc.dk/ldp/ 30. ftp://sunsite.auc.dk/pub/os/linux/sunsite/ 31. ftp://sunsite.auc.dk/pub/gnu/ 32. ftp://sunsite.auc.dk/pub/tex/ctan/ 33. http://www.linuxdoc.org/COPYRIGHT.html 34. http://www.linuxdoc.org/COPYRIGHT.html