如何讓你的iPhone程式支援多語言環境

來源:互聯網
上載者:User

我們知道,Cocoa程式是完全支援多語言的,包括iPhone中的程式。這裡簡單介紹一下製作多語言iPhone程式的方法,同時也是iPhone中顯示中文的最好辦法。這種方法在Toolchain和官方SDK都適用。

一、XCode中支援多語言
如果你使用XCode,那麼方法非常簡單:

在項目中點右鍵,選擇Add->New File

在列表中選擇Strings File

可以叫做Localizable.strings,也可以取別的名字,比如MyApp.strings

選中MyApp.string,按command+i,點擊左下方的Make File Localizable,你會看到General中的Localizations裡面已經有了English。

點擊下面的Add Localization,添加一個zh_CN(簡體中文)和一個zh_TW 或者 zh_HK(繁體中文)。注意zh_Hans(簡體中文)和zh_Hant(繁體中文)在Mac中可以正確識別,但是在iPhone中不能正確識別。

如果你想支援別的語言,可以添加:

日語:Japanese
德語:German
西班牙語:Spanish
法語:French

.strings檔案的內容可以是標準的plist格式,也可以是舊的列表格式:

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

    <key>mykey</key>

    <string>myvalue</string>

        ….

</dict>

</plist>

字串如果要換行的話,直接按斷行符號換行,不要寫成/n這種形式。

或者直接使用舊式的列表格式:

"mykey" = "myvalue";

注意每行後面加分號。

如果你使用的是Localizable.strings,那麼你在程式中可以這樣擷取字串:

NSLocalizedString(@"mykey", nil)

 

如果你使用的是自訂名字的.strings,比如MyApp.strings,那麼你在程式中可以這樣擷取字串:

 

NSLocalizedStringFromTable (@"mykey",@"MyApp", nil)

 

這樣即可擷取到"myvalue"這個字串,可以是任何語言。

 

如果你使用的是官方的iPhone SDK,那麼項目中包含這個.strings就可以直接使用了,如果你使用的是toolchain,那麼需要修改一下Makefile:

 

增加

 

LANG_FILES=$(wildcard *.lproj)

LANG_FILES_ABS=$(addprefix $(SRCROOT)/,$(LANG_FILES))

RESOURCES=Resources

 

找到

 

$(APP_ABS): $(INFOPLIST_ABS)

 

在最後一行增加:

 

cp -R $(LANG_FILES_ABS) $(APP_ABS)/$(RESOURCES)

 

這樣即可讓你的iPhone程式支援多語言環境了。 當然如果你不怕麻煩,也可以每次都手工把這些.lproj目錄複寫到編譯好的Bundle裡,也是一樣的。

二、在其他開發環境支援iPhone多語言環境

如果你使用Windows或者Linux編譯iPhone toolchain,那麼你需要這樣做:

 

在編譯好的iPhone程式的Bundle(比如MyApp.app這個目錄)裡建一個Resources目錄,然後分別建立:
English.lproj/
zh_CN.lproj/
zh_TW.lproj/
….

每個語言的目錄放一個.strings檔案。比如MyApp.strings 儲存成UTF-8編碼(檔案名稱在不同語言的目錄中要一致)

字串的擷取方法和上文相同,你也可以通過修改Makefile在編譯的時候自動將.strings資源檔的各個目錄複寫到程式的Bundle裡。

另外,在iPhone程式中,語言資來源目錄既可以放在Resources目錄裡,也可以直接放在Bundle裡。

這種方法的好處很明顯:因為iPhone OS中已經內建了多語言的支援,為什麼不把你的程式也做成更多人可以使用的呢?另外,這樣做還可以避免使用傳統的@"中文"顯示為亂碼的問題(因為NSString字串的這種建立方法只支援7Bit ASCII碼)。

 

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/ttth202507/archive/2011/04/13/6320284.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.