iOS 多语言 浅析
什么是本地化处理?
本地化处理就是我们的应用程序有可能发布到世界的很多国家去,因为每个国家应用的语言是不一样的,所以我们要把我们的应用程序的语言要进行本地化处理一下。
本地化处理需要处理那些文件?
(1):本地化应用程序名称(我的的项目名称)
(2):本地化字符串处理(项目中所涉及的字符串)
(3):本地化图片
(4):XIB文件本地化处理
(5):其他文件
下面进行本地化处理:
1 . 设置我们的工程支持多语言
为什么:因为只有设置成支持多语言了,我们才能在展示项目名称和项目中的字符串等将语言进行切换
(1): 首先创建一个项目,以“苹果”为项目名做测试
(2):为工程添加可支持的语言,只有项目具有我们想要用的语言,我们才能讲项目切换成这种语言
如图所示:
2:设置项目名称本地化处理
(1):InfoPlist.strings文件是对我们应用程序的名字进行管理的
(2):设置InfoPlist.strings其实很简单,就是借助我们上一步设置的语言环境,将我们想要支持的语言添加到InfoPlist.strings文件之下就可以了
(3):如图所示添加过程:
(4)接下来我们只需要将CFBundleDisplayName属性和它所对应的值分别写在我们在InfoPlist下创建的文件中
例如:
在InfoPlist.strings(English)中我们写入:CFBundleDisplayName = "apple";
在InfoPlist.strings(Chinese(Simplified))中我们写入:CFBundleDisplayName = "苹果";
在InfoPlist.strings(English)中我们写入:CFBundleDisplayName = "リンゴ";
注意:后面的“”前面不加@
(5):在Info.Plist文件中添加一个属性Application has localized display name然后设置成Boolean类型的Yes就可以了
(6):在模拟器中更改模拟器的语言就会看到以下三种效果:
3:本地化字符串处理(项目中所涉及的字符串)
提示:本地化字符串处理和2中讲的项目名本地化处理基本上是一样的,只不过我们需要在创建一个像Info.Plist文件一样的文件来管理我们的本地化字符串
就是创建一个Localizable.strings文件,然后同样是在这个文件夹下创建多种支持语言
(1):创建Localizable.strings文件的方式和上面创建Info.Plist的方式是一样的,只是文件名不一样
(2):在Localizable.strings文件下添加支持的语言
如图所示:
(3):然后我们在Localizable.strings下得各个文件添加类似于如下的内容:
例如:
Localizable.strings(English)中 “Login”=“Login”;
Localizable.strings(Chinese(Simplified)) 中 “Login” = “登陆”;
Localizable.strings(Japanese) 中 “Login” = “登録”;
然后有人可能问了我们每个等号前的"Login"是怎么确定的? :往下看
然后我们怎么用呢?
就是每次我们在用到我们设定的字符串的时候不用NSString了,我们需要用到一个函数代替它:NSLocalizedString(key, comment)
例如我们要再一个Button上设定主题:button.title = NSLocalizedString(@“Login”, nil);
这个里面的@“Login”就会自动检索于设备相同语言的Localizable.strings下得文件夹,然后在里面找到与@“Login”相同的Key值,然后就输出出来
其实我们在Localizable.strings下得文件夹中设置的内容就像一个字典一样,前面是Key值后面是对应的值,然后就是通过NSLocalizedString(@“Login”, nil);函数进行检索,将key对应的值返回过来。
有人会文NSLocalizedString(key, comment)中的comment是什么,很明显根据字义判断是注释的意思
如图所示:
总结:
其实很简单,就是我们把Localizable.strings下面设置好我们所需要的语言,然后我们在将我们在项目中用到的字符串都用"Three"="3";的形式整理到各个对应的文件里面,然后我们要是用到我们需要的字符串的时候我们就通过NSLocalizedString(key, comment)函数以key值的形式找里面的值,然后将我们自己设置的语言对应的值展现出来,这就是本地化处理
iOS 多语言 浅析的更多相关文章
- iOS多语言备选机制
近期伊书突然接到一些外国用户的投诉,说伊书界面变成了中文,但他们系统语言不是中文,是法文俄文日文等,伊书只支持中文跟英文,在不支持系统所用语言的时候,理应会自动选用英文,不知为什么会选成了中文,经过艰 ...
- iOS OC语言原生开发的IM模块--RChat
iOS OC语言原生开发的IM模块,用于项目中需要原生开发IM的情况,具备发送文字.表情.语音.图片.视频等完整功能,包含图片预览视频播放等功能,此项目将会长期更新如有问题可以提出,我的邮箱:fshm ...
- iOS多语言设置
最近公司做的项目需要向国外推广,因此app需要添加相应的语言设置,为此整理记录下多语言设置的过程.如有不对的地方,欢迎各位大神指正.下面就详细介绍下设置的过程: 1.基本设置 第一步:首先在 项目工程 ...
- 开发ios的语言
iOS发展这么多年了,很多第三方语言都向开发一种自己的iOS,于是多种跨平台诞生了! Object-c.swift: 当然是开发iOS的首先,毕竟是苹果自己的东西,也是最流行.最适合开发ios的,无论 ...
- IOS中CoreData浅析
CoreData简介: 什么是CoreData? Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中, ...
- iOS - OC 语言新特性
前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力.在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 O ...
- ios多语言设置,操作
多语言在应用程序中一般有两种做法:一.程序中提供给用户自己选择的机会: NSArray *languages = [NSLocale preferredLanguages]; NSString *cu ...
- iOS 并发概念浅析
在进行iOS开发过程中,我们常会遇到网络请求.复杂计算.数据存取等比较耗时的操作,如果处理不合理,将对APP的流畅度产生较大影响.除了优化APP架构,并发(concurrency)是一个常用且较好的解 ...
- RubyMotion之父:Ruby是目前替代Objective-C的最佳iOS开发语言
发表于2012-08-16 00:52| 21716次阅读| 来源CSDN| 24 条评论| 作者杨鹏飞 RubyMotionRubyObjective-CiOSJava 摘要:曾几何时,PC端有那么 ...
随机推荐
- Lua入门基础
什么是Lua Lua 是一个小巧的脚本语言.是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Rober ...
- chapter 13_3 table访问的元方法
前两节的算术类.关系类运算符的元方法都为各种错误情况定义了行为,它们不会改变语言的常规行为. 但是Lua还提供了两种可以改变table行为的方法: 一种是查询table中不存在的字段.一种是修改tab ...
- Openjudge-计算概论(A)-单词倒排
描述: 编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔. 输入输入为一个字符串(字符串长度至多为100).输出输出为按要求排续后的字符 ...
- 2015 ACM/ICPC Asia Regional Changchun Online
1001 Alisha’s Party 比赛的时候学长stl吃T.手写堆过. 赛后我贴了那两份代码都过.相差.2s. 于是用stl写水果. # include <iostream> # i ...
- 依赖跟踪如何工作的(How dependency tracking works)
这一块主要是理论的讲解,本人刚接触这块不久,就不敢翻译了,请参见园子里其他人的现有文章 http://www.cnblogs.com/TomXu/archive/2011/11/22/2256820. ...
- 模拟IIC协议时序
IIC是飞利浦公司开发的两线式串行总线,主要应用在单片机和外围电子器件之间的数据通讯. IIC总线优点是节约总线数,稳定,快速,是目前芯片制造上非常流行的一种总线,大多数单片机已经片内集成了IIC总线 ...
- 引用WCF地址报下载“https://xxx:8004/TerminalHandler.svc?disco”时出错问题
服务发布了wcf服务后,在客户端引用发现出现以下错误 - 来自“DISCO 文档”的报告是“下载“https://servername:8004/TerminalHandler.svc?disco”时 ...
- MySql 安装报错 :Last Error:Unable to update security. Access denied for user 'root'@'localhost(useing password:YES)
在网上查了一下,其实这个问题很好解决,. try again 然后current password mysql是默认密码为空,不要填,记住不要填就ok了
- python模拟登录知乎
# -*- coding:utf-8 -*- import urllib import urllib2 import cookielib import sys from bs4 import Beau ...
- 十四、oracle 数据库管理--管理表空间和数据文件
一.概念表空间是数据库的逻辑组成部分.从物理上讲,数据库数据存放在数据文件中:从逻辑上讲,数据库数据则是存放在表空间中,表空间由一个或多个数据文件组成. 二.数据库的逻辑结构oracle中逻辑结构包括 ...