標籤:
今日學習了語言本地化完整的流程,撰此文以記之。
一、建立.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 支援中文和英文的語言本地化