Objective-C 應用內多語言切換

1. 多語言切換範例程式碼

GitHub:

https://github.com/f40706/change_language_1/tree/main

2. 範例程式碼結果圖

範例程式碼中英文翻譯表

英文

“PressedEnglish" = “Pressed English";
“PressedChinese" = “Pressed Chinese";

中文

“PressedEnglish" = “點擊英文";
“PressedChinese" = “點擊中文";

2. 新增多語言方法

實際功能,可以下載GitHub範例

新增想要的語言
範例使用中文
這個英文是固定的喔
選擇使用的語言
將要使用的打勾

這樣就新增完成囉

3. 程式碼

核心程式碼

-(void) initLanguage: (NSString*) selectLanguage {
    NSString *localeLanguageCode = [[[NSBundle mainBundle] preferredLocalizations] firstObject];
    NSLog(@"localeLanguageCode-> %@",localeLanguageCode);
    
    if([selectLanguage  isEqual: @"en"]) {
        NSString *path = [[NSBundle mainBundle]pathForResource:@"en" ofType:@"lproj"];
        bundle_language = [NSBundle bundleWithPath:path];
    } else if([selectLanguage  isEqual: @"zh"]) {
        NSString *path = [[NSBundle mainBundle]pathForResource:@"zh-Hant" ofType:@"lproj"];
        bundle_language = [NSBundle bundleWithPath:path];
    }
}

-(NSString*) getStringForKey:(NSString*)key withTable:(NSString*)table {
    NSString *string = @"";
    if(bundle_language) {
        string = NSLocalizedStringFromTableInBundle(key, table, bundle_language, @"");
        return string;
    }
    string = NSLocalizedStringFromTable(key, table, @"");
    return string;
}

呼叫方式

- (IBAction)onEnglishPressed:(UIButton *)sender {
    
    [_context_label setText:[_delegate getStringForKey:@"PressedEnglish" withTable:@""]];
}

- (IBAction)onChinesePressed:(UIButton *)sender {
    [_context_label setText:[_delegate getStringForKey:@"PressedChinese" withTable:@""]];
}

- (IBAction)onLanguageChangePressed:(UIButton *)sender {
    if(_curLanguage == 1) {
        [_delegate initLanguage:@"en"];
        _curLanguage = 0;
        [_curLanguageBtn setTitle:@"當前語言:英文" forState:UIControlStateNormal];
    } else {
        [_delegate initLanguage:@"zh"];
        _curLanguage = 1;
        [_curLanguageBtn setTitle:@"當前語言:中文" forState:UIControlStateNormal];
    }
}

- (void)viewDidLoad {
    [super viewDidLoad];
    _delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    _curLanguage = 0;
    [_delegate initLanguage:@"en"];
}


Objective-C


訂閱Codeilin的旅程,若有最新消息會通知。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

透過 WordPress.com 建置的網站.

向上 ↑

%d 位部落客按了讚: