本地化与国际化详解
效果如下:
 
英语:                                                                    中文:

具体实现如下:
 
一。先做准备:设置程序本地化
在xcode点击程序图标:点击Info选项->Localizationn,点击“+”,选择要添加的语言,简体中文选择Chinese(zh-Hans)
你会在你工程目录下发现多了个文件夹,“zh-Hans.lproj",x-code使用.lproj作为其本地化文件夹的扩展名。
二。设置xib文件本地化,
图像本地化的方法是一样道理的,可以根据用户的显示语言加载不同的xib文件
操作:点击xib文件,在IB窗口中选择选项选择“File Inspecter",也就是第一个选项,选择“Localization->"+"选择添加的语言,
效果如下,原来的xib文件就会出现三角形,其下有两个文件,因为我的为storyboard,但效果是一样的。就可以实现将其本地化了,非常简单吧
三。设置应用程序名本地化,
       设置应用程序名存储在应用程序的Info.plist文件中,我们例子实际上为Localize-Info.plist,选择文件,并不需要对文件进行 本地化,而是使"Info.strings"本地化就可以了,在Localize.Info.plist,空白处右键,选择Show Raw Keys/Values,就会看到应用程序名实际为CFBundleDisplayName,我们只需要在对应的 Info.plist中添加以下代码就可以了
英文版:C代码
  1. CFBundleDisplayName = "Localization";

复制代码

C代码

  1. CFBundleDisplayName = "本地化";

复制代码


效果图:
四、加载的字符串本地化,
       原理:在代码中将加入的字符串加入NSLocalizeString宏中,启动程序时,系统将根据语言加载相应的文件得到其对应的字符串文件,这个字符 串可以通过系统将NSLocalizedString中的宏生成名为“Localizable.strings”的文件,当然你可以自己去创建这个文件, 然后手动是添加对应的字符串。,
  1. labelName.text = NSLocalizedString(@"Name", @"The name is ");
  2. labelPassword.text  = NSLocalizedString(@"Password:",@"The password is");

复制代码

NSlocalizeString 第一个参数是内容,第二个参数将会转化为字符串文件里的注释。
转化方法如下 :先关闭项目,打开终端,进入到项目的目录,输入genStrings 文件名.m就可以将该文件中的宏转化为相应的字符串文件,
效果如下:会看到生成"Localizable.strings",
打开文件,就可以交给翻译人员去翻译了
===================
1、本地化字符串,网上那些方法我就不说了,我只更正一点:如果你的Classes下面有子文件夹会报错,使用下面的命令:
find . -name *.m | xargs genstrings -o /Users/apple/(你目标的文件夹)
2、本地化软件的名字:
(1)在info.plist文件里做如下设置:
(2)创建一个InfoPlist.strings文件,里面写如下内容:
"CFBundleDisplayName"="你软件的名称";
"CFBundleName"="你软件的名称";
(3)本地化这个文件即可。
3、本地化资源,不必细说了,网上资料很多,这里我只说下我的疑惑:图片资源貌似只能用zh-Hans。
4、本地化icon,目前不支持,所以不要费劲的去本地化icon了。
5、商店的本地化,也不必细说了,很简单,按照苹果需要的填就可以了。
 

应用genstrings和NSLocalizedString实现App文本的本地化
Admin
2012年3月20日

App本地化的须要不消讲大师也都熟悉打听,本文将介绍一种简单的办法来实现字符串的本地化。
在不推敲本地化的景象下,我们若是在代码中给一个Button定义title,一般会如许写:

btn.titleLable.text = @"Example Button";

也许我们已经写了很长的代码才推敲到本地化的题目,大可不必头疼,这时辰,我们要做的是把代码从头扫一遍,然后把每个会显示给用户看的字符串做如下批改:
(对于内部应用的字符串就用不着本地化了)

btn.titleLable.text = NSLocalizedString(@"btn_title", nil);

NSLocalizedString是一个定义在NSBundle.h中的宏,其用处是寻找当前体系说话对应的Localizable.strings文件中的某个key的值。
第一个参数是key的名字,第二个参数是对这个“键值对”的注释,在用genstrings对象生成Localizable.strings文件时会主动加上去。
到今朝为止,我们还没有生成Localizable.strings文件。这是一个逆向的过程,也就是先写好调用过程,再生成strings资料文件。
当我们把所有的.m文件都修发好了,就该genstrings对象出场了。
  1. 启动终端,进入工程地点目次。
  2. 新建两个目次,推荐放在资料目次下。
    目次名会感化到Localizable.strings文件对应的说话,不克不及写错了。这里zh-Hans指简体中文,重视不克不及用zh.lproj默示。

mkdir zh-Hans.lproj
mkdir en.lproj

  3. 生成Localizable.strings文件

genstrings -o zh-Hans.lproj *.m
genstrings -o en.lproj *.m

  -o <文件夹>,指定生成的Localizable.strings文件放置的目次。
  *.m,扫描所有的.m文件。这里支撑的文件还包含.h, .java等。
  4. 右键点击工程的Resources目次,选择“New Group”,添加两个目次zh-Hans.lproj和en.lproj。
  5. 在新建的group中添加方才生成的Localizable.strings文件。
  6. 最后在Localizable.strings文件中,批改每个key所对应的内容,就大功成功了。
说了一大堆,其实操纵起来还是很简单的,总的来讲就是两条:
  1. 在代码里用NSLocalizedString获取要本地化的字符串
  2. 用genstrings扫描代码文件,生成Localizable.strings,然后加到工程中。
 
 

五. 图片和其他资源文件

选中需要本地化的资源文件 -> 打开右边工具栏(Utilites) -> 在“Localization”栏目加入需要支持的语言。xcode会把资源文件拷贝到新加入语言的的目录下,把准备好的本地化文件替换掉xcode自动拷贝的文件即可。

 

iOS开发——高级技术&本地化与国际化详解的更多相关文章

  1. iOS开发——高级技术OC篇&运行时(Runtime)机制

    运行时(Runtime)机制 本文将会以笔者个人的小小研究为例总结一下关于iOS开发中运行时的使用和常用方法的介绍,关于跟多运行时相关技术请查看笔者之前写的运行时高级用法及相关语法或者查看响应官方文档 ...

  2. iOS开发——高级技术精选OC篇&Runtime之字典转模型实战

    Runtime之字典转模型实战 如果您还不知道什么是runtime,那么请先看看这几篇文章: http://www.cnblogs.com/iCocos/p/4734687.html http://w ...

  3. iOS开发——高级技术&广告服务

    广告服务 上 面也提到做iOS开发另一收益来源就是广告,在iOS上有很多广告服务可以集成,使用比较多的就是苹果的iAd.谷歌的Admob,下面简单演示一下如何 使用iAd来集成广告.使用iAd集成广告 ...

  4. iOS开发——高级技术&内购服务

    内购服务 大家都知道做iOS开发本身的收入有三种来源:出售应用.内购和广告.国内用户通常很少直接 购买应用,因此对于开发者而言(特别是个人开发者),内购和广告收入就成了主要的收入来源.内购营销模式,通 ...

  5. iOS开发——高级技术&签名机制

    签名机制 最近看了objc.io上第17期中的文章 <Inside Code Signing> 对应的中文翻译版 <代码签名探析> ,受益颇深,对iOS代码签名机制有了进一步的 ...

  6. iOS开发——高级技术&摇一摇功能的实现

    摇一摇功能的实现 在AppStore中多样化功能越来越多的被使用了,所以今天就开始介绍一些iOS开发的比较实用,但是我们接触的比较少的功能,我们先从摇一摇功能开始 在 UIResponder中存在这么 ...

  7. iOS开发——网络编程Swift篇&Alamofire详解

    Alamofire详解 预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 HTTP 网络开发工具包,相当于Swift实现AFNetworking版本. 当然,AF ...

  8. iOS开发——控制器OC篇&UINavigationController&UITabBarController详解

    UINavigationController&UITabBarController详解 一:UINavigationController 控制器的属性: UINavigationControl ...

  9. iOS开发——实用篇&KVO与KVC详解

    KVO与KVC详解 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby.Python的动态特性,例如动态类型.动态加载.动态绑定等.今天我们着重介绍ObjC中的键值编码(KVC ...

随机推荐

  1. python 小程序 查找最大的python文件

    使用os.path模块方法介绍 1. 扫描标准库目录     I 通过glob模块遍历一个目录下面的所有文件,glob接收shell中常用文件名模式语法:"?"代表任何单个字符,* ...

  2. Codeforces 144D Missile Silos 最短路

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  3. lua

    lua的语言特性: 1. lua 的table可以实现多种数据结构:数组.记录.线性表.队列.集合等: 2. lua的closure闭合函数 3. lua的迭代器和泛型的for 4. lua的协同程序 ...

  4. Java多线程之构造与发布

    资料来源 http://www.ibm.com/developerworks/library/j-jtp0618/ http://www.javaspecialists.eu/archive/Issu ...

  5. 第一天ci框架开发商城1

    ci框架开发商城1 1/28/2016 9:43:52 PM userguide删除 system application controllers 控制器 models 模型 views 视图 模板 ...

  6. 【SAP BO】处理掉BOE打开Xcelsius报表时,外围出现的外边框(转)

    原帖地址:http://blog.csdn.net/liyi199488/article/details/8943286 通过BOE打开Xcelsius报表时,总是出现一个外边框. 处理办法: Xce ...

  7. 【BFS】POJ 3414

    直达 -> POJ 3414 Pots 相似题联动–>HDU 1495 非常可乐 题意:两个壶倒水,三种操作,两个桶其中一个满足等于C的最少操作,输出路径.注意a,b互倒的时候能不能倒满, ...

  8. python os.path模块

    os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径) ...

  9. tungsten抽取和应用mysql binlog

    首先举例说明 api的基本使用方式 首先进行配置 , 可以看到源数据库和目的数据库 TungstenProperties tp=new TungstenProperties(); tp.setStri ...

  10. JS中检测数据类型的几种方式及优缺点【转】

    1.typeof 用来检测数据类型的运算符 typeof value 返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number"."string&quo ...