以下是学习的一点笔记,仅供参考.
为什么要做国际化和本地化呢?
如果需要你的应用程序支持不同的国家地区和语言,那么首先是需要将程序国际化,支持多语言,国际化其实就是本地化的一种整理本地化资源的一种技巧.
然后需要本地化翻译应用程序读出和显示的内容,其中还包括一些内容上的本地化适配.
首先需要本地化应用程序的名字--显示在桌面的APP名称
2.然后找到程序Supporting Files文件夹下面选中后 InfoPlist.strings 在右侧Utilities 界面勾选添加的语言
3.这时候InfoPlist.strings 可以展开多个子目录,在对应语言目录中添加
CFBundleDisplayName ="xxx"; // xxx 为对应语言显示的应用程序名称.
其次需要本地化程序内使用的固定内容
2.还是选中 Localizable.string 在 Utilities 界面添加语言
"rootViewNavTitle" = "山";// rootViewNacTitle 为key值 "山"为value,是显示的内容,注意:每个key-value都要有 ; 结束
在程序中使用
NSLocalizedString(@"rootViewNavTitle",
@"Title used for the Navigation Controller for the root view"); // 第一个参数为我们在各个语言版本中添加的key值, 第二个参数为对这个key值的value
// 做一个备注,以供本地化人员参考,备注可以为nil
内容也可以带上占位符,以备替换 如: "rootViewNavTitle" = "山,高%d米";
4.如果你创建的,string文件是另外的名字(非Localizable.string) 在使用的时候需要换用
NSLocalizedStringFromTable(key, tbl, comment) 来实现, 第一个参数为 key值 第二个参数是你创建的string文件的名字,第三个参数仍然是注释
最后如何本地化图片呢
如: NSString *imageName = NSLocalizedString(@"本地化的图片名称",nil); 然后将取出的本地化的图片取赋值给UI显示.
2. 还可以使用给图片添加多语言的方式. 首先选中图片,然后在 Utilities 添加Localiztion
使用方法不变, 只是需要在对应的语言文件夹中替换图片资源即可
那么如何在程序中获得当前系统使用的语言呢?
我们可以在苹果代码示例 International Mountains 中看到实现的方式:
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString* preferredLang = [languages objectAtIndex:0];
NSLog(@"Current language is %@", preferredLang);
这样就可以判断当前系统使用的语言了.
另外,如果你的程序使用XIB,可以使用Auto Layout来适配多语言,具体内容可以参考官方文档
Start Developing iOS Apps Today 和 Cocoa Auto Layout Guide
目前应用程序的icon 是无法实现本地化的,但是开屏图片是可以实现多语言本地化的.
结束: 本地化暂时就接触这么多,以后学到更多,再来更新.