IOS中的国际化(一)

序言:IOS中,如果系统的语言或者地区变化了,我们怎样让App中显示的语言, 日期,数字,货币单位的格式随着变化呢?下面将介绍IOS中简单的国际化的方法:

然后点开StoryBoard,你会发现里面的控件都非常简单。为了国际话,我们需要往项目中再添加一门语言。添加语言的方式是,Project--->Info--->Localizations点击"+"来添加相应语言,这里我们选择Chinese(simplified)简体中文。然后将弹出的对话框中的LaunchScreen.strings和main.storyBoard都勾选了。这样我们的基本工作就完成了,下面正式开始

  1. 创建.strings文件,点击command + N 新建文件,在Resouce中选择Strings File文件,命名为Localizable,这样系统就会在不同语言环境下选择不同的.strings文件进行加载,显示不同的语言。
  2. 点击Localizable.strings文件,点击右侧的Localization按钮,然后选择需要本地化的语言,选择汉语,然后再次点击Localizable.strings,你会发现右侧的Localizattion下面多了几个选择语言的选项,Base,English,Chinese(simplified)选中English,然后就会发现又多了一个.strings文件。
  3. 对不同的.string文件配置不同的Value值,在.string中配置的格式是"KEY" = "VALUE";,  注意最后的分号。我们在localizable.strings(English)中加上

    1 "I write %@ lines every day." = "I write %@ lines every day.";
    2 "Do you like coding ?" = "Do you like coding ?";

    在Localizable.strings(Chinese simplified)中添加

    "I write %@ lines every day." = "我每天写%@行代码。";
    "Do you like coding ?" = "你喜欢编程吗?";
  4. 在ViewController.m中改写相应的加载方法将原来的

    1  _viewControllerNumLabel.text = @"I write 1000000000 lines every day.";
    2     [_viewControllerLikeButotn setTitle:@"Do you like coding ?" forState:UIControlStateNormal];

    替换为:

    1     _viewControllerNumLabel.text = [NSString stringWithFormat:NSLocalizedString(@"I write %@ lines every day.", nil),@1000000000];
    2     [_viewControllerLikeButotn setTitle:NSLocalizedString(@"Do you like coding ?", nil) forState:UIControlStateNormal];

    这时候将系统的语言设置成简体中文,General -> International -> Language -> Chinese,然后再重新运行App,你会发现变其中的一个Label和一个Button上的文字改变了。

  5. 修改不同的图片。这时你会发现,有些时候,我们的图片上会有文字,这些文字是不能用代码改变的,所以这时要加载不同的图片,利用步骤4中的方法,我们给图片名用一个Key来表示,然后将不同的图片名作为value写在不同的.strings文件中,我们在English中加入:

    1 "imageName" = "english";

    我们在Chinese中加入:

    1 "imageName" = "chinese";

    其中english和chinese都是图片的文字,然后在ViewControlelr中添加如下代码

    1     _viewControllerImageView.image = [UIImage imageNamed:NSLocalizedString(@"imageName",nil)];

    这时,修改相应的语言就将会出现不同的图片。

  6. 修改没有被引出的控件的显示。点击Main.StoryBoard,你会发现下面有一个Main.strings(Chinese Simplified)文件,这时将里面有关Lable的代码:

    1 /* Class = "UILabel"; text = "Hello I am a Lable"; ObjectID = "zki-n6-dit"; */
    2 "zki-n6-dit.text" = "Hello I am a Lable";

    修改为:

    /* Class = "UILabel"; text = "Hello I am a Lable"; ObjectID = "zki-n6-dit"; */
    "zki-n6-dit.text" = "您好,我是一个Label";

    再次运行代码,你会发现这个时候没有用代码修改的Lable显示的内容也变了。

  7. 还有一个细节问题,数字的格式,运行App时候你会发现原来显示的格式是1000000000,但是我国用的数字表示方式应该是1,000,000,000,西班牙用的数字表示方式是:1.000.000.000,这个怎么国际化呢?这个时候需要在ViewController中添加如下代码:

    1     NSNumberFormatter *numberFormatter = [NSNumberFormatter new];
    2     numberFormatter.numberStyle =NSNumberFormatterDecimalStyle;
    3     NSString *numberString = [numberFormatter stringFromNumber:@1000000000];
    4
    5     _viewControllerNumLabel.text = [NSString stringWithFormat:NSLocalizedString(@"I write %@ lines every day.", nil),numberString];

    这里利用NSNumberFormatter来进行对数字格式的转化,这里需要注意,再运行App的时候需要将相应的地区也设置成相应的  General -> International -> Region Format -> China

  8. 如何让App显示的名字也国际化?这时需要添加一个plist文件InfoPlist.strings,然后将这个文件进行Localizable,在生成的相应的english和chinese中添加需要显示的App的名字,如:在Chinese的文件中添加:"CFBundleDisplayName" = "双语者",重新运行App就会发现App的名字也随着语言的改变也改变了。最后App的国际化结果为:
时间: 2024-10-13 21:59:09

IOS中的国际化(一)的相关文章

IOS中的国际化的使用(Xcode 6.0之后的使用步骤)

1.今天在网上找了一下资料,因为自己的项目要做国际化了,说实话刚开始什么都不懂什么是国际化呀,现在终于明白了什么是国际化,现在给大家说道一下国际化这个东西: 国际化就是我们在手机里面setting 里面选取不同的语言,在APP里面就会出现不同的语言: 以下是步骤: 2.创建一个demo ,如国际化demo: 3.创建一个Localizable.strings文件: 4.然后是对相应的Localizable.strings国际化: 5. 创建一个InfoPlist.strings :如上同样的步骤

IOS应用的国际化

IOS应用的国际化,主要分为3个部分: Info.plist 文件的国际化 .xib文件的国际化 .m文件的国际化 下面我就来一一说明. Info.plist 文件的国际化我们使用Xcode 4.5 创建一个新项目,会自动创建一个 en.lproj 目录,这个目录下存放的就是需要国际化的文件(默认为英文).下面,我们还需要创建中文国际化支持.1. 创建名为 zh-Hans.lproj 的目录2. 在项目的 Info.plist 文件中增加配置 Localizations, 添加英文和中文的支持:

实现iOS语言本地化/国际化

实现iOS语言本地化/国际化(图文详解) 前言 语言本地化,又叫做语言国际化.是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言.往往一些应用程序需要提供给多个国家的人群使用,或者一个国家有多种语言,这就要求应用程序所展示的文字.图片等信息,能够让讲不同语言的用户读懂.看懂.进而提出为同一个应用程序适配多种语言,也即是国际化.语言国际化之所以又叫做语言本地化,这是站在每个用户的角度而言的,是指能够让用户本地.本土人群能够看懂的语言信息,顾名思义,语言本地化.其

iOS中bundle的应用

iOS中的bundle用来保存图片.plist文件.nib文件.国际化文件等资源文件的,根据其应用分为OS X下的bundle工程[1]或target.bundle文件. bundle工程的创建参考文献1和文献2,使用bundle工程注意要先创建Workspace,然后再创建主工程,然后再创建bundle工程.文献1注意的地方1:我们需要修改scheme:Edit Scheme->Build->Add this bundle(点击左下角的+按钮,然后选中要加入的bundle).需要注意的地方2

IOS 应用程序国际化

一.什么是应用程序的国际化? 根据当前用户当前移动设备的语言自动将我们的app切换对应语言. 对于个人开发者而言国外市场比国内市场更加有价值些,毕竟国外的版权意识,付费理念较好些. 二.怎么做? 1.本地化应用程序名称 (1)应用程序名称的设置在 InfoPlist.strings文件中,而本地化的InofPlist.strings(simple Chinese)等在Xcode 5 之后只能在Project ->Info-> Localizations 中点击加号添加即可.操作如下图 (2)点

关于ios中的转码问题

一,历史介绍(不了解的值得一读) 1)GB2312.GBK与UTF-8的区别 首先,我们要明白,GB2312.GBK和UTF-8都是一种字符编码,除此之外,还有好多字符编码.只是对于我们中国人的网站来说,用这三种编码 比较多.简单的说一下,为什么要用编码,在计算机内,储存文本信息用ASC II码,每一个字符对应着唯一的ASCII码.最初计算机是由美国发明的,他们也用的是键盘和上面的字母,所以他们的字符ASCII好解决.但是我们中国 的就不同了,每个汉字要对应唯一的ASCII码.这样,就出来了国家

iOS中几种数据持久化方案

概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite 3 CoreData 沙盒 在介绍各种存储方法之前,有必要说明以下沙盒机制.iOS程序默认情况下只能访问程序自己的目录,这个目录被称为"沙盒". 1.结构 既然沙盒就是一个文件夹,那就看看里面有什么吧

iOS中UIWebView的使用详解

iOS中UIWebView的使用详解 一.初始化与三种加载方式 UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用的一种方式,通过一个网页URL来进行加载,这个URL可以是远程的也可以是本地的,例如我加载百度的主页:     UIWebView * view = [[UIWebView al

IOS中NSString的常见用法

iOS NSString的常用用法 //1.创建常量字符串. NSString *astring = @"This is a String!"; //2.创建空字符串,给予赋值. NSString *astring = [[NSString alloc] init]; astring = @"This is a String!"; //3.在以上方法中,提升速度:initWithString方法 NSString *astring = [[NSString allo