配置需要国际化的语言
project->Info->Localizations 添加本地化语言包
App名称本地化
(1)创建InfoPlist.string
文件,Xcode的File inspection
中Localize
选择需要本地化的语言
(2)在不同语言InfoPlist.strings对应文件中添加应用名称
InfoPlist.strings(English)
1
2//App在英语环境下显示的名称
CFBundleDisplayName = "AppName";InfoPlist.strings(Chinese)
CFBundleDisplayName = “应用名称”;
(3)info.plist添加Application has localized display name
,值为YES
代码中字符串本地化
(1)创建Localizable.strings
文件,Xcode的File inspection
中Localize
选择需要本地化的语言
(2)以KeyValue的形式,为代码中每一个需要本地化的字符串赋值
Localizable.strings(English)
1
"hello" = "Hello!";
Localizable.strings(Chinese)
1
"hello" = "你好";
(3)使用Foundation框架自带的NSLocalizedString(key, comment)这个宏根据Key获取对应字符串
NSlocalizeString 第一个参数key是内容,根据key去对应语言的文件中获取对应的字符串,如果没有找到,那么就会以key作为value返回,第二个参数将会转化为字符串文件里的注释。
#define NSLocalizedString(key, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@”” table:nil]
多人开发情况下的字符串本地化
不在系统默认的本地化文件Localizable.strings
中定义字符串,自定义strings文件储存本地化字符串,然后通过NSLocalizedStringFromTable(\<#key#\>, <#tbl#>, <#comment#>)
获取。
- tbl:自定义strings文件的名称
图片本地化(两种方式两种方式)
第一张方式:同获取本地化字符串方式获取图片名称进行加载
第二种方式:将图片本地化,选中图片,在Xcode的File inspection
中Localize
选择需要本地化的语言,项目目录中显示service(English)
和service(Chinese)
两张图片,分别替换为不同语言的两张图片,实际是存储在en.lproj
和zh-Hans.lproj
中同为service.png
名称的两张图片。
两种方式同获取本地化字符串相同获取图片名称:1
NSString *imgName = NSLocalizedString(@"service", nil);
查看/切换本地语言
查看本地语言环境:从NSUserDefaults中获取key为AppleLanguages
的value即为当前语言环境。1
2NSArray *languages = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];
NSString *currentLanguage = languages.firstObject;
切换当前语言环境:1
2NSArray *lans = @[@"zh-Hans"];
[[NSUserDefaults standardUserDefaults] setObject:lans forKey:@"AppleLanguages"];
也可通过Edit Scheme->Run->Arguments Passed On Launch ->-AppleLanguages (语言)改变语言环境