IOS应用的国际化,主要分为3个部分:

  • Info.plist 文件的国际化
  • .xib文件的国际化
  • .m文件的国际化

下面我就来一一说明。

Info.plist 文件的国际化
我们使用Xcode 4.5 创建一个新项目,会自动创建一个 en.lproj 目录,这个目录下存放的就是需要国际化的文件(默认为英文)。下面,我们还需要创建中文国际化支持。
1. 创建名为 zh-Hans.lproj 的目录
2. 在项目的 Info.plist 文件中增加配置 Localizations, 添加英文和中文的支持:English, Chinese(simplified)
3. 将 en.lproj/InfoPlist.strings 文件拷贝到 zh-Hans.lproj/InfoPlist.strings 文件中。
4. 将 zh-Hans.lproj 目录添加到项目。注意要选择 Add to targets
5. 选择 File -> Info -> Localization 为对应的语言
在 InfoPlist.strings 文件中,我们可以国际化一些应用信息,例如:
CFBundleDisplayName 应用显示名称。这样我们就可以根据不同的语言,显示不同语言的应用名。
更多字段信息,请参考
http://developer.apple.com/library/ios/#documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
的 Key Summary 部分。

.xib 文件的国际化
我们已经创建了一个英文的xib文件,在 en.lproj 文件下。然后,需要使用命令行来操作:
1. 将 .xib文件 中的文字提取,另存为 .strings文件。
ibtool --generate-strings-file MainViewController.strings MainViewController.xib
2. 将 MainViewController.strings 拷贝到 zh-Hans.lproj 目录下,然后汉化该文件中的文字
3. 执行命令,根据英文的 .xib文件 和 .strings汉化文件 生成一个汉化后的 .xib 文件
ibtool --strings-file zh-Hans.lproj/MainViewController.strings --write zh-Hans.lproj/MainViewController.xib en.lproj/MainViewController.xib
4. 将生成的这个 .xib 文件添加到项目中的 zh-Hans.lproj 分组下,注意要选择 Add to targets
5. 选择 File -> Info -> Localization 为对应的语言
至此,xib文件的汉化已经完成。

.m 文件的国际化
1. 代码中,凡是需要国际化的文字,都使用 NSLocalizedString 函数,例如 
NSLocalizedString(@"hello_world", @"Hello world!");
2. 执行命令,将所有 .m 文件中需要汉化的文字都提取出来,并放入 en.lproj 文件夹下
genstrings -o en.lproj *.m
此时,会自动生成 Localizable.strings 文件。接着将该文件也拷贝到 zh-Hans.lproj 文件夹下去。这个文件就是需要汉化的内容
3. 将 .strings 文件添加到项目中相应的汉化目录下,注意要选择 Add to targets
4. 选择 File -> Info -> Localization 为对应的语言
然后,我们运行程序,通过修改系统语言发现,文件显示名称、.xib文件 和 .m文件 都可以自动切换显示语言了。

http://blog.csdn.net/midfar/article/details/8165380

IOS应用的国际化的更多相关文章

  1. iOS开发之国际化

    iOS 国际化.根据系统不同的语言自动切换. 首先.选择项目 Add new file -->iOS -->Resource -->Strings File  . 命名为Locali ...

  2. IOS开发的国际化

    一 app中内容的国际化 1 添加简体中文支持(默认只有英文)         在xcode的PROJECT->Info->Localizations下添加简体中文的支持.   2新建St ...

  3. iOS - 应用程序国际化

    开发的移动应用更希望获取更多用户,走向世界,这就需要应用国际化,国际化其实就是多语言.这篇文章介绍Xcode4.5以后的国际化,包括应用名国际化和应用内容国际化.如果是Xcode4.5之前版本请参考. ...

  4. Swift - iOS应用的国际化与本地化

    在Xcode中我们可以很方便的将APP适配各种本地化语言.苹果的框架已经帮我们把不同语言的数据分离开,包括图片,声音,视频,文档,用户界面文字(甚至代码中编写的用户界面文字),它们会被建立在同一个bu ...

  5. iOS 读书笔记-国际化

    吐槽一下:国际化-我想说学习的这个project好痛苦. 也许是百度的原因,总是不能找到自己想要东西. 找到的内容不是不具体就是时间有点久了.让我这种小白非常头痛. 以下记录一下整个过程. 国际化是什 ...

  6. ios应用程序国际化

    1.程序名称国际化: 在Xcode中新建项目后,能够在project的info选项卡中找到Localization的项目,能够加入应用程序须要支持的国际语言. 回到项目中能够发如今InfoPlist. ...

  7. 3分钟实现iOS语言本地化/国际化(图文详解)

    前言 语言本地化,又叫做语言国际化. 是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言. 往往一些应用程序需要提供给多个国家的人群使用,或者一个国家有多种语言,这 ...

  8. iOS APP语言国际化之应用内切换语言环境

    最近接了一个项目,需求是要做一款应用的英文版本,客户并不清楚,以为要另做一个APP.沟通后告诉他们在之前应用基础上加个国际化功能就好,把之前的语言国际化重新梳理记录一下. 一般设置更改本地语言环境后, ...

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

    一:尾随系统切换语言 1>创建好项目project后, 新建一个多语言文件: 2>加入要设置的语言类型: 3>加入成功 细心的朋友可能会发如今English后面写的是3 Files ...

随机推荐

  1. mac xcode 快捷键

    shift + cmd + n     新建项目 cmd + n             新建文件 视图 option + cmd + 回车 打开助理编辑器 cmd + 回车           显示 ...

  2. SQLSERVER 的联接查询写法

    1.内连接 语法:[JOIN.INNER JOIN] 作用:两个表相连,加上ON匹配两个表的共同条件. 实例1: SELECT tb_o_i.* FROM tb_o_i INNER JOIN tb_o ...

  3. try{}catch{}finally{}的手记

    try{ System.out.println("执行try"); int = 6 / 0; return 1; }catch(Exception e){ System.out.p ...

  4. Maven+STS工程中Maven Dependencies 文件夹丢失问题

    在我们使用Maven+sts工程中偶尔会出现这种情况: Maven Dependencies文件夹在新打开的工程中丢失,造成 web project 自动编译出错,缺少必要的库文件: 如下图所示的情况 ...

  5. selenium中的webdriver定位元素失败的常见原因

    自动化测试中经常会出现无法定位元素的情况,报selenium.common.exceptions.NoSuchElementException错误 Frame/Iframe原因定位不到元素: 这个是最 ...

  6. icon的使用

    在前端页面设计时,不免使用的就是图标,下面就我使用图标icon分享一下经验 1.icon插件,现在比较好的是bootstrap自带的,fontawesome,链接地址:http://fontaweso ...

  7. intellij idea 12 搭建maven web项目 freemarker + spring mvc

    配置spring mvc ,写这篇文章的时候spring已经出了4.0 这里还是用稳定的3.2.7.RELEASE,先把spring和freemarker配置好 1.spring mvc配置 在web ...

  8. Maven 复制jar到指定目录

    在完成模块开发后,需要发布jar到nexus上,与此同时,则要部署开发的模块,需要将编译打包的jar复制到指定的路径,再进行部署,而不是手动的去复制那些jar,因为当模块多的话,则会感到特别的烦,所以 ...

  9. Gdevops2016年全球敏捷运维峰会【上海站】嘉宾阵容

    2016年全球敏捷运维峰会(Gdevops, Global Devops Summit)将于2016年在杭州.北京.广州.上海四城全面启动,本次峰会旨在搭建一个开发者与 运维者沟通交流的平台,围绕各种 ...

  10. nginx读取图片没有权限

    场景是这样的,我们项目中上传图片到linux服务器后,保存图片存储路径和网络访问路径.app中用数据库返回的 图片访问路径来访问图片(nginx通过nfs方式读取图片).但是访问不到.要手动 chmo ...