在iPhone项目中如何才能国际化?难道同一个项目,非要写一个英文版的源代码,再写一个中文版的源代码?
其实大可不必。我们可以使用iPhone的多语言支持来实现项目的本地(国际)化。
1、新建Windows-base
Application。打开main.m文件,在main函数中增加代码如下:
//
取得用户默认信息
NSUserDefaults
*defaults = [
NSUserDefaults
standardUserDefaults
];
//
取得
iPhone
支持的所有语言设置
NSArray
*languages = [defaults
objectForKey
:
@"AppleLanguages"
];
NSLog
(
@"%@"
,
languages);
运行程序,从
console
中输出如下内容:
"zh-Hans",
en,
fr,
de,
"zh-Hant",
……
可以看到,
iPhone
设备上支持的所有语言,有英、法、德,还有两个
”zh”
开头的语言(简体/繁体)。我们知道,以
”zh”
开头的就是中文。
2
、在
Resources
上右键,
Add
à
New File
,文件类型选择
Resource->Strings File
,文件名为
Localizable.strings
。在该文件上使用
getInfo
命令,在如下界面中点击
Make File Localizable
按钮:
然后
,
你去
Finder
中查看工程目录,会发现多了一个
English.lproj
的目录,其下有一个
Localizable.strings
文件(不过其中的内容是空的)。
再次打开
getInfo
窗口,显示如下界面:
可以看见
Localizations
列表中只有一个语言
English
,我们需要点击
Add Localization
按钮,增加中文
zh_CN
:
这时,你再去
Finder
中查看工程目录,发现又多了一个
zh_CN.lproj
的目录,其下也有一个
Localizable.strings
文件(内容也是空的)。
同时,在
Target
下的
Copy Bundle Resources
目录下多出两个不同语言版本的
Localizabel.strings
文件(一个
English
,一个
zh_CN
):
3
、打开
MainWindow.xib
,拖一个
UILable
到
window
中。
4
、打开
AppDelegate.h
文件,在其中申明
UILable
变量并增加一个
IBOutlet
:
UILabel
*
label
;
……
@property
(
nonatomic
,
retain
)
IBOutlet
UILabel* label;
5
、打开
AppDelegate.m
文件,
@synthesize
window,label;
在
(
BOOL
)applicationv:application
didFinishLaunchingWithOptionsv:
方法中增加代码:
//
使用NSLocalizedString函数根据iPhone的多语言设置获取国际化的字符串
label
.
text
=
NSLocalizedString
(
@"Localizable
Test"
,
@""
);
6
、回到
IB
,将
UILable
控件和
IBOutlet
变量
label
进行连接:
7
、打开终端程序,进入工程目录,运行命令:
genstrings -o
English.lproj ./classes/*.m
你会发现
English.lproj
目录下的那个
Localizable.strings
文件中增加了一行代码:
"Localizable Test"
=
"Localizable Test"
;
再运行命令:
genstrings -o zh_CN.lproj
./classes/*.m
同样
,
在
zh_CN.lproj
目录下的那个
Localizable.strings
文件中也会增加一行代码:
"Localizable Test"
=
"Localizable Test"
;
打开
zh_CN.lproj
目录下的
Localizable.strings
(双击),修改为
"Localizable Test"
=
"
本地化测试
"
;
这样,每当源代码有改变后,我们都需要用
genstrings
命令重新生成
Localizable.strings
文件。但是,每次重新生成后,原来的编辑(翻译)结果又不见了,我们又必须重头翻译。这是个很大的麻烦,建议以后每次
genstrings
之前把文件进行备份,减少重复工作。
8
、运行程序,效果如下(如果模拟器的多语言设置为简体中文):
当你把多语言设置改为
English
,则标签中的文本显示为英文了。
分享到:
相关推荐
一、获取系统所支持的国际化信息 二、在Xcode中建立多语言文档 三、在源代码中使用NSLocalizedString来引用国际化文件 四、使用Terminal
iOS开发------程序实现国际化Localizable - iPhone手机开发技术文章 - 红黑联盟1
第12章介绍应用程序本地化和国际化编程;第13章介绍如何面向ipad编程:第14章介绍objective-c代码的阅读方法;第15章介绍将应用程序提交到应用程序商店涉及的所有过程和工作,还包括应用程序的推销途径与方法。 ...
国际化您的应用程序 32 性能和响应速度的调优 34 不要阻塞主线程 34 有效地使用内存 34 浮点数学运算的考虑 36 减少电力消耗 36 代码的优化 38 窗口和视图 39 什么是窗口和视图? 39 UIWindow的作用 39 UIView是作用...
掌上中期是一款针对中国国际期货市场投资用户开发的金融软件,它集中了实时行情、快速交易等功能,更有中期精英研究师为您提供的研究资讯及投资指导视频。 掌上中期通是手机期货交易软件的领先者。掌上中期在同类...
序列化参数的时候,自动将全球用户所在时区的时间转为服务器时区的时间;反序列化的时候,自动将服务器时区的时间转为全球用户所在时区的时间
来源:github/WhdeLocalizedLicence:MIT作者:海浪whde ... 针对国际化做的类,可以在应用程序中选择跟随系统,简体,繁体; 本程序添加有English,简体,繁体,想要做更多国际化语言,可以自己添加更多;
介绍 本文档的组织结构 关于本版本 ...国际化 程序大小(仅iOS程序) 其他的促销信息 宣传海报 程序管理 附录 A:程序信息表格 附录 B:游戏中心信息表格 附录 C:设备兼容矩阵 附录 D:版本变更记录
根据TeleGeography研究数据显示,2010年Skype通话时长已占全球国际通话总时长的25%。Skype 用户免费通话时长和计费时长累计已经超过了2500亿分钟。37%的Skype用户用其作为商业用途,超过15%的iPhone 和iPod touch ...
适用于多店面连锁加盟网络化管理,行业包括:服装、内衣、鞋类、床上用品,婴幼用品以及饰品销售,小商品销售。 软件支持手机APP ,Iphone,android以及Ipad 等都有相应的APP配合进行报表查询和管理。软件支持微信...
适用于多店面网络化管理,行业包括:服装、内衣、鞋类、床上用品,婴幼用品以及饰品销售,小商品销售。 软件支持手机APP ,Iphone,android以及Ipad 等都有相应的APP配合进行报表查询和管理。软件支持微信扫码支付...
本书在国外iOS开发者社区内颇受推崇,由资深的iOS开发工程师撰写,国际Mac和iPhone开发者社区CocoaHeads联合创始人Mark Dalrymple等数位专家联袂推荐!相比同类书,它有两大特色:第一,全书以一个真实的PhotoWheel...
TOM-Skype是全球唯一一款定制化版本,专为中国用户量身定制。中国区是Skype全球用户最活跃的地区之一。 功能优势: Skype除具有即时通讯软件所需的基本功能之外,还可免费在线语音视频通话,支持全球Skype好友...
不同于国内电商物流情况,出海电商的产品生产和销售地区是全球化的,商品的采购,运输,海关质检等,整个商品准备链路需要更长的时间。在大数据和人工智能技术快速发展的新时代背景下,运用大数据分析和算法技术,...
★ 更多优点:您可以分享地址、交换联络人资料、设置个性化墙纸、个性化通知铃声、横向显示模式、精确的信息发送时间记录、电子邮件备份聊天记录,以及可同时向多位联络人发送普通信息或多媒体信息等服务。...
支持国际化配置(复制LFImagePickerController.bundle\LFImagePickerController.strings到项目中,修改对应的值即可;详情见DEMO;注意:不跟随系统语言切换显示) 详细使用见LFImagePickerController.h 的初始化...
步步高手机调研报告 李松昱 步步高手机致力于为消费者打造专业级的完美音质,产品采用BBE音频增强和复原技术, SRS声场还原技术及YAMAHA的Non- clip防破音技术,并联合MTV为消费者提供国际化,专业、潮流的音乐体验...
3、样式和内容分离:系统主体框架div css结构,遵循国际最新W3C网页设计标准,兼容IE系列、火狐等主流浏览器,内容和样式分离让网站风格可以轻松修改和更换,而不会导致内容和结构的破坏。 4、周密的安全策略和攻击...
根据TeleGeography研究数据显示,2010年Skype通话时长已占全球国际通话总时长的25%。Skype 用户免费通话时长和计费时长累计已经超过了2500亿分钟。37%的Skype用户用其作为商业用途,超过15%的iPhone 和iPod touch ...
锁屏 手表套件 国际化和本地化建筑学使用持久且简单的数据存储使用Mapper清晰,简单地映射到对象使用Swinject和SwinjectStoryboard进行依赖注入使用PlayerKit嵌入视频带有Atributika的HTML富文本格式使用...