本文共 1373 字,大约阅读时间需要 4 分钟。
国际化也称作本地化,为了使不同国家和地区的用户能够有良好的体验,需要对自己所开发的应用进行不同语言的适配。
iOS中的NSBundle.h
中提供了本地化的实现方法:
/* Method for retrieving localized strings. */- (NSString *)localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName NS_FORMAT_ARGUMENT(1);
Localizable.strings
key | value | return |
---|---|---|
nil | nil | 空串 |
nil | 非 nil | value |
未找到 | nil 或 空串 | key |
未找到 | 非 nil 且 非空串 | value |
一般可以直接使用NSBundle.h
中定义的宏
#define NSLocalizedString(key, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]#define NSLocalizedStringFromTable(key, tbl, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:(tbl)]#define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) [bundle localizedStringForKey:(key) value:@"" table:(tbl)]#define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) [bundle localizedStringForKey:(key) value:(val) table:(tbl)]
NSLocalizedStringFromTable(key, tbl, comment)
使用这两个宏时,都是使用与系统语言相同的语言资源包,但前者是使用默认的字符串文件Localizable.strings
,而后者使用传入的文件进行查找。
NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment)
转载地址:http://vtdws.baihongyu.com/