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-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] 群组|一线天

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2018 ITdaan.com 粤ICP备14056181号