然而山不轉路轉,我們依然有辦法獲取系統語言,只是需要碰觸到一丁點的原生程式碼(對我來說,Object C完全是火星文般的存在,非萬不得已,最好是眼不見為淨),簡易步驟如下:
1. 開啓Classes裡頭的MainViewController.m。
2. 在webViewDidFinishLoad()內加入數行程式碼,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | - (void) webViewDidFinishLoad:(UIWebView*) theWebView { // only valid if ___PROJECTNAME__-Info.plist specifies a protocol to handle if (self.invokeString) { // this is passed before the deviceready event is fired, so you can access it in js when you receive deviceready NSString* jsString = [NSString stringWithFormat:@"var invokeString = \"%@\";", self.invokeString]; [theWebView stringByEvaluatingJavaScriptFromString:jsString]; } // Black base color for background matches the native apps theWebView.backgroundColor = [UIColor blackColor]; // ------------- 加入開始 ----------------- // 取得系統語言 NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; // 組合呼叫用的字串 NSString * front = [NSString stringWithFormat:@"setDefaultLanguage(\""]; NSString * back = [NSString stringWithFormat:@"\");"]; NSString * temp = [front stringByAppendingString:language]; NSString * jsFunctionString = [temp stringByAppendingString:back]; // 呼叫設置語言的javascript funciton [theWebView stringByEvaluatingJavaScriptFromString:jsFunctionString]; // ------------- 加入結束 ----------------- return [super webViewDidFinishLoad:theWebView]; } |
3. 一樣是編寫設置語言的javascript function:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | // 設置預設語言 function setDefaultLanguage( language ) { if ( ON_DEVICE ) // 實機 { if ( language.toUpperCase().match( "TW" ) || language.toUpperCase().match( "HK" ) ) { gLanguageIndex = ZH; // 繁體中文 } else if ( language.toUpperCase().match( "CN" ) ) { gLanguageIndex = CN; // 簡體中文 } else if ( language.toUpperCase().match( "EN" ) ) { gLanguageIndex = EN; // 英文 } else if ( language.toUpperCase().match( "JA" ) || language.toUpperCase().match( "JP" ) ) { gLanguageIndex = JA; // 日文 } else if ( language.toUpperCase().match( "KO" ) ) { gLanguageIndex = KO; // 韓文 } else { gLanguageIndex = EN; // 實機的預設語言 } } else // 非實機 { gLanguageIndex = TW; // 非實機的預設語言 } } |
4. 編譯後即可看到成果。

沒有留言:
張貼留言