`
wangpengfei360
  • 浏览: 1058694 次
文章分类
社区版块
存档分类
最新评论

iPhone 的国际化

 
阅读更多

在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 ,则标签中的文本显示为英文了。

分享到:
评论

相关推荐

    liushuai#ddDoc#iPhone中使用NSLocalizedString实现国际化1

    一、获取系统所支持的国际化信息 二、在Xcode中建立多语言文档 三、在源代码中使用NSLocalizedString来引用国际化文件 四、使用Terminal

    iOS开发------程序实现国际化Localizable - iPhone手机开发技术文章 - 红黑联盟1

    iOS开发------程序实现国际化Localizable - iPhone手机开发技术文章 - 红黑联盟1

    iPhone高级编程:使用Mono Touch和.NET/C# 高清 pdf

    第12章介绍应用程序本地化和国际化编程;第13章介绍如何面向ipad编程:第14章介绍objective-c代码的阅读方法;第15章介绍将应用程序提交到应用程序商店涉及的所有过程和工作,还包括应用程序的推销途径与方法。 ...

    iPhone应用程序开发指南.中文.pdf

    国际化您的应用程序 32 性能和响应速度的调优 34 不要阻塞主线程 34 有效地使用内存 34 浮点数学运算的考虑 36 减少电力消耗 36 代码的优化 38 窗口和视图 39 什么是窗口和视图? 39 UIWindow的作用 39 UIView是作用...

    掌上中期v3.0 For iphone.zip

    掌上中期是一款针对中国国际期货市场投资用户开发的金融软件,它集中了实时行情、快速交易等功能,更有中期精英研究师为您提供的研究资讯及投资指导视频。  掌上中期通是手机期货交易软件的领先者。掌上中期在同类...

    Spring Boot 全局配置国际化时区转换

    序列化参数的时候,自动将全球用户所在时区的时间转为服务器时区的时间;反序列化的时候,自动将服务器时区的时间转为全球用户所在时区的时间

    针对国际化做的类,可以在应用程序中选择跟随系统,简体,繁体(iPhone源代码)

    来源:github/WhdeLocalizedLicence:MIT作者:海浪whde ... 针对国际化做的类,可以在应用程序中选择跟随系统,简体,繁体; 本程序添加有English,简体,繁体,想要做更多国际化语言,可以自己添加更多;

    iTunesConnect开发者使用指南

    介绍 本文档的组织结构 关于本版本 ...国际化 程序大小(仅iOS程序) 其他的促销信息 宣传海报 程序管理 附录 A:程序信息表格 附录 B:游戏中心信息表格 附录 C:设备兼容矩阵 附录 D:版本变更记录

    skype网络电话

    根据TeleGeography研究数据显示,2010年Skype通话时长已占全球国际通话总时长的25%。Skype 用户免费通话时长和计费时长累计已经超过了2500亿分钟。37%的Skype用户用其作为商业用途,超过15%的iPhone 和iPod touch ...

    Esale服装连锁销售管理软件

    适用于多店面连锁加盟网络化管理,行业包括:服装、内衣、鞋类、床上用品,婴幼用品以及饰品销售,小商品销售。 软件支持手机APP ,Iphone,android以及Ipad 等都有相应的APP配合进行报表查询和管理。软件支持微信...

    Esale服装销售软件-批发专用版

    适用于多店面网络化管理,行业包括:服装、内衣、鞋类、床上用品,婴幼用品以及饰品销售,小商品销售。 软件支持手机APP ,Iphone,android以及Ipad 等都有相应的APP配合进行报表查询和管理。软件支持微信扫码支付...

    iPad应用开发实践指南

    本书在国外iOS开发者社区内颇受推崇,由资深的iOS开发工程师撰写,国际Mac和iPhone开发者社区CocoaHeads联合创始人Mark Dalrymple等数位专家联袂推荐!相比同类书,它有两大特色:第一,全书以一个真实的PhotoWheel...

    TOM-Skype v5.8.4.64 官方中文正式版.zip

    TOM-Skype是全球唯一一款定制化版本,专为中国用户量身定制。中国区是Skype全球用户最活跃的地区之一。 功能优势: Skype除具有即时通讯软件所需的基本功能之外,还可免费在线语音视频通话,支持全球Skype好友...

    供应链需求预测赛题数据集与TOP10模型方法 该资源考为虑商品制造、航运、商品入仓等链路过程中一个远期的商品销售预测模型方案

    不同于国内电商物流情况,出海电商的产品生产和销售地区是全球化的,商品的采购,运输,海关质检等,整个商品准备链路需要更长的时间。在大数据和人工智能技术快速发展的新时代背景下,运用大数据分析和算法技术,...

    WhatsApp v0.2.6426 电脑版.zip

    ★ 更多优点:您可以分享地址、交换联络人资料、设置个性化墙纸、个性化通知铃声、横向显示模式、精确的信息发送时间记录、电子邮件备份聊天记录,以及可同时向多位联络人发送普通信息或多媒体信息等服务。...

    LFImagePickerController:一个支持多选图片和视频的图片选择器,同时有预览、编辑功能

    支持国际化配置(复制LFImagePickerController.bundle\LFImagePickerController.strings到项目中,修改对应的值即可;详情见DEMO;注意:不跟随系统语言切换显示) 详细使用见LFImagePickerController.h 的初始化...

    步步高手机小组调研报告.doc

    步步高手机调研报告 李松昱 步步高手机致力于为消费者打造专业级的完美音质,产品采用BBE音频增强和复原技术, SRS声场还原技术及YAMAHA的Non- clip防破音技术,并联合MTV为消费者提供国际化,专业、潮流的音乐体验...

    先锋Android Market CMS内容管理系统 X1.0.zip

    3、样式和内容分离:系统主体框架div css结构,遵循国际最新W3C网页设计标准,兼容IE系列、火狐等主流浏览器,内容和样式分离让网站风格可以轻松修改和更换,而不会导致内容和结构的破坏。 4、周密的安全策略和攻击...

    Skype Setup 5.1.4.82.zip

    根据TeleGeography研究数据显示,2010年Skype通话时长已占全球国际通话总时长的25%。Skype 用户免费通话时长和计费时长累计已经超过了2500亿分钟。37%的Skype用户用其作为商业用途,超过15%的iPhone 和iPod touch ...

    summer-swift:使用Google Firestore用Swift编写的会议事件风格的iOS应用

    锁屏 手表套件 国际化和本地化建筑学使用持久且简单的数据存储使用Mapper清晰,简单地映射到对象使用Swinject和SwinjectStoryboard进行依赖注入使用PlayerKit嵌入视频带有Atributika的HTML富文本格式使用...

Global site tag (gtag.js) - Google Analytics