貌似又是一個很久沒有寫部落格的時段過去了 =。 = ,公司第一款遊戲已經上線,相繼iphone中文版,ipad,android版本都會陸續上線,這裡感謝大家的支援與關注!年後呢,himi呢也一直在這裡為自己的個人部落格各種使勁,由于沒有弄過是以比較菊花…不過至少現在弄的還算自己滿意,一直關注過himi的童鞋應該知道,himi的部落格在各大論壇和社群都有開設,本身himi身處創業中,一方面時間安排不開來寫部落格,并且到各大部落格去繁瑣操作更新,另外一方面himi也在努力自我學習中,是以做一個獨立部落格也是勢在必行了; 也是以除了himi的此個人部落格外,其他部落格将會相繼停止更新;望大家互相轉告,并能體諒himi;
好了不多說了,轉入正題,今天要講解的是個移動開發中比較基礎而又不能少的知識點:遊戲本地化
簡單概括下遊戲“本地化”概念,所謂本地化簡單的說就是不同地區的使用者進入我們的應用程式後,我們的app中的文字傳遞給使用者的資訊都能顯示他們能看懂的語言,譬如:中國使用者打開我們的app自動顯示文字資訊語言為簡體或者繁體,美國使用者打開我們的app自動顯示文字資訊語言為英文等等;
那麼本地化的方式一般有兩種形式:
1. 我們自己在app中提供給使用者一個語言選擇的功能,例如主界面中有一個“語言選擇”的按鈕,使用者點選後進入一個類似清單的ui中,讓使用者選擇“中文”,“英文”…等語言;當使用者選擇後我們則讓程式中的text資訊自動選擇對應的語言資訊文本即可,(或者使用者選擇語言後自動從我們的server端下載下傳語言資源包燈),此方式相比而言感覺較笨;
2.當使用者進入我們的app時,我們根據目前使用者目前移動裝置的語言自動将我們的app切換對應語言!(雖然此方法省去了使用者的選擇,而智能判定,但是使用者如果需要使用其他語言進行app的話,需要手動去設定手機語言,此方式則相比于第一種形式感覺又不太友善了,不過一般使用者不會這麼玩咱們的 = =)
那麼這裡對于第一種本地化的方式himi這裡就不多說了,比較容易實作,沒有可講的,這裡himi重點說下第二種形式:智能判定使用者裝置系統語言進而自動設定我們的app為其對應語種!
首先右鍵你的項目,選擇new file…,然後出現如下視窗,在左側 resource 中選擇 strings file 一項,最後自定義名字即可,這裡我把這個檔案命名為:himiinternation.strings (備注1)

然後我們選中建立的xx.strings檔案,然後在“hide or show the utilities”中添加語言,這裡himi添加英文和中文為大家舉例說明,如下圖:(途中箭頭是“hide or show the utilities”)
chinese(zh-hans)中文簡體 english 英文
當添加了兩種語言後,那麼一開始我們建立的himiinternation.strings中輕按兩下打開後将看到如下兩個檔案:
1.himiinternation.strings(english) 2.himiinternation.strings(chinese)
兩個檔案中内容如下:
1.himiinternation.strings(english)
1
2
3
4
5
6
7
8
9
/*
himiinternation.strings
internationpro
created by on 12-2-25.
copyright (c) 2012年 augustimpression. all rights reserved.
*/
"title"="目前系統語言為-中文";
"name"="李華明";
2.himiinternation.strings(chinese)
"title"="目前系統語言為-english";
"name"="himi";
ok,以上步驟完成後,下面我們來看看如何使用吧:(備注3)(這裡拿cocos2d項目模版代碼講解)
10
//備注3
cclabelttf *label = [cclabelttf labelwithstring:nslocalizedstringfromtable(@"title",@"himiinternation", nil) fontname:@"marker felt" fontsize:44];
cgsize size = [[ccdirector shareddirector] winsize];
label.position = ccp( size.width /2 , size.height/2 );
[self addchild: label];
//name
label = [cclabelttf labelwithstring:nslocalizedstringfromtable(@"name",@"himiinternation", nil) fontname:@"marker felt" fontsize:24];
label.position = ccp( size.width /2 , size.height/2-100 );
ok,首先我們運作項目,目前我的手機語言為中文簡體,運作截圖如下:
然後我從進入手機的“設定”-“通用”-“多語言環境”-語言-選擇 english ,點選完成将系統語種換成英文,重新打開我們的項目,截圖如下:
注意備注1與備注3:
如果在備注1步驟時命名.strings檔案為 localizable.strings 時,那麼你就可以在備注3使用的時候,用以下方式調用即可:
nslocalizedstring(@"title", nil) nslocalizedstring(@"name", nil)
如果備注1步驟建立.strings檔案是自定義的名字的話,如目前我起名為 himiinternation.strings,那麼調用的方式為備注3的方式:
nslocalizedstringfromtable(@”title”,@”himiinternation”, nil) nslocalizedstringfromtable(@”name”,@”himiinternation”, nil)
當自定義名字後,使用nslocalizedstring的方式不起作用,這裡要注意;