如何在Xcode 4.5平台上设置应用本地化?
2013-06-24 22:50
295 查看
几经艰辛,项目终于到达尾声,在上周给游戏增加了简体中文的本地化支持,这次本地化的内容主要有应用的名称、字符串和图片资源,IOS在本地化的支持还是很友好的,最后来个简单的小结吧。因项目是在Xcode4上开发,本文的操作也是基于Xcode4,在Xcode3上,部分操作应该会有所不同。
打开项目的“Info“属性编辑界面时,我们可以看到”localizations“一栏,如下图所示,这就是设置项目本地化支持语言的地方,在这里我们可以加入简体中文(Chinese(zh-Hans))、繁体中文(Chinese(zh-Hant))等语种的支持。
一个Xcode项目可以建立多个target,每个target代表一个不同的应用(产品),而且每个target都有自己的Info.plist配置文件,应用程序名(安装后在IOS设备上显示的名称)是在Info.plist配置文件里设置。
Info.plist不能设置本地化,如果需要让应用程序名以本地化形式显示,则要创建一个名为“InfoPlist.strings”的strings资源文件,在InfoPlist.strings里设置应用程序名,设置方式为 :"CFBundleDisplayName" = "要显示的名称"; App安装后,应用程序名会显示为键“CFBundleDisplayName”的值。通过对InfoPlist.strings本地化设置,就可以实现应用语言的本地化。主要操作步骤为:创建“InfoPlist.strings”文件
-> 选中“InfoPlist.strings” -> 打开右边工具栏(Utilites) -> 在“Localization”栏目加入语种,如下图所示:
加入多个语种后,InfoPlist.strings文件下会多出一个三角箭头,展开后,可以看到每个语种都会对应一个“InfoPlist.strings”文件(下图所示),选中一个文件,改变“CFBundleDisplayName”的值,这样就可以实现在不同的语言环境下显示不同名称的效果了。
cocoa框架内置了两个常用的宏来实现字符串的本地化:
NSLocalizedString(key, comment)
根据设备当前的语言环境自动加载对应的资源文件“Localizable.strings”,再返回资源文件里Key的值,如果不存在“Localizable.strings”文件,或者key不存在,会返回key本身。
NSLocalizedStringFromTable(key, tbl, comment)
根据设备当前的语言环境自动加载对应的资源文件tbl,再返回资源文件里Key的值,如果不存在tbl文件,或者key不存在,会返回key本身。
我们只要把字符串定义在strings资源文件里,像应用程序名的本地化操作一样,对strings资源文件进行本地化操作,再用使用上面2个宏读取,就可以实现字符串本地化显示了:
//从文件“Localizable.strings”里读取Key为“Localizable Demo”的值
NSString *title = NSLocalizedString(@"Localizable Demo", nil);
//从文件“MyStrings.string”里读取key为“test”的值
NSString *testString = NSLocalizedStringFromTable(@"test", @"MyStrings", nil);
选中需要本地化的资源文件 -> 打开右边工具栏(Utilites) -> 在“Localization”栏目加入需要支持的语言。xcode会把资源文件拷贝到新加入语言的的目录下,把准备好的本地化文件替换掉xcode自动拷贝的文件即可。
1. 给项目增加语言支持:
打开项目的“Info“属性编辑界面时,我们可以看到”localizations“一栏,如下图所示,这就是设置项目本地化支持语言的地方,在这里我们可以加入简体中文(Chinese(zh-Hans))、繁体中文(Chinese(zh-Hant))等语种的支持。
2. 应用程序名
一个Xcode项目可以建立多个target,每个target代表一个不同的应用(产品),而且每个target都有自己的Info.plist配置文件,应用程序名(安装后在IOS设备上显示的名称)是在Info.plist配置文件里设置。Info.plist不能设置本地化,如果需要让应用程序名以本地化形式显示,则要创建一个名为“InfoPlist.strings”的strings资源文件,在InfoPlist.strings里设置应用程序名,设置方式为 :"CFBundleDisplayName" = "要显示的名称"; App安装后,应用程序名会显示为键“CFBundleDisplayName”的值。通过对InfoPlist.strings本地化设置,就可以实现应用语言的本地化。主要操作步骤为:创建“InfoPlist.strings”文件
-> 选中“InfoPlist.strings” -> 打开右边工具栏(Utilites) -> 在“Localization”栏目加入语种,如下图所示:
加入多个语种后,InfoPlist.strings文件下会多出一个三角箭头,展开后,可以看到每个语种都会对应一个“InfoPlist.strings”文件(下图所示),选中一个文件,改变“CFBundleDisplayName”的值,这样就可以实现在不同的语言环境下显示不同名称的效果了。
3. 本地化字符串
cocoa框架内置了两个常用的宏来实现字符串的本地化:NSLocalizedString(key, comment)
根据设备当前的语言环境自动加载对应的资源文件“Localizable.strings”,再返回资源文件里Key的值,如果不存在“Localizable.strings”文件,或者key不存在,会返回key本身。
NSLocalizedStringFromTable(key, tbl, comment)
根据设备当前的语言环境自动加载对应的资源文件tbl,再返回资源文件里Key的值,如果不存在tbl文件,或者key不存在,会返回key本身。
我们只要把字符串定义在strings资源文件里,像应用程序名的本地化操作一样,对strings资源文件进行本地化操作,再用使用上面2个宏读取,就可以实现字符串本地化显示了:
//从文件“Localizable.strings”里读取Key为“Localizable Demo”的值
NSString *title = NSLocalizedString(@"Localizable Demo", nil);
//从文件“MyStrings.string”里读取key为“test”的值
NSString *testString = NSLocalizedStringFromTable(@"test", @"MyStrings", nil);
4. 图片和其他资源文件
选中需要本地化的资源文件 -> 打开右边工具栏(Utilites) -> 在“Localization”栏目加入需要支持的语言。xcode会把资源文件拷贝到新加入语言的的目录下,把准备好的本地化文件替换掉xcode自动拷贝的文件即可。
一个完整的本地化程序例子
相关文章推荐
- Xcode 4.5平台上设置应用本地化, Ios 本地化,多语言
- Xcode 4.5平台上设置应用本地化, Ios 本地化,多语言
- 如何制作一款像超级玛丽兄弟一样基于平台的游戏-第二部分 (xcode,物理引擎,TMXTiledMap相关应用)
- Xcode4.5 本地化,多语言设置
- .Net语言 APP开发平台——Smobiler学习日志:在手机应用开发中如何设置全局样式
- Windows Azure Cloud Service (31) 视频: 如何将Web 应用迁移到Windows Azure平台
- CCApplicationProtocol(以下纯虚:应用开始函数applicationDidFinishLauncing-负责初始化导演场景、应用进入后台、前台函数、帧数设置函数、得到当前语言、平台
- Xcode 证书生成、设置、应用(转)
- 【Android】如何设置应用强制横屏或竖屏
- 信息系统开发平台OpenExpressApp -如何部署OEA应用
- 如何测试纯软双机是否能稳定在应用平台上
- 应用场景应该如何选择适合的区块链底层技术平台?
- iOS: 分步演示如何将iPhone应用移植至iPad平台
- XCode 4.3.2 如何新建 Window-based Application应用的简单例子
- XCODE如何像VS(visual studio)一样设置监视变量
- 如何设置iMatrix平台中列表标签(gridjqGrid)的查询
- 【监控】数据平台运营实战之如何打造应用级别的监控系统
- XCODE 4.5 IOS多语言设置 及NSLocalizedString和NSLocalizedStringFromTable的用法。
- 如何从传统应用到云应用平台(JSAAS)
- UCML平台中 如何设置列表单元格中的链接失效