xcode4.5应用程序本地化
我们在开发一款APP的时候,总是会涉及应用程序国际化的事情,用ios里专业术语叫做本地化,其实都是一个意思,简而言之就是不同的系统语言,显示不同的应用名称、字符串名称、图片名称、等等,除了代码,ios几乎可以本地化所有类型的文件。
那么接下来我就记录下来ios如何快速本地化项目,【记住千万不要把说明文字直接以字符形式写到各个.m文件中,或是统一都编写成静态字符串,这些都是不利于本地化的,等以后需要维护时,项目需求不同语言版本时,会很费事】。
一、本地化应用程序名称
首先我创建了一个simple Application,应用程序默认语言是:english;APP名称默认为创建项目的名称。我们打开应用程序-info.plist清单文件:空白处右键,选择Show Raw Keys/Values,就会看到应用程序名实际为CFBundleDisplayName,如下图所示,【注意:CFbundleName并不是APP名称的属性,而是CFbundleDisplayName】
接下来,开始给APP添加一个chinese语言支持,选中项目-Project-Localization-Add,如下图:
弹出的界面让我们选择需要本地化的文件,infoPlist.strings是必不可少的,使用这个才能设置不同的APP名称,ViewController我们暂且先够选上,一会本地化xib的时候需要用到,如下图:
然后展开infoPlist.strings文件(Engilsh),里添加:CFBundleDisplayName="Localized",英文环境下会显示这个名称,chinese里添加:CFBundleDisplayName="本地化",这是中文环境下显示的名称,如下图:
保存一下,再次运行APP,然后切换一下系统语言,会发现APP显示我们设置的名称(如果发现没有改变,是因为缓存的缘故,尝试-Project-clean一下,然后设备中删除我们的demo,再来build)
二、本地化xib文件
选中要本地化的xib文件,在右边的属性检查器视图中会发现多了一个localization选项,勾选我们要本地化的语言,会发现这个xib变成了和infoPlist.strings一样的列表:xib(English)、xib(chinese),我们可以在各自的xib中创建不同语言所显示的界面,等到APP需要显示此xib时,系统会首先寻找当前语言下的xib文件,如下图所示:
三、本地化字符串
本地化字符串需要一个Localize.settings文件,在代码中需要输入字符串的地方使用NSLocalizeString宏来定义字符串。
原理:在代码中将加入的字符串加入NSLocalizeString宏中,启动程序时,系统将根据语言加载相应的文件得到其对应的字符串文件,这个字符串可以通过系统将NSLocalizedString中的宏生成名为“Localizable.strings”的文件,当然你可以自己去创建这个文件,然后手动是添加对应的字符串。
我们先手动创建这个文件:选中项目-new file - Resource-Stringfile
命名一定要是:Localizable
然后选中创建的Localizable.strings文件,在属性检查器的localization项点击-Localizae,我们先添加English的本地化,再添加chinese的本地化。
现在发现这个文件也变成了English和Chinese两个,那么我们在各自文件中写入:
继续在代码的viewdidload中,需要设置字符串的地方:
NSlocalizeString第一个参数是内容,第二个参数是在系统生成Localize.strings文件时,生成的注释,不需要的话可以设置为nil
看一下效果:
四、图片资源的本地化
我们可以向本地话字符串一样,把中英文图片的名字分别存到中英文对应的strings文件,然后通过NSLocalizedStringFromTable来获取图片名称。
选中要本地化的图片,在右边的Inspector中 Localization下,点击localize...
继续上一次一样的操作,添加English和chinese,我们发现这个图片资源也分成了english和chinese的版本,如下图:
继续要做的是给chinese的文件设置(替换成)其语言下的图片资源,如下:
保存-clean后运行看一下:
同样的avator.png图片资源,在不同的语言环境下,显示不一样的图片资源,很不错吧?
转载自:http://www.2cto.com/kf/201306/216891.html
xcode4.5应用程序本地化的更多相关文章
- iOS 应用程序本地化
由于iPhone,iPad等苹果产品在全世界范围内的广泛流行,那么通过App Store下载应用程序的用户也将是来自世界范围的人们,所以开发者在开发过程中势必要考虑到不同语言环境下用户使用,好在iOS ...
- iOS应用程序本地化
一.简介 * 使用本地化功能,可以轻松地将应用程序翻译成多种语言,甚至可以翻译成同一语言的多种方言 * 如果要添加本地化功能,需要为每种支持的语言创建一个子目录,称为”本地化文件夹”,通常使用.lpr ...
- app应用程序本地化--备用
一.简介 * 使用本地化功能,可以轻松地将应用程序翻译成多种语言,甚至可以翻译成同一语言的多种方言 * 如果要添加本地化功能,需要为每种支持的语言创建一个子目录,称为”本地化文件夹”,通常使用.lpr ...
- C#控制台程序本地化应用(Localization)
本地化在百度百科上的解释如下: “软件本地化是指将某一产品的用户界面(UI)和辅助材料(文档资料和在线帮助菜单)从其原产国语言向另一种语言转化,使之适应某一外国语言和文化的过程.” 其原理主要是把相同 ...
- 在Xcode4中给程序提供命令行参数(转)
网上xcode4的资料实在是不多,再加上xcode4相对3的改动还那么大,并且还只有英文版.我为了这个问题头痛了很久.后来终于找到了...方法如下 xcode菜单的Product->EditSc ...
- C# Winform程序本地化应用
1. 创建一个WinForm应用程序 – “WindowsFormsLocalizationTest”. 2. 在主窗体属性栏里,把Localizable属性设置成”True”. 3. 添加两个But ...
- iOS本地化应用程序
因为使用的是xcode4,应用程序本地化的问题跟以前的版本还是有些不同,在网上找了些资料对于xcode4以上的版本资料还是相对较少,有些最后要通过手动创建文件,这样操作实在是太麻烦,所以经过一个下午的 ...
- ASP.NET Core 中文文档 第三章 原理(6)全球化与本地化
原文:Globalization and localization 作者:Rick Anderson.Damien Bowden.Bart Calixto.Nadeem Afana 翻译:谢炀(Kil ...
- iOS开发——高级技术&本地化与国际化详解
本地化与国际化详解 效果如下: 英语: 中文: 具体实现如下: ...
随机推荐
- java中好玩的案例
1:实现猜数字游戏, 如果没有猜对可以继续输入你猜的数字,如果猜对了停止程序. 最多只能猜三次,如果还剩下最后一次机会的时候要提醒用户. 代码: Random random = new Random( ...
- SMTP邮件发送命令
第一步,远程登录smtp服务器 在命令行窗口输入 telnet smtp.163.com 25 然后回车第二步,用户登录 输入 helo 163.com 回车,这是向服务器表明你的用户身份250 OK ...
- Android开发-API指南-<data>
<data> 英文原文:http://developer.android.com/guide/topics/manifest/data-element.html 采集(更新)日期:2014 ...
- Effective Modern C++翻译(3)-条款2:明白auto类型推导
条款2 明白auto类型推导 如果你已经读完了条款1中有关模板类型推导的内容,那么你几乎已经知道了所有关于auto类型推导的事情,因为除了一个古怪的例外,auto的类型推导规则和模板的类型推导规则是一 ...
- flex的Cairngorm框架
由于要写flex的项目,接触了一段时间的Cairngorm框架,初步认识它是flex的一个mvc结构的框架实现了页面,调用相应方法的控制,和后台交互之间的三层之间的联系.Cairngorm框架主要包括 ...
- 【测试】DG的主切备,备切主
1.首先要应用日志,保持主备库一致: 备库:SBDB@SYS> recover managed standby database using current logfile disconnect ...
- 学习资料 经典SQL语句大全
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...
- oracle学习系列之四 (视图)
视图视图是数据库中特有的对象.视图用于存储查询,但不会存储数据(物化视图除外).这是视图和数据表的重要区别.可以利用视图进行查询,插入,更新和删除数据.Oracle有如下四种视图(关系视图,内嵌视图, ...
- JS判断对象是否存在的方法
Javascript语言的设计不够严谨,很多地方一不小心就会出错. 举例来说,请考虑以下情况. 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言描述的算法如下: ...
- [转载]word尾注插入参考文献——前人经验+自己总结
1. 以尾注的方式插入第一个参考文献. 将光标定位于word文档中将要插入参考文献的位置,按“插入/引用/脚注和尾注”.出现一菜单,选择“尾注”,“文档结尾”,编号格式为“1,2,3”.按“插入”按钮 ...