iOS,本地化(国际化)字符

iOS字符本地化(国际化)

1.本地化资源库

1.1.新建Bundle作为本地化资源库

 

1.2.将本地化资源库改成如下

 

1.3.配置各个语言的本地字符(Localizable.strings)资源

//只能在顶部注释,不要在每一列后面注释,会读取失败导致app崩溃

//英语
"Group" = "Group";
"Name" = "Name";
//简体中文
"Group" = "群组";
"Name" = "一线天";
//繁体中文
"Group" = "群組";
"Name" = "壹線天";

2.处理本地转换扩展

2.1.新建Bundle扩展类

 

 

2.2.实现NSBundle分类方法

//NSBundle+LocalizationString.h文件

 

//
//  NSBundle+LocalizationString.h
//  LocalizationStringTest
//
//  Created by Vie on 2017/1/20.
//  Copyright © 2017年 Vie. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSBundle (LocalizationString)


/**
 根据系统语言返回本地化字符

 @param key 字符key
 @return 本地化字符
 */
+(NSString *)localizationStringForKey:(NSString *)key;
@end

 

//  NSBundle+LocalizationString.m文件

 

//
//  NSBundle+LocalizationString.m
//  LocalizationStringTest
//
//  Created by Vie on 2017/1/20.
//  Copyright © 2017年 Vie. All rights reserved.
//

#import "NSBundle+LocalizationString.h"

@implementation NSBundle (LocalizationString)
/**
 根据系统语言返回本地化字符
 
 @param key 字符key
 @return 本地化字符
 */
+(NSString *)localizationStringForKey:(NSString *)key{
 static NSBundle const *bundle=nil;
    if (bundle==nil) {
        // (iOS获取的语言字符串比较不稳定)目前框架只处理en、zh-Hans、zh-Hant三种情况,其他按照系统默认处理
        NSString *language = [NSLocale preferredLanguages].firstObject;
        if ([language hasPrefix:@"en"]) {
            language = @"en";
        } else if ([language hasPrefix:@"zh"]) {
            if ([language rangeOfString:@"Hans"].location != NSNotFound) {
                language = @"zh-Hans"; // 简体中文
            } else { // zh-Hantzh-HKzh-TW
                language = @"zh-Hant"; // 繁體中文
            }
        } else {
            language = @"zh-Hans";
        }
        //初始化资源
        bundle=[NSBundle bundleWithPath:[[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"LocalizationString" ofType:@"bundle"]] pathForResource:language ofType:@"lproj"]];
    }
    return [bundle localizedStringForKey:key value:nil table:nil];
}
@end

 

3.本地化字符key

3.1.本地化字符key实现

//  LocalizationKey.h文件

//
//  LocalizationKey.h
//  LocalizationStringTest
//  本地化字符key列表
//  Created by Vie on 2017/1/20.
//  Copyright © 2017年 Vie. All rights reserved.
//

#define Group   @"Group"
#define Name    @"Name"

 

4.使用

#import "NSBundle+LocalizationString.h"
#import "LocalizationKey.h"


 
NSLog(@"%@|%@",[NSBundle localizationStringForKey:Group],[NSBundle localizationStringForKey:Name]);

//运行结果

2017-02-16 11:18:48.589 LocalizationStringTest[11190:1861472] 群组|一线天
原文地址:https://www.cnblogs.com/douniwanxia/p/6322870.html