iPhone手机论坛's Archiver

n000b 发表于 2007-9-24 01:03

【教程】将语言从英文切换到中文

[color=Red]更新:现在安装LanguagePack(也叫iLang)就可以切换了,见第三方软件列表贴。[/color]
[color=Blue]更新:这是早期的手工DIY切换方法。[/color]

更新:新版1.1.1可以直接支持多国语言切换,不需要用这里的方法了。

[b]这是我写的一个老贴了,发布在其他论坛,原帖发布时间是2007-8-4 21:03,原贴名:用正确的方式作正确的汉化。因看到有人问语言切换的问题,就复制过来放在这里,内容略有删改。[/b]

标题定的不是太好,实际上这里介绍的方法可以将默认语言改为任何一个系统支持的语言。

一段时间来经常看到发布有关iPhone的汉化帖子,其实基本的思路都是通过修改系统自带的英文字符串资源文件来实现的。这里我推荐大家使用苹果OS X自身操作系统的方式来汉化,既不损坏系统文件,又达到汉化目的,而且是正宗的OS X Native支持多语言的方式。

[color=Blue]写在前面:
按照这里的方法操作,你需要一些预备知识,比如怎样从iPhone上下载文件、怎样将文件上传到iPhone、怎样修改plist文件。我自己是在iPhone上安装了SSH系统,用SFTP传文件的,而对plist文件,我是在Mac上用开发工具包里面的Property List Editor进行修改的。[/color]

[b]1、让系统默认为简体中文系统[/b]

现有iPhone都是默认英文系统的,语言缩写是en_US,系统对此会自动寻找以下目录是否存在:
[quote]English.lproj
en.lproj
en_US.lproj[/quote]
如果存在就调用其中的字符串来替换需要显示的内容。我们要让系统默认为中文系统,缩写是zh_CN,系统对此会自动尝试到zh_CN.lproj目录里面去寻找字符串资源,如果没找到或者目录不存在,则自动切换成en。

先到iPhone上找到这个文件:

[quote]/var/root/Library/Preferences/.GlobalPreferences.plist[/quote]

注意是个隐藏文件,需要用 ls -a 才能显示出来。然后用Mac的Property List Editor修改这个文件,找到下面内容:

[quote]<key>AppleLanguages</key>
<array>
   <string>[color=Blue]en[/color]</string>
   <string>jz</string>
   ......(省略)
   <string>zh_CN</string>
   ......(省略)
   <string>ko</string>
</array>
<key>AppleLocale</key>
<string>[color=Blue]en_US[/color]</string>[/quote]

<string></string>的顺序决定了系统搜索资源的顺序,可以看到最先出现的是:
[quote]<string>en</string>[/quote]
说明是最先搜索英文的。要改变默认语言环境,我们把<string>zh_CN</string>移到最前面,再把后面的<string>en_US</string>改成<string>zh_CN</string>,改好后如下:

[quote]<key>AppleLanguages</key>
<array>
   <string>[color=Red]zh_CN[/color]</string>
   <string>en</string>
   <string>jz</string>
   ......(省略)
   <string>ko</string>
</array>
<key>AppleLocale</key>
<string>[color=Red]zh_CN[/color]</string>[/quote]

把文件存盘,然后重新启动iPhone,系统就默认为简体中文环境了。

[b]2、添加资源文件

[/b]虽然已经默认为中文了,但是为什么显示仍然是英文?这是因为虽然系统默认为简体中文环境,但是iPhone并没有为每个应用程序配中文字符串资源,所以接下来我们就要自己加入中文字符串资源。

汉化方法很简单,就是先把English.lproj所有的内容复制到另一个目录zh_CN.lproj,然后把zh_CN.lproj里面的.strings文件汉化就可以了。比如说要汉化SpringBoard,先在iPhone上找到它的English.lproj目录在:

[quote]/System/Library/CoreServices/SpringBoard.app/English.lproj[/quote]

我们在iPhone上建一个新目录:

[quote]/System/Library/CoreServices/SpringBoard.app/zh_CN.lproj[/quote]

然后把English.lproj里面的.strings文件汉化后传到iPhone上的zh_CN.lproj目录里面就可以了。具体的汉化方法,已经有很多教程了,这里就不再赘述了。

[b]3、汉化后对系统的影响[/b]

由于本方法仅修改了strings字符串资源文件,没有动plist文件(.GlobalPreferences.plist例外),只增加了一个zh_CN.lproj的语言资源目录,因此不会对iPhone原有的系统有任何副作用。

如果什么时候你需要回到英文环境,只要简单的把前面说的.GlobalPreferences.plist文件改回出厂时的样子(AppleLanguages中en在最前面,AppleLocale中用en_US),重启后,系统立即回到英文方式,是不是很方便?我自己就写了个简单的脚本放在iPhone上,用来切换语言的,如下:

将语言切换到中文的脚本/usr/bin/chinese.sh:
[quote]#!/bin/sh
cd /var/root/Library/Preferences
cp -f Chinese.plist .GlobalPreferences.plist
echo -n "Switching to Chinese, please stand by ..."
/usr/sbin/reboot
[/quote]

将语言切换到英文的脚本/usr/bin/english.sh
[quote]#!/bin/sh
cd /var/root/Library/Preferences
cp -f English.plist .GlobalPreferences.plist
echo -n "Switching to English, please stand by ..."
/usr/sbin/reboot
[/quote]

其中Chinese.plist和English.plist是对应于中文和英文的.GlobalPreferences.plist,改了个名字而已,都放在/var/root/Library/Preferences目录里面。/usr/sbin/reboot是从iPhone的升级文件中提取出来的。

我在iPhone上装了Term(仿真终端),要切换中文,就在Term里面输入:chinese.sh,切换英文就输入:english.sh。

[[i] 本帖最后由 n000b 于 2007-10-26 07:11 编辑 [/i]]

330411 发表于 2007-9-24 01:06

飘过

[[i] 本帖最后由 claudio 于 2007-9-26 23:28 编辑 [/i]]

gavin 发表于 2007-9-25 15:08

smiley21.gif  楼上的飘的有点过了吧

风尾竹 发表于 2007-9-25 21:48

水的太严重拉。..这里可是技术讨论区....斑竹不能带这个坏头!!!!smiley64.gif

72035 发表于 2007-10-2 20:31

谁能帮我刷机,请和我联系,谢谢!!

aa130112 发表于 2007-10-4 17:55

看看是什么全中文吗

ilwhx 发表于 2007-10-5 11:43

可不可以把盖好的plist文件传上来?  没有mac机器,没法改

n000b 发表于 2007-10-5 13:08

安装iBrickr后再装LanguagePack吧,自动切换,不需要这么麻烦手工DIY。

82362181 发表于 2007-10-5 16:22

顶下

smiley41.gif 能不能直接把文件上传来?

n000b 发表于 2007-10-5 16:44

[quote]原帖由 [i]82362181[/i] 于 2007-10-5 16:22 发表 [url=http://bbs.iphone.com.cn/redirect.php?goto=findpost&pid=116659&ptid=28935][img]http://bbs.iphone.com.cn/images/common/back.gif[/img][/url]
smiley41.gif 能不能直接把文件上传来? [/quote]
安装iBrickr后再装LanguagePack吧,自动切换,不需要这么麻烦手工DIY。

tianyof 发表于 2007-10-7 00:26

显示中文不正常,如何解决?
网页中某些字体显示不出来,比如新浪的blog中上面的显示正常,下面用户回复是乱码。
Apollo的中文显示不出来。

qfdx 发表于 2007-10-10 16:07

安装完languagepack后,是看到有中文简体。但是无法切换,current language始终显示english。不知何故。

n000b 发表于 2007-10-10 16:11

简体中文是空的,试试看繁体中文。

qfdx 发表于 2007-10-10 16:15

有很多语言,但是不能修改成其他任何一种语言

wwwwni 发表于 2007-10-10 19:31

对!怎么办!不能修改成其他任何一种语言!我还不想用一键汉化的!很恶心很恶心!还带自己名字的logo,鄙视一下!某论坛的XX人!

修猛 发表于 2007-10-22 00:03

好东东。。没点外文还就不会。。。。。

victorchu_1023 发表于 2007-10-26 05:44

dddddddddd

fengyuan2929 发表于 2007-11-3 19:26

侃侃smiley41.gif

supersrd 发表于 2007-11-5 00:21

smiley61.gif smiley61.gif smiley61.gif

supersrd 发表于 2007-11-5 00:38

smiley41.gif smiley41.gif smiley41.gif smiley41.gif

页: [1] 2

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.