iOS 支援中文和英文的語言本地化

來源:互聯網
上載者:User

標籤:

今日學習了語言本地化完整的流程,撰此文以記之。

一、建立.strings檔案,並本地化。

1、建立項目,建立.strings檔案。

2.本地化 

3.添加支援的語言

選中PROJECT下的項目->Localization -> 點擊+添加。這裡添加簡體中文的.strings檔案。

勾選三個檔案,項目中就會建立名為Language.strings(Chinese(Simplified))檔案。

finder中項目目錄下就會建立名為zh-Hans.lproj檔案夾。

同樣的方式可以建立English.strings。

二、語言本地化的使用

1.在Language.strings(Chinese(Simplified))檔案和Language.strings(English)檔案中添加索引值對。

 

2.在代碼中本地化的使用方式。

搭建UI,添加UILabel在storyboard上,用於在不同系統語言的情況下展示所顯示的文字。

 

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {        //1.擷取系統當前語言    NSArray *languages = [NSLocale preferredLanguages];    NSLog(@"languages==%@",languages);    NSString *currentLan = [languages firstObject];    NSRange range = [currentLan rangeOfString:@"-C"];    NSString *string = [currentLan substringToIndex:range.location];    [[NSUserDefaults standardUserDefaults]setObject:string forKey:@"language"];}

 ViewController.m

@interface ViewController ()@property (weak, nonatomic) IBOutlet UILabel *Lab;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    //1.擷取當前語言    NSString *name = [[NSUserDefaults standardUserDefaults] objectForKey:@"language"];        //2.擷取當前語言的檔案    NSString *pathStr = [[NSBundle mainBundle]pathForResource:name ofType:@"lproj"];        //3.根據key轉換為當前語言。key為.strings檔案中的鍵名 table:為.strings檔案名稱    NSString *valueStr = [[NSBundle bundleWithPath:pathStr] localizedStringForKey:@"key" value:nil table:@"Language"];        self.Lab.text = valueStr;
}

建議ViewController.m檔案中的代碼寫成全域宏定義,因為在很多地方可以用到。宏定義及使用如下:

#define Localize(key)  [[NSBundle bundleWithPath:[[NSBundle mainBundle]pathForResource:[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"Language"];@interface ViewController ()@property (weak, nonatomic) IBOutlet UILabel *Lab;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        NSString *value = Localize(@"key");    self.Lab.text = value;}

3.手機系統語言分別設定為簡體中文和英文。

註:

擷取系統語言時

NSArray *languages = [NSLocale preferredLanguages];
NSLog(@"languages==%@",languages);NSString *currentLan = [languages firstObject];
languages數組

列印結果:

 

這裡的內容是和手機->設定->通用->語言和地區頁面中PREFEREND LANGUAGED對應。

 

iOS 支援中文和英文的語言本地化

聯繫我們

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