首页 > 代码库 > iOS,本地化字符

iOS,本地化字符

iOS字符本地化

1.本地化资源库

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

 技术分享

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

 技术分享

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

//英语

"Group" = "Group";

"Name" = "Name";

//简体中文

"Group" = "群组";

"Name" = "一线天";

//繁体中文

"Group" = "群組";

"Name" = "壹線天";

2.处理本地转换扩展

2.1.新建Bundle扩展类

 技术分享

技术分享 

2.2.实现NSBundle扩展方法

//

//  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

//  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-Hant\zh-HK\zh-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

//  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]);

iOS,本地化字符