[iOS]如何在iOS開發中切換顯示語言實現國際化

來源:互聯網
上載者:User

[iOS]如何在iOS開發中切換顯示語言實現國際化

1.在Project設定,添加中英兩種語言:

 

 

2.建立Localizable.strings檔案,作為多語言對應的詞典,儲存多種語言,點擊右側Localization,勾選中英:

 

3.添加一個欄位,

 

在English中,添加:SUBMIT_BTN_TITLE = Go;

在Chinese中,添加:SUBMIT_BTN_TITLE = 開始;
 

4.一個工具類GDLocalizableController,用來切換本地語言:
////  GDLocalizableController.h//  guide-book////  Created by why on 7/16/14.//  Copyright (c) 2014 why. All rights reserved.//#import @interface GDLocalizableController : NSObject+(NSBundle *)bundle;//擷取當前資源檔+(void)initUserLanguage;//初始化語言檔案+(NSString *)userLanguage;//擷取應用當前語言+(void)setUserlanguage:(NSString *)language;//設定當前語言@end////  GDLocalizableController.m//  guide-book////  Created by why on 7/16/14.//  Copyright (c) 2014 why. All rights reserved.//#import GDLocalizableController.h@implementation GDLocalizableControllerstatic NSBundle *bundle = nil;+ ( NSBundle * )bundle{    return bundle;}+(void)initUserLanguage{        NSUserDefaults *def = [NSUserDefaults standardUserDefaults];    NSString *string = [def valueForKey:@userLanguage];    if(string.length == 0){        //擷取系統當前語言版本        NSArray* languages = [def objectForKey:@AppleLanguages];        NSString *current = [languages objectAtIndex:0];        string = current;        [def setValue:current forKey:@userLanguage];        [def synchronize];//持久化,不加的話不會儲存    }        //擷取檔案路徑    NSString *path = [[NSBundle mainBundle] pathForResource:string ofType:@lproj];    bundle = [NSBundle bundleWithPath:path];//產生bundle}+(NSString *)userLanguage{        NSUserDefaults *def = [NSUserDefaults standardUserDefaults];    NSString *language = [def valueForKey:@userLanguage];    return language;}+(void)setUserlanguage:(NSString *)language{        NSUserDefaults *def = [NSUserDefaults standardUserDefaults];        //1.第一步改變bundle的值    NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@lproj ];    bundle = [NSBundle bundleWithPath:path];        //2.持久化    [def setValue:language forKey:@userLanguage];    [def synchronize];}@end




5. 自訂一個宏方便處理:

 


 

 

// ----- 多語言設定#define CHINESE @zh-Hans#define ENGLISH @en#define GDLocalizedString(key) [[GDLocalizableController bundle] localizedStringForKey:(key) value:@ table:nil]

6.使用:

 

 

    [GDLocalizableController setUserlanguage:CHINESE];    NSLog(GDLocalizedString(@SUBMIT_BTN_TITLE));    [GDLocalizableController setUserlanguage:ENGLISH];    NSLog(GDLocalizedString(@SUBMIT_BTN_TITLE));


 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.