2013-07-11 130 views
2

我正在嘗試查找關於如何本地化iPhone應用程序的一步一步教程。我有英文,我想添加法文。該文檔可用,但幾乎沒有給你明確的指示,說明如何從頭到尾執行它。如何本地化iPhone應用程序

+1

http://www.ibabbleon.com/iphone_app_localization。html – stosha

+0

我喜歡你的漫遊,然後是我發佈的漫遊。當你有機會時,你可以把它作爲答案,以便我可以接受它? –

+0

謝謝添加我的答案 – stosha

回答

1

下面是我一直在尋找的分步演練。它被發現Here 希望它可以幫助你所有人,因爲它做了米。

這是一個客戶後,由肖恩·貝瑞,數學的應用程序的iPhone,iPad的開發者,和iPod Touch。

我古斯塔本地化! 儘管說英語的App Store市場規模最大,但世界上仍有許多其他iPhone用戶,您可以通過支持其母語來大幅提升用戶體驗。

好消息是,蘋果已經很容易使您的應用程序通過一些API調用多語言工作和內置在Xcode支持。這樣做的過程稱爲本地化,這就是我會告訴你如何去做的!

在這個iPhone應用程序的教程中,你將被定位一個示例應用程序我準備叫iLikeIt這是在雷的帖子的啓發由暴走漫畫有關應用內購買。該應用程序非常簡單 - 它顯示了一些理想的銷售數據,當您點擊「你喜歡?」時,出現一張臉,放大並消失。 但現在它只是英文 - 所以vamos一traducir!

這個iPhone應用程序的教程將要使用的Xcode 4.6.1,因此,如果您尚未升級,爲什麼不以此爲藉口這樣做呢?

入門 第一步是下載iLikeIt starter project,我們將在本iPhone應用教程中進行本地化。 構建並運行應用程序,你應該看到您點擊後,以下出現「你喜歡?」:

我們有三樣東西在這裏定位: 文字:銷售數據 UI元素:「你喜歡?」按鈕 和最後的圖像(它有文本!) 從代碼中分離文本 與大多數項目一樣,此項目在代碼中包含一些硬編碼字符串。我們需要將所有這些硬編碼的字符串放到一個單獨的文件中,以便我們可以對它們進行本地化。

你在Xcode中做到這一點的方法是創建一個「.strings」文件包含所有項目所需要的字符串。然後,您將用函數調用替換硬編碼的字符串,以根據當前語言從「.strings」文件中查找適當的字符串。 讓我們試試看。轉到File \ New \ New File。選擇iOS \ Resource \ Strings File,然後單擊Next,如下面的截圖所示。命名新文件Localizable.strings,然後單擊保存。

請注意,Localizable.strings是IOS在處理本地化文本時查找的默認文件名。如果你不使用它,你必須每次指定.strings文件的名稱。

爲字符串文件的格式是: 「KEY」= 「CONTENT」; 因此,對於我們'昨天您銷售%@ apps'和'您喜歡?'的文本添加: 「您昨天出售%@ apps」=「您昨天銷售%@ apps」;

"You like?" = "You like?"; 

現在切換到ViewController.m,並找到viewDidLoad方法。現在它將文本設置爲: self.numAppsLabel.text = [NSString stringWithFormat:@「昨天您銷售%@ apps」,@(1000000)];

[self.likeButton setTitle:@"You like?" forState:UIControlStateNormal]; 

我們希望它從我們的.strings文件中讀取。要做到這一點,請將當前行更改爲使用名爲NSLocalizedString的宏,如下所示: self.numAppsLabel.text = [NSString stringWithFormat:NSLocalizedString(@「Yesterday you sold%@ apps」,nil),@(1000000)];

[self.likeButton setTitle:NSLocalizedString(@"You like?", nil) forState:UIControlStateNormal]; 

如果你好奇的NSLocalizedString宏做什麼,在NSLocalizedString控制單擊並選擇跳轉到。你會發現,它的定義如下:

#define NSLocalizedString(key, comment) \ 
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil] 

因此,基本上,它的使用方法localizedStringForKey查找字符串給定鍵,在當前的語言。它傳遞零表名,所以它使用默認的字符串文件名(Localizable.strings)。有關完整的詳細信息,請查看Apple的NSBundle類參考。

另一件要注意的事情。宏將註釋作爲參數,但似乎沒有做任何事情!這是因爲不需要像我們一直手動輸入Localizable.strings中的每個鍵/值對一樣,您可以使用iPhone SDK附帶的稱爲genstrings的工具自動執行此操作(這對於大型項目可能非常方便)。

如果您使用此方法,則可以爲默認字符串旁邊出現的每個字符串添加註釋,以此作爲翻譯器的輔助。例如,您可以添加一個註釋,指示使用該字符串的上下文。 足夠的背景資料 - 讓我們試試吧!構建和運行你的項目,它應該像以前一樣在主屏幕上顯示相同的文本。但西班牙語在哪裏?現在我們成立了,這是一個小小的局面。

添加西班牙語本地化 要添加對其他語言的支持,請單擊左窗格中的藍色iLikeIt項目文件夾,在下一個窗格(不是目標)中選擇項目,然後在Info選項卡下,本地化版塊。點擊+並選擇西班牙語(es)。

您會看到另一個屏幕,詢問您要將哪些文件進行本地化,並將它們全部保留並單擊完成。你沒有看到Localizable.strings沒關係!我們很快就會做到。

在這一點上,Xcode已經在後臺爲您選擇的每種語言設置了一些包含InfoPlist.strings和MainStoryboard.storyboard單獨版本的目錄。要親自查看,請在Finder中打開項目文件夾,然後您會看到以下內容:

請參閱en.lproj和es.lproj?它們包含我們的語言特定版本的文件。 'en'是英語的本地化代碼,'es'是西班牙語的本地化代碼。如果你很好奇,下面是完整的語言代碼列表。

當iOS想要獲得英文版本的文件時,它會查看en.lproj,但是當它需要西班牙語版本的文件時,它會查找es.lproj。

就這麼簡單!把你的資源放在適當的文件夾中,iOS將完成剩下的工作。 但是等等,Localizable.strings呢?要讓Xcode知道您希望它本地化,請在左窗格中選擇它,然後在右窗格中打開File Inspector。在那裏您會看到一個標有本地化的按鈕,點擊它,選擇英語(因爲它目前是英語),最後點擊本地化。

現在在右邊的File Inspector面板上,它顯示了該文件屬於哪種語言,通過選中西班牙語左側的框將其添加到西班牙語本地化中。

返回到左側面板並單擊Localizable.strings旁邊的箭頭,以顯示子元素。您現在將看到我們正在使用此文件的兩個版本:

要更改西班牙語的文本,請選擇Localizable.strings(西班牙語)並將文本更改爲: 「您昨天銷售%@ apps」 =「Ayer le vendió%@ aplicaciones」;

"You like?" = "~Es bueno?~"; 

你的應用程序現在是世俗的!讓我們確保它的工作... 要讓您的模擬器顯示西班牙語,進入Settings.app並選擇常規 - >國際 - >語言 - >西班牙語。 刪除該應用程序並選擇Project \ Clean以獲取全新的構建和安裝。當你建立和運行你應該看到:

語言環境與語言 讓我們通過添加一些格式使該數字看起來更好。替換此代碼: self.numAppsLabel.text = [NSString stringWithFormat:NSLocalizedString(@「昨天你賣了%@ apps」,nil),@(1000000)]; 使用: NSNumberFormatter * numberFormatter = [[NSNumberFormatter alloc] init]; [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];

NSString *numberString = [numberFormatter stringFromNumber:@(1000000)]; 
self.numAppsLabel.text = [NSString stringWithFormat:NSLocalizedString(@"Yesterday you sold %@ apps", nil), numberString]; 

構建和運行和數字將會更容易閱讀。

但是,在西班牙,他們不會像這樣格式化數字。他們寫的是「1.000.000」而不是「1,000,000」,但如果您將iOS模擬器的語言更改爲Espanol,您仍然會看到用於分隔零的逗號。原因在於數字格式是基於區域/區域設置的,而不是語言。要查看西班牙的某個人如何看到該號碼,請進入設置 - >常規 - >國際,並將區域格式更改爲西班牙語 - >西班牙。

當你打開應用程序再次,這是你應該看到:

我們得到了該功能免費,只是爲了使用蘋果的NSNumberFormatter類!它支付蘋果公司的方式,不要與之抗爭。 圖片 由於我們在圖片中有文字,因此我們需要對其進行本地化。在其他西班牙語的應用程序中有一些英語會看起來業餘。 選擇ilike.png併爲西班牙語添加本地化版本(現在您已經是一位老專業版了!)(如果您忘記了,請在左側面板中選擇它,然後在右側的文件檢查器面板中單擊本地化按鈕。然後,在允許Xcode將默認副本放置到en.lproj後,選中右側面板上的西班牙文框。) 檢出項目文件夾。 ilike.png已被添加到英文文件夾(en.lproj),然後被複制到西班牙文件夾(es.lproj)。要爲西班牙文版本顯示不同的圖像,我們只需在西班牙文件夾中覆蓋圖像。

我也將它包含在起始項目中,保存爲megusta.png。 將它重命名爲ilike.png並將其移入西班牙文件夾(es.lproj),覆蓋複製的英文版本。 清潔和重建,你應該完成!切換你的模擬器到西班牙語看到...

恭喜!這是本地化的大部分。

相關問題