您的位置:首页 > 移动开发 > IOS开发

iOS简单的本地化应用程序

2013-12-24 00:35 288 查看
以下是学习的一点笔记,仅供参考.

为什么要做国际化和本地化呢?

如果需要你的应用程序支持不同的国家地区和语言,那么首先是需要将程序国际化,支持多语言,国际化其实就是本地化的一种整理本地化资源的一种技巧.

然后需要本地化翻译应用程序读出和显示的内容,其中还包括一些内容上的本地化适配.

首先需要本地化应用程序的名字--显示在桌面的APP名称

1.找到工程文件 Info 下面的Localization选项,添加你需要适配的语言




2.然后找到程序Supporting Files文件夹下面选中后 InfoPlist.strings 在右侧Utilities 界面勾选添加的语言




3.这时候InfoPlist.strings 可以展开多个子目录,在对应语言目录中添加


CFBundleDisplayName ="xxx";
// xxx 为对应语言显示的应用程序名称.

其次需要本地化程序内使用的固定内容

1.新建一个String Files 命名为 Localizable -- 如果使用其他名字,后面关联显示使用不同的方法



2.还是选中Localizable.string 在 Utilities 界面添加语言
3.最后在不同语言的文件中添加对应的显示内容,格式如下:

"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文件的名字,第三个参数仍然是注释

最后如何本地化图片呢

我找到的有两种方法:
1.还是通过本地化字符串来 本地化 图片名称,然后读取相应的图片内容:

 如: 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 是无法实现本地化的,但是开屏图片是可以实现多语言本地化的.

结束: 本地化暂时就接触这么多,以后学到更多,再来更新.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息