`
lymanrb
  • 浏览: 18644 次
文章分类
社区版块
存档分类
最新评论

[苦水潭] i18n 折腾感受

阅读更多
这个年注定不好过。也好,可以有更多的时间写“无用”的代码和博客了。

去年 9 月接 手 giplet,初衷只是想自己用 的更方便一点。没想到竟得到些许反馈。或许是因为这辈子为了糊口写了扔了太多无用的代码,只是零星几条反馈就让我很感动,觉得自己应该再做点什么。想来想 去,决定加上 i18n 支持,没想到就这么一点点想法也折腾了好几天。

主要问题还是对工具链不熟。

之前为了上手 autoconf/automake,就花了不少精力。好在这方面中文入门资料质量尚可(比如 IBM 的这一篇就 不错),遇到更多问题时摘 gnu 官方文档的相关章节细细咀嚼即可。只剩最后一个疑难杂症时,所幸及时读到了 m4 文档中的这一段,便悬崖勒马,很 dirty 很 ugly 地应付了事,至今未知其所以然。

Some people find m4 to be fairly addictive. They first use m4 for simple problems, then take bigger and bigger challenges, learning how to write complex sets of m4 macros along the way. Once really addicted, users pursue writing of sophisticated m4 applications even to solve simple problems, devoting more time debugging their m4 scripts than doing real work. Beware that m4 may be dangerous for the health of compulsive programmers.

如今引入 i18n,实际上也就是要熟悉另外一条开源工具链,具而言之就是 gettext 和 intltool。却未料这类资料如此之少。在代码中应用 gettext 尚有几篇中文,但如何使用 intltool 在一个 autoconf/automake 的项目中加入 i18n 支持竟连英文都鲜可搜到。这里推 荐一篇,以期节省大家时间。其实这 I18N-HOWTO 本是 intltool 自己的文档,理应已在灯火阑珊处,只是不知为何 archlinux 打包时竟未收录此文件,此刻给我造成了麻烦——最权威的第一手资料,当然应该在本机文档里,这样的第一反应是没有错的。

提醒一下,这篇 howto 略显过时——如第 7 步,现在的标准做法已经不是在 configure.in 中使用 ALL_LINGUAS 变量,而是单独维护一个 po/LINGUAS 文件——但并不妨碍掌握 intltool 的基本使用方法,所以关于 intltool 这里就不再赘述了。

下面说说工具以外的地方。

给 gnome applet 添加 i18n 支持,需要做到四点:
  1. 代码中的字符串。
    最好办,都是 gettext 解决方案,资料最多,略。
  2. server 文件中的字符串。
    这个文件相当于 applet 的描述文件,“右键 -> 添加到面板”里的文本就来自这里。这里也好办,最终生成的 .server 文件(xml)应该包含所有语言,编译完了看一眼就知道有没有问题。相应的 Makefile.am 里不要忘了“@INTLTOOL_SERVER_RULE@”。

  3. 如果有的话,glade 界面中的字符串。
    glade 的界面描述文件也是 xml,但不会在编译之后就把所有翻译都塞进来。有没有问题只有在运行时才知道。这里需要注意的是,在 python 里,用 gtk.glade.XML() 来创建窗口的时候,如果不指定第三个参数(即文本域),默认会使用当前的 python 文件名。如果这个文件名跟 GETTEXT_PACKAGE 不一样的话,会因为找不到文本域而匹配失败,所以最好还是手动加上。
  4. 如果有的话,其他 xml 文件中的字符串。
    这个是最麻烦的(到现在也没完美解决)。除去 glade 之外,还有一些用于描述界面的 xml 文件也只能在运行时调试。但是它比 glade 的要简单的多——比如在 giplet 里,它只是个右键菜单——所以不是通过 gtk.glade.XML() 而是 applet.setup_menu_from_file() 创建出来的。所以出现了其他所有地方都 i18n 了,就剩一个右键菜单的情况。做了很久的排除试验也没能定位问题。这几天实在没辙了,用中文翻译当“糖衣炮弹”写信向 paul(music applet,也是个 python,i18n 的 gnome applet 项目的作者)求助了一下,但是还没有结论。

上述第 4 条搞定之后,giplet 0.2.0 就可以发布了。如果实在找不出问题就准备很 dirty 很 ugly 地把那个小 xml 文件塞回 python 代码里,拼字符串谁不会……

--
lyman 于 1/22/2009 06:36:00 下午 张贴在 苦水潭
分享到:
评论

相关推荐

    小学语文四年级(下册)看拼音写词语-(1-8).doc

    例如"dònɡ tínɡ"对应的是"洞庭","shui tan"是"水潭","wán shǎnɡ"为"傍晚","wú xiá"指"无暇","kuò sàn"是"扩散"等。这些词语的拼音训练有助于学生掌握汉字的基本发音和拼读规则。 2. 地名与名胜:如...

    杭州黄龙洞导游词讲解5篇精选.doc

    【杭州黄龙洞导游词讲解】\n\n杭州黄龙洞是浙江著名的风景名胜,以其独特的自然景观和丰富的历史文化吸引着众多游客。黄龙洞并非只有一个洞穴,而是一处集旱洞、水洞于一体的大型溶洞系统,总面积约为10万平方米,...

    家乡的高圪垯山

    人们可以在山顶体验日出时分的“红日冉冉升起”、“晨雾”和“朝霞映黄河”等自然现象,感受大自然的壮丽与神秘。 3. 四季变换与生态体验:高圪垯山在不同季节展现出不同的自然风光。春天,万物复苏,生机勃勃,...

    河北省唐山十八年级语文 第六单元 二六 三峡学案(无答案) 人教新课标版 学案.doc

    - "素湍绿潭":白色的激流,绿色的水潭,湍(tuān)指急流。 - "绝巘怪柏":极高山峰上的奇特松柏,巘(yǎn)指高山。 - "高猿长啸":高山上的猿猴发出长长的叫声,啸(xiào)指长啸。 - "属引凄异":连续...

    初中语文文摘文苑雨的记忆

    文章中的“叮咚”声,既是雨滴落在水潭的实际声音,也是回忆在心中回响的象征,提示我们珍视过去,无论是欢乐还是痛苦,都是我们成长的一部分。这种对生活的洞察和感悟,对于初中生来说,有助于提升他们对人生、自然...

    垂云通天河导游词.doc

    景区内的地下河水质清澈,空气新鲜,四季恒温,流水声潺潺,河道深邃曲折,沿途形成各种独特的水体景观,如静谧的水潭、平静的湖泊、湍急的瀑布和错落的浅滩,每一步都带给游客不同的视觉和感官体验。此外,垂云通天...

    浙江双峰森林公园导游词.doc

    【浙江双峰森林公园导游词】 ...这里的原始森林、清澈水潭、瀑布群以及独特的生态环境,都为游客提供了亲近自然、放松身心的机会。无论是欣赏美景,还是感受文化,双峰森林公园都是一个理想的旅行选择。

    七年级科学下学期第二次月考试题(无答案) 浙教版 试题.doc

    1. 痛觉形成位置:痛觉是由神经末梢感受到刺激后,通过神经传导到大脑皮层进行解析和感知的,因此痛觉的形成部位是大脑皮层(B)。 2. 五感区分:“闻韶音”涉及到的是听觉,由耳朵接收声音信号;“知肉味”则是...

    光的折射拓展性专项练习.doc

    1. **折射定律**:也称为斯涅尔定律,它指出入射光、折射光以及法线三者在同一平面内,且入射角的正弦与折射角的正弦之比等于两种介质的折射率之比,即 n₁sinθ₁ = n₂sinθ₂,其中n₁和n₂分别是第一介质和第二...

    初中语文知识点《基础知识及语言表达》《词语》同步精选课时练习【68】(含答案考点及解析).docx

    题目中的"zhòu然"应为"骤然","hóng水潭"应为"泓水潭","xùn情"应为"殉情","镶qiàn"应为"镶嵌"。通过此类练习,可以增强学生的汉字记忆和拼写能力。 6. 成语运用:成语是汉语中富有特色的固定短语,正确运用...

    孤山寨导游词作文孤山寨作文.pdf

    此外,孤山寨还有其他诸多景点,如“山门迎客”、“仙女浴潭”、“九龙抱石”、“五老峰”、“千古河床”、“洗心潭”、“石中石”、“银川冰谷”、“惜水潭”和“哥泉涌流”等。这些景观各具特色,既有奇石怪岩,又...

    山东省菏泽市东明县 八年级语文上学期期中试题(扫描版) 新人教版.doc

    2. **汉字拼音与读音**:试题中的"刹(chà)、拗(niù)、纤纤(xiān xiān)"等词考察了学生对汉字读音的掌握,提醒学生要注意多音字和轻声字的正确读音。 3. **词语应用**:题目中出现的"侥幸、纯粹、提心吊胆...

    初中语文知识点《基础知识及语言表达》《词语》同步精选课时练习【68】(含答案考点及解析)决战中考2021系列.docx

    学生需要根据拼音写出对应的汉字,如"zhòu然一亮"对应"骤然","hóng水潭"对应"泓水潭","xùn情"对应"殉情","镶qiàn"对应"镶嵌"。 6. **词语运用**:这道题目考察的是成语或词语的正确使用。A选项中"里程碑...

    江苏省灌云县陡沟2013-2014学年八年级物理上学期第二次月考试题(无答案) 新人教版.doc

    13. 月光与水潭:当迎着月光走时,水潭表面会反射月光,显得较亮,所以发亮处是水潭;背着月光走时,水潭表面的反射光无法到达眼睛,显得较暗,所以暗处是水潭。选项A和D正确。 14. 汽车挡风玻璃倾斜安装:主要目的...

    游统一嘉园作文.doc

    绿色与黄色交织的草地,被比喻为大地的绿黄地毯,这种比喻形象地描绘了草地的色彩和质感,让人感受到踩在草地上的舒适感,进一步增强了读者的感官体验。 再者,长廊被比喻为巨龙,这既富有中国传统文化的韵味,也...

    记游雁荡山作文.doc

    【记游雁荡山作文.doc】这篇文档实际上是一篇描绘游览雁荡山经历的...雁荡山的每一处景点都富含诗意,每一个细节都充满了生命力,使得这篇文章成为了一篇生动的游记,让读者仿佛身临其境,感受到了雁荡山的壮丽与和谐。

    孤山寨导游词范文.doc

    此外,还有"小孤山"、"观音庙"、"山门迎客"、"仙女浴潭"、"九龙抱石"、"五老峰"、"千古河床"、"洗心潭"、"石中石"、"银川冰谷"、"惜水潭"和"哥泉涌流"等多个景观,每处都充满了故事和传说,为游客提供了丰富的文化...

    河南许昌高级中学高考语文专题复习 文言文阅读(附答案) - 副本.doc

    乙文中,苏轼与儿子游览白水佛迹院,通过对水潭、瀑布的描写,展现了文言文的描绘技巧,如“雪溅雷怒,可喜可畏”形象地刻画了水流的壮观景象。同时,通过“顾影颓然,不复能寐”的描写,反映出苏轼的情感变化,使...

    Scratch少儿编程项目音效音乐素材-【环境】音效-瀑布.zip

    例如,在一个平台跳跃游戏中,当角色跳过水潭或者穿过瀑布时,适时播放的瀑布声效可以增加游戏的沉浸感。 “音频音效”是Scratch项目中的重要组成部分,它可以是背景音乐,也可以是角色动作、碰撞或其他互动的反馈...

    二年级语文(上册)_第二单元测试题.doc

    1. 汉字拼音与字形:题目要求学生根据拼音选择正确的汉字,如"nào zhōng"对应"闹钟","láo dòng"对应"劳动",这涉及到对汉字拼音的掌握和形近字的识别。 2. 汉字结构分析:测试中要求学生计算汉字除去部首后的...

Global site tag (gtag.js) - Google Analytics