返回列表 回复 发帖

Cocoa软件汉化进阶教程(Hyx108原创)

因为这几天有不少人在问我汉化方面的一些心得技巧,所以我就花一点时间把这个汉化的一些心得整理一下,献给那些已经致力于mac汉化以及对汉化有兴趣的朋友们。(声明一下,看这个教程之前请先看看suplp兄的汉化总则,理解良好的再进来深造,呵呵。)
* u2 s4 C1 q" ]! F# q5 m2 {
' M* I/ t! H6 X因为目前mac软件大部分是cocoa的,所以我主要针对cocoa软件的汉化而写;又由于不少软件还是留有carbon的痕迹,所以简单提一下rsrc文件的汉化。2 {2 u& w7 R2 g% F% R: `( M7 D

% g) `- d% @+ v3 M7 P  b( N目录:
2 Q, v6 t3 v4 D$ K1.选择适合的软件来汉化7 r! ^+ P7 r3 v4 A0 s* \
2.汉化前的准备工作
. M* w$ t$ _! j3.使用ilocalize的汉化
: k: M* T  e3 l* Y5 E9 B& R4.汉化收尾工作+ P" X" N6 ~2 B) Z7 L) q
5.rsrc文件的汉化
- F0 v8 Y. d% E: z7 n
5 Q' H) q1 i) [5 g+ `/ h+ l% w9 \1.选择适合的软件来汉化  G1 i7 h& I6 K8 F
这个步骤最为重要。新手汉化软件,不能觉得有用就要拿来汉化。比如说office2008确实有用,但是连老手汉化它都是很烦的事情,新手就不用说了。新手的汉化,重要的是要积累经验,获得成就感,这样才能慢慢汉化比较大的软件。
% R* `9 U: v1 r; v' w! s; @
3 n( q- s) Y  N. z最开始当然要安装interface builder,这个装上xcode就有。这里详细讲一下10.5怎样安装的问题。对tiger来说,最好是xcode2.4/2.5+ilocalize3.6,高的也装不了。而对leopard来说,只能装xcode3.0和ilocalzie3.7以上。因为xcode3.0变化比较多,也没提供nibtools,而ilocalize解析nib文件就靠nibtools。所以如果只装3.0和3.71会出现interfacebuilder可以正常打开nib文件但是ilocalize就是解析不了的问题。光是安装nibtools是不够的,还要安装interface builder以前的库文件。老云提供的2.5链接在这里:http://tel.macgood.com/viewthrea ... highlight=interface,把library下的framework和plugin等放到/library下面ilocalize就正常工作了。
; S* A+ }+ P. \* x! f0 S得到一个预备汉化的软件后,首先是通过“右键-显示简介”看看它的语言。有多国语言的,80%的都可以很顺利的汉化;有日文语言的,90%都可以顺利汉化(主要是一个语言编码的问题,当然这种情况在mac下原生就支持双字节编码的cocoa程序中是非常少的。另外10%的有translate it!它所有的语言包nib文件都被优化过,这个在第二节再详细说明)。
1 [" P$ @5 d' C# A; m然后,通过右键-显示包内容查看其结构,不光是看英语语言包,还要看这个软件的其它语言包结构,做到心里有数。有的程序,如美味图书馆和booxter新版,英语语言包里既有nib文件,也有srings文件,而其它语言包里只有strings文件。事实上,它们的nib文件所含字串和同名的strings文件所含字串是一模一样的,只要汉化了这些strings文件,软件就是完全的汉化版了。而strings文件是可以用文本编辑直接打开的,也就是说,像这种结构的程序,开发者本身就是想便于大家翻译为本地语言的。从原则上来说,汉化这类的程序不需要额外软件,只要一个文本编辑就够了,只是效率不如专门的汉化工具高。同样的,有的carbon程序也只有一个strings文件,只要汉化了它就可以了,比如apimac的所有软件。! q. P6 W# T. [/ Q
当然,大部分的软件开发者并不像美味图书馆和booxter的开发者那样方便大家。大家现在可以观察一下你的程序语言包里的主要文件结构:我以niceplayer为例:( U( H- o' P4 d$ z
# i8 h( \% C2 h" {% o) \3 ], ?
Credits文件:可能是rtf格式,也可能是html格式,主要是程序关于窗口的详细说明。大家汉化完如果想加入自己的版权声明的话,我推荐加在这里。如图1:
: e) m. t5 ]# g! l/ {8 O! N# ?; M0 Y8 w1 c2 i& k, P
这样做的好处是不破坏程序原来的字串完整性,同时加入官方包的时候易于为对方接受。) ]  ^! X; l& n( h" t
- c8 y- _5 w/ b6 q
infoplist.strings:这是软件的版权信息,一般不需要改动。如果乱改的话有可能使程序读取不了帮助文件。
/ w. a" b# a( ?% O* i" }) J% \' U- l, _3 {
mainmenu.nib:程序的主菜单,只要这个能汉化,你的程序起码菜单就是中文的。
) Q3 G) i* Q& C! c
1 ?. n9 S; O# f8 b+ H. ]nicedocument.nib:这种一般为maindoucument的nib文件包含主窗口,主面板的字串,当然也有些不包含字串。
5 I1 g5 \% ^  {; P: Z+ C
# ], e4 C" R3 V6 W1 {# Sniceplayer help文件夹:一般有帮助菜单的程序,帮助文件会放在此处。帮助文件都是网页文件,很好汉化,不过因为很累人,所以暂时不介绍了。
- E, X& s% a) B# V) W9 ~9 n8 g. t
9 h, j9 k, L' g, Cpreferences.nib:程序的预置窗口,属于必须汉化的一类。注意,预置菜单如果有通用,外观,安全……等图标,这些图标下面的文字一般不在这个nib文件里面。* d2 ?0 `2 R) ^: m: G9 T& b2 g
大家注意,niceplayer的预置窗口,通用,输入这些图标仍然是英文说明,因为它的语言包里没有Localizable.strings文件。7 A5 U8 N+ {3 b" @" b. Z  w. |/ @
Localizable.strings这个文件非常之重要。它所包含的主要项目有:预置窗口选项卡图标下面的标签,程序主面板工具栏图标的标签,通知性文本(比如弹出一个错误窗口,窗口里的“错误XXX,XXX溢出”之类的文本),还有状态改变型文本。
' L: B+ |4 U& J: R  h4 |; X+ ?- s. X6 E什么叫状态改变型文本?比如mainmenu.nib中,也就是程序的菜单中有一项“显示检查器面板”菜单项目,如果你按了它之后,菜单就会变为“隐藏检查器面板”。这个就叫做状态改变型文本。如果你汉化mainmenu,会发现只有一项“显示检查器面板”,你汉化了之后,启动程序这个地方仍然是英文。你再看一下localizable.strings文件,里面肯定有“显示检查器面板”和“隐藏检查器面板”两个字串,只有把这两个地方也汉化之后,程序菜单的这个地方才会变成中文。关于localizable.strings文件我们在第4节再详细介绍。
7 u8 |5 s# |4 x& G) ?- W% h2 I3 E总结:汉化前要选好合适的软件,如果它的nib文件有二十几个,说不定会有几万个字串,需要花上你很久的时间。因此一定要根据自己的实际情况来做汉化。
) l9 d# t5 H4 U( c2 n3 _
$ n! ?6 f' \+ g8 o[ 本帖最后由 hyx108 于 2008-3-18 08:27 编辑 ]
附件: 您所在的用户组无法下载或查看附件

2.汉化前的准备工作

选好了合适的软件,就是看看这些nib文件能不能正常读取。实际上,大部分的nib文件是一个文件包。右键显示包内容后,一般都会出现3个子nib文件(这几个nib文件就是单个的文件了):classes.nib,info.nib,keyedobjects.nib。如果是优化过的nib,就不会有classes.nib和info.nib这两个文件。如果没有这两个文件,nib文件包是无法解析的,interfacebuilder会出现一个空白的错误提示框。如果有这两个文件,一般就可以汉化了。大家可能想得到,既然我要汉化的程序没有这两个文件,那到其它程序拷贝两个过来不就可以了吗?是的,一般来说,80%都是可以的。但是,懂编程的朋友可能知道,这两个文件在编程的时候也是有可能改动过的,所以不一定适合你的目标程序,有可能仍然无法解析,有可能汉化了之后还是英文的界面,种种问题不一而足,需要你不断尝试。我个人的经验,破解机器人KCNScrew的mainmenu.nib内的这两个文件兼容性是比较好的。最好的办法是向软件作者要这两个文件,当然他给不给就另说了。
+ K& ~2 C6 U+ s2 W& C. L1 p还有一种情况,是打开的时候,interfacebuilder提示缺少palette文件,如图27 h* C% N. U, i* C/ B! O$ \8 C& W/ M
4 O3 I, b9 J, r4 Q. V. x% y8 l
! h& i2 R( c% ?4 Y$ M2 F6 z$ T
也就是说,无法定位选项板文件。如果你有它说的这个ShortcutRecorder.palette文件,可以放到启动盘/Developer/Palettes下面(如果是老云汉化的版本就是/开发/选项板下面),再启动一般就可以正常解析了。' i* P& U. d1 V8 R& R9 n( j
如果仍然无法解析的,或是一打开interfacebuilder就自动退出的,很可能是你的interfacebuilder版本低了。需要升级到最新的3.0版。注意3.0版只能装在10.5上。' d- X8 x& `4 u2 M9 u
总结:只有用interfacebuilder能正常解析的nib文件,才有可能汉化。如果无法解析,暂时就不要汉化这个软件了。我关于nib文件的知识就这么些,详细的可以去问老云。2 A' K3 R1 Q8 A1 m1 {6 m( b  m

3 ]5 B; o$ ]* M[ 本帖最后由 hyx108 于 2008-3-3 19:18 编辑 ]
附件: 您所在的用户组无法下载或查看附件

3.使用ilocalize的汉化

这个JT老师已经讲得很清晰了,我说一下自己的心得。ilocalize默认是不会解析语言包外面的nib文件的。由于mac程序的特殊性,nib文件不一定都放在语言文件夹里。一般多语言的程序,会把那些没有字串的nib放到resources文件夹下面。也有一些程序如sapiens,整个都没有语言文件夹,nib文件全部放在resources文件夹下。遇到这种情况,可以自己建一个English.lproj文件夹,然后把nib文件都移进去,程序运行不会有任何问题。
& @9 L) F: ]. ^; w0 Milocalize新建项目时会自动检查nib文件的位置,并将被优化的nib文件和在语言包外的nib文件指示给你。如果是被优化的nib文件,参看第二节的内容。在语言包外的,放进对应语言包(一般就是英文的)。& E2 d  v, S- m5 K8 d
汉化的时候,可以先用词汇表进行自动汉化,然后自己一步步的修正。注意,为了方便起见,最好汉化nib文件时使用半角的标点符号。这是考虑到nib文件内的字串所带标点可能会引起错位的问题(有的字串框只容许6个半角宽度,如果用全角占用两个半角宽度超出范围,就会使标点前的最后一个字也消失。虽然事后可以扩展宽度,但那样会增加很多无谓的工作量。)其次是因为mac下半角和全角的标点符号差得不多,不会影响美观(win下就差得很远)。不过strings文件中因为是通知性文本,不存在错位问题,就可以用全角标点。
; D8 @8 ~1 y# b) |% z. Y' R( v% }第二要注意的是,英文单词和中文之间要隔一个空格,同样如果用半角逗号的话,逗号后要加一个空格,这样才能显得美观。' H8 v0 P2 A2 a. |
第三是由于mac很多用语和win下不一样,所以请尽量靠近mac官方的汉化。比如click,win下叫单击,double click叫双击,在mac下译为点按和连按。save,win下是保存,而mac是存储。copy,win下是复制,mac下为拷贝。而mac下的复制意思是直接制作文件的副本。
- S7 e( z; _, G, u) f0 I7 H* Y第四是有一些命令控制型文本,最好不要翻译。比如nib文件中一般都有的otherviews和box等是不需要翻译的,其它有些合起来的短语或大写的短语,如:kmenuhelp,MENUFORUM等,一般是控制命令,先不要翻译,否则可能导致菜单失灵。等翻译完后,看看软件还有哪些菜单是英文,再有针对性的修正。
8 _; A, o* G6 C. T# N5 S第五就是要注意下拼错的文本。有些个人开发者不是英语母语或是比较粗心,没有专门审核软件的人员,可能有些字串会拼错。这就需要自己小心求证,看看这个字串和软件的整体配不配合。我以前汉化碰到过goggle的就是这样,属于比较粗心的类型,汉化的时候就需要改正过来。
" L3 {) ?3 J' N% f. a总结:汉化这个东西,一般来讲一定要汉化自己熟悉的软件,否则一些专业词汇很容易让人抓瞎。这就需要大家勤搜索,多测试,才能保证自己的信,达。' O! g) P1 P& f1 G0 E2 K. f# |0 @
3 N  b! E2 z/ ]
[ 本帖最后由 hyx108 于 2008-3-4 10:24 编辑 ]

4.汉化收尾工作

用ilocalize汉化完了以后,测试一下有没有错位的文本。如果有,用interfacebuilder打开,直接移动或扩展字串即可,有辅助对齐线,比较简单,大家记得要做备份。
5 x# J1 }3 x; i7 c如果汉化完发现还有很多英文,看看语言包的结构。在这里以yojimbo为例:( ~0 r) T- d; K6 o* q( g
yojimbo语言包下面有一些plist文件和toolbar文件,yojimbo工具栏文本就包含在这些文件里面。用plist编辑器(推荐用我或pap汉化的plistpro1.3版,注意把文本字体调整为支持中文的字体,否则下方的文本区无法显示中文)打开如图3
2 [! R: K6 r- P4 |2 S) x% Z4 G. v4 p. M+ X) M6 L
展开字串可以看到,name这一行正是没有汉化的字串之一,汉化,保存就可以了。类似name,label这样的字串都是可以汉化的,其它的就不要动了。
$ {2 d* y; {* N$ M6 z- n汉化完后,发现工具栏和预置选项大部分都汉化了,但是还有一些没有汉化,菜单栏也有一些没汉化。之前我说了,Localizable.strings文件就存储着这些文件,yojimbo本身没有提供,我们可以自己建一个。( f3 Z5 o" v" y, f  w( X
然后按下面的格式写:
# v9 F8 M, V5 s3 n6 Y; Y/ g"Library" = "资料库";
% F4 O4 t, y( U( b: H. X9 z"Unsorted Items" = "未排序的项目";
/ Q0 U" n- S( j, o5 \' S; P& ]左边写下程序中未汉化的字串(注意大小写),右边写上汉化字串,存储后就可以看到效果了。& k3 U  q" {% A* [8 B- ]' [
4 l" c9 _2 l4 M: X6 b0 D
值得注意的还有一项。就是在yojimbo项目上按右键,最后一项是:“open with 文本编辑”如果你一时冲动,只写了:  W4 d7 Y# h( x9 Z
"View with" = "查看时使用";) W, R8 m* `- m6 l
那肯定不行的。因为它不一定是用文本编辑查看啊,还有可能用其它程序查看呢。所以要用一个字串型通配符。这个只好靠猜测,事实上这个通配符是%@,应该这样写:
) }+ q6 B9 {; U* g9 J$ s! W% r; V* ]"View with %@" = "用 %@ 查看";
& y3 `, l6 v. \' D( V: }- r% m就可以了。
0 D+ [# ?9 E: E& k: L可惜的是,数字这一项使用了什么通配符我没猜出来。比如:
( q* Y5 A$ j  \1 U% U# k( ~0 m4 a"%d items" = "%d 个项目";1 M4 y0 L4 F4 ^
我就尝试了几个,可惜不行。如果你汉化不想费时间,可以求助开发者。
. m2 j, {' F9 O6 z, t) F* @+ q总结:汉化的收尾工作,主要就是看看文本有没有错位,看看有没有未汉化的字串。如果没有Localizable.strings可以自己建一个,当然这也不是100%管用的。实在没办法就只能是半成品(如果你不想麻烦开发者的话)
附件: 您所在的用户组无法下载或查看附件

5.rsrc文件的汉化

反反复复兄有关于rsrc汉化的视频教程。powerglot虽然比较强,但是毕竟不如ilocalize的智能化。用powerglot汉化完之后,需要把rsrc文件放到zh_CN.lproj文件夹下(没有就建一个)才能正确显示中文菜单,否则可能会出现乱码。另外,如果你是打开人家汉化一半的rsrc文件进行补完,用powerglot打开之后可能发现字串全是乱码。没关系,在工具菜单那里将输入语言的编码设为中文-华文黑体就可以正确显示中文了。  {$ s( ~* E; A! z* `0 o7 e. O# @
其实rsrc文件的汉化苹果官方有专门的appleglot程序,不过不是很好用。
/ Q6 N. w- ^. n( K1 [' k0 K  f0 \9 N7 q4 N& w" B
最后,有少数程序如pacifist在启动时会检测内部文件夹的结构,如果多了个文件夹就出错,这种情况其实也好办,就是把zh_CN改名为english覆盖。缺点就是会使一些字串显示英文。因为一些通用字串是系统提供的。
* E, K6 G2 r; T+ `6 b/ J! u' o3 ~7 A+ C0 K
最后还有一点,就是程序content文件夹下的info.plist文件的汉化.这个文件和语言包里的不同,它是定义程序关联的文档类型的.重点就是CFBundleDocumentTypes这个数组.比如mplayer默认不关联rmvb文件,通过在这个数组增加字串,就可以直接关联上rmvb或是其它的扩展名,甚至你可以更改每个类型文件应该用什么图标.然后在CFBundleTypeName这个地方,就可以翻译文件类型了.如audiofile就是音频文件.这样在列表及详细视图就可以看到中文的类型描述了.不过,这个是没办法提交官方的,因为这个文件是独一无二的,人家英文也要用这个.所以如果汉化了这个文件,只能作为非官方汉化来发布了." I! P% c3 B4 @* h4 N% |
补充一下17楼老云的说明:$ W% ?$ p' J1 N7 b" D8 S) l
文件类型还是可以汉化后加入官方语言包的:) H" m$ P5 h5 _" C2 @+ U
在 zh_CN.lproj 目录中的InfoPlist.strings 文件中建立键值对:7 H% F, v: l+ T6 V) ]( K
如: "Interface Builder Cocoa Document" = "Interface Builder Cocoa 文稿";" E" h; H: I- V. q6 q! d
注意使用半角标点!!!这个写法可以直接参考content下的主infoplist,这样一来既可以提交官方,程序关联所定义的文件类型描述也是中文的了)3 m! N( X1 ?; d6 S1 M  Z1 l7 J# ~
0 p% `0 j$ n1 e/ M: C& T# e
本教程会不断完善!因此附件的PDF文件只是最初的版本,如果要最新版本,可以直接选择打印,再选择打印为PDF就行了。8 g+ y2 R' c: s6 b' S% a

. a2 Y* d/ u2 I: V: [我花了一晚上写的教程,欢迎转载,但是请注明作者。谢谢。
# i, Z" ^7 k& I3 J. q8 S" N
0 P# X0 I1 u, M附上完整的PDF文件.: N. L9 w  `+ ^; W7 K

6 o' P4 ^  l. R" u, ]+ g  G[ 本帖最后由 hyx108 于 2008-3-3 19:27 编辑 ]
附件: 您所在的用户组无法下载或查看附件
2

评分次数

  • 麦客孤独

  • mimihzs

顶阿! 现在加上我的有3个教程在这里发布了
貌似我还是没有发现如何制取词库和使用词库啊~~~~
生活的目的在增進人類全體之生活
生命的意義在創造宇宙繼起之生命
写的不错,8过这个放在汉化软件区。。。。。好么?
总之最近很难得上网,有事请发邮件至merossu※docomo.ne.jp,请使用英文或者日文或者拼音发送
呃...转移一下也可以的.
好,保存了~~
返回列表