iOS-多语言版本的开发(一)(转载)

引言

?多语言 & 本地化,随你怎么叫,道理差不多;一个App 要想走出国门,只支持一种语言是不能够的,也是不可能的,多元化世界已经融入我们的生活,对于一些应用,开发多语言版本,已经是不可避免的,特别是旅游等方面的应用;国内也有很多App 已经接入多语言,例如:支付宝、微信、收留我(嘻嘻,做下广告)等;

开发多语言,一般有两种情况

1、App还没有开始写,这个时候创建一个多语言版本,很是容易,然后再写代码的时候稍微留意下哪里需要保持多语言就行了;
2、App已经上线了,而且之前没有任何的为开发多语言准备过,这时候Boss让开发多语言版本,这下你就苦逼了,想想项目中长长短短的中文字符串,没有上千也得上几百了吧,在想想一个一个替换,哎呀妈呀,那么多,想想都想死了,在想想还容易出错,哎呀妈呀,让我死了算了;

别急,这次我就针对两种情况都讲解下;

项目刚开始启动

1、新建一个项目(我就不多说了)

2、command + N 添加多语言文件,如下图

3、添加多语言,如图

选择English 点击Localize

到这里已经算是添加好了多语言文件,接下来就是添加多语言

之前的XCode(具体到哪一个版本之前,不清楚了,我使用的是XCode7),是可以在如下图中直接点击?号 ,添加多语言的

现在需要进入项目的Project中的Localizations 中进行添加,如图

我只添加了中文繁体,简体,以及英文,Demo使用的StoryBoard, 而添加多语言时,我没有选择为StoryBoard添加多语言版本的,毕竟是Demo??;但是不影响使用。

到这里多语言文件中会出现如上图中的三个.strings 后缀的文件,这就是多语言对应的文件了,多语言添加的方式类似,字典 key=value 一一对应的关系,key 在三个.strings 中必须一致,而value 则分别对应不同的语言字体,即可;

4、多语言文件的使用

现分别在不同的语言文件中添加如下测试文本:

"showTxt"="this is test text";
"showTxt"="这是一个测试的文本";
"showTxt"="這是一個測試的文本";

说到使用,就要了解下NSLocalizedString 是什么

 #define NSLocalizedString(key, comment)         [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
 #define NSLocalizedStringFromTable(key, tbl, comment)         [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:(tbl)]
 #define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment)         [bundle localizedStringForKey:(key) value:@"" table:(tbl)]
 #define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment)         [bundle localizedStringForKey:(key) value:(val) table:(tbl)] 

其实就是宏,而宏定义的又是在资源文件中寻找对应的资源文件;在这里有个坑点,当你使用第一种实现多语言本地化,意味着你的多语言文件名字必须Localizable,否则你的多语言实现,到最后显示的却只能是key

第一种适合于,让应用跟随系统的语言版本进行切换,而用户却不能手动进行切换; 我们要实现的是既可以跟随系统,又可以用户自己切换,就不能使用这一个了,那就要使用第二种NSLocalizedStringFromTable(key, tbl, comment)?tbl这个参数,就是我们自己命名的多语言文件名称;

因此我们暂且这样使用(这样直接使用,会跟随系统语言):

NSLocalizedStringFromTable(@"showTxt", @"ASLocalized", nil);

参数说明
第一个参数,是多语言中的key,
第二个参数,是多语言文件的名字,
第三个是对key注释说明,一般为nil就可以了;

注意:
对于这样使用NSLocalizedString("showTxt", nil) ,切记多语言文件名必须Localizable, 这里我们就不可以使用这种了;

到这里,就可以实现简单的跟随系统语言的多语言版本了;

效果图如下:
系统语言在简体中文下:

系统语言在英文下:

转载自:http://www.devashen.com/blog/2016/01/14/localized01/

时间: 2024-12-09 14:08:29

iOS-多语言版本的开发(一)(转载)的相关文章

ios-多语言版本开发(三)(转载)

写在前面 ?iOS 多语言版本的开发(二)中我们实现了如何让用户自己去切换系统语言的功能,我们还写了Demo 以供辅助学习:但是,继以上两篇文章都是建立在项目刚刚启动或启动不久,项目中存在的中文字符串还不是很多,手动改起来也还可以接受; 那么问题来了,如果项目已经竣工或者已经迭代几个版本了,那该如何实现了?手动改起来也不太现实,耗时耗力不讨好的手动,在这里就不用考虑了. 不让考虑,是因为我有更简单快捷高效的方法,让我慢慢与您道来: 如何辨别项目中的中文字符串? ?既然要替换项目中使用到的中文字符

iOS-多语言版本开发(二)(转载)

题记 ??iOS 多语言版本的开发(一) 中我们完成了让应用跟随系统语言进行切换,而用户自己却不能切换的功能,也基本上算是实现了多语言版本:可是,对于某些应用来说,实现跟随系统语言切换的同时, 也想要实现让用户自己选择应用语言版本的功能:针对这种情况,利用这篇文章来写写如何让用户自己切换应用语言版本: 语言文件存在的形式 想要实现用户自己手动切换语言版本,就先要了解语言文件在资源文件中存在的形式; 如图中,不管是英语(en.lproj).简体(zh-Hans.lproj).还是繁体(zh-Han

android 多语言版本开发

最近项目中用用到语言切换功能,第一想到的就是资源文件,没错. 在资源文件中新建一个文件夹values-en,en表示英语,有一些还细化到地区,如values-en-rUS 即美国地区的英语,r是必需的.在里面新建一个strings.xml,把默认values文件夹中的strings.xml中的内容Copy至values-en中的strings.xml,再把该文件夹中的中文内容转换为英文,例如<string name="set">设置</string>转换为<

iOS多语言(国际化)开发(跟随系统 + APP内手动设置)

一:跟随系统切换语言 1>创建好项目工程后, 新建一个多语言文件: 2>添加要设置的语言类型: 3>添加成功 细心的朋友可能会发现在English后面写的是3 Files Localized,这是因为英语是系统默认添加的,而且同时为Main.storyboard 和 LaunchScreen.storyboard设置了多语言,我在自己添加的时候没有勾选这两项. 3>使用多语言文件在应用内设置对应语言 "label"="label"; &quo

Android开发实用技巧:判断当前系统语言版本

Locale locale = getResources().getConfiguration().locale; String language = locale.getLanguage(); 以上代码可以获取到当前系统的语言码,中文的语言码为ch,英文的语言码为en,完整的语言码如下: bn_BD孟加拉语(孟加拉)  bo_CN 博多语(中国)  bo_IN 博多语(印度)  ce_PH 塞布安诺语(菲律宾)  de_LI 德语(列支敦士登)  fa_AF 波斯语(阿富汗)  fa_IR 波

iOS将产品进行多语言发布,开发

多语言就是程序的国际化.在Xcode中要实现程序的国际化,只需要简单配置,并修改相应的字符串键值对即可. 应用程序的国际化主要包括三个方面:A.程序名称国际化:B.程序内容国际化:C.程序资源国际化 1,Xcode新建项目后,info选项卡中找到Localization的项目,可以添加应用程序需要支持的国际语言. 2,应用名称国际化(InfoPlist.strings) 在InfoPList.strings的不同语言版本的文件中设置相应语言下程序的显示名称 3,内容国际化(Localizable

iOS Developer:真机测试(转载)

目录[-] 一.真机调试所需材料说明 二.开始申请 三.添加App ID 四.添加设备(Devices) 五.添加证书(Certificates) 六.添加描述文件(Provisioning Profiles) 七.配置XCode 八.P12导出证书 转载请注明出处,原文地址http://my.oschina.net/joanfen/blog/167730 如果本文不能解决您的问题请移步:http://my.oschina.net/u/1245365/blog/196420 关于证书选项呈灰色的

《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营

编写Hello World应用程序通常被认为,是学习任何编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,快速了解Xcode这个开发iOS应用程序的主要工具. 下一步,你将学习Objective-C的基础知识.在此基础之上,将探索类(class)与对象(object)的知识,它们是构建应用程序的主要基石.与此同时,你将创建CarValet应用程序,练习一些类的编写,并学习属性(property)的知识.在本章末尾,你将在指导下完成编程挑战题以探索子类扩展的知识

iOS多语言备选机制

近期伊书突然接到一些外国用户的投诉,说伊书界面变成了中文,但他们系统语言不是中文,是法文俄文日文等,伊书只支持中文跟英文,在不支持系统所用语言的时候,理应会自动选用英文,不知为什么会选成了中文,经过艰难困苦的重重排查,终于找到原因,知道了iOS多语言备选的规则. 主要有两个影响因素,一是CFBundleDevelopmentRegion(Info.plist的一个字段),二是iOS8新增的系统首选语言列表: iOS8 语言与地区 在iOS7及之前版本,系统只能设置一种语言,如果APP不支持系统设