[iOS]怎么在iOS开发中切换显示语言实现国际化

Posted ShineYangGod

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[iOS]怎么在iOS开发中切换显示语言实现国际化相关的知识,希望对你有一定的参考价值。

www.MyException.Cn  网友分享于:2014-07-17  浏览:0次 [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 <Foundation/Foundation.h>

@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 GDLocalizableController

static 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"));

以上是关于[iOS]怎么在iOS开发中切换显示语言实现国际化的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发之本地化国际化语言设置

iOS多语言本地化(国际化)设置

iOS多语言本地化(国际化)设置

iOS - 国际化语言切换

iOS 语言切换本地化,国际化

iOS多语言(国际化)开发(跟随系统 + APP内手动设置)