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

本文介绍如何在iOS应用中实现字符的本地化与国际化,包括创建本地化资源库、配置不同语言的字符资源文件、实现NSBundle扩展类以方便获取本地化字符串,并通过实例展示了具体的应用效果。

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-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文件

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值