首页 > 代码库 > 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,本地化字符