1.获取手机当前的语言环境
NSArray *languagesArr = [NSLocale preferredLanguages];
NSString *currentLanguage = [languagesArr[0] componentsSeparatedByString:@"-"].firstObject;
//[NSLocale ISOLanguageCodes]可获取世界上所有语言代号(小写字母)
self.title = [currentLanguage isEqualToString:@"zh"] ? @"商城" : @"Shop";
2.获取手机当前的位置(国家)
NSLocale *currentLocale = [NSLocale currentLocale];
NSString *countryCode = [currentLocale objectForKey:NSLocaleCountryCode];
//此处objectForKey是NSLocale的对象方法,并非字典
if ([countryCode isEqualToString:@"CN"]) { //当前位置是否中国
[TSUserDefaults setIsChina:YES];
}else{
[TSUserDefaults setIsChina:NO];
}
//注:[NSLocale ISOCountryCodes]可获取所有国家代号(大写字母)
3.ios项目常用的国际化方法
/** 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)]
*/
//国际化是ios提供的一个宏,定义在NSBundle.h文件中,跟以上的NSLocale没有关系。用法如下
NSLocalizedString(@"中国", nil);
4. NSLocale和NSLocalizedString配合使用举例
实现目标:App已经支持了中英法德俄语言,其他语言环境用英文显示
NSArray *languagesArr = [NSLocale preferredLanguages];
NSString *currentLanguage = [languagesArr[0] componentsSeparatedByString:@"-"].firstObject;
if ([currentLanguage wz_IsEqualToString:@"zh"]||
[currentLanguage wz_IsEqualToString:@"en"]||
[currentLanguage wz_IsEqualToString:@"fr"]||
[currentLanguage wz_IsEqualToString:@"de"]||
[currentLanguage wz_IsEqualToString:@"ru"]||
{
NSString *string = NSLocalizedString(keyString, nil);
return string;
}
else {
if (fileName) {//从指定文件中获取对应的本地化字符
return NSLocalizedStringFromTable(keyString, fileName, nil);
}
else //如果fileName为nil,那么就默认在英文本地化table中查找
{
return NSLocalizedStringFromTable(keyString, @"Localizable_EN", nil);
}
}
网友评论