关闭

iOS 应用国际化

标签: iOS国际化资源文件Localizable.strings
1430人阅读 评论(0) 收藏 举报
分类:

应用国际化目的:在不改变应用程序的逻辑功能的前提下,程序可以提供自适应、更友好的界面。用户不希望系统语言为中文,但应用却是英文吧。

国际化是指应用程序运行时,可根据系统设置的国家/地区、语言的不同而显示不同的界面。如:手机设置的语言为中文,则应用程序中的各种提示信息都显示中文;而如果手机系统语言为中文,则应用程序中的各种信息都显示英文。

1 应用国际化思路

iOS应用的国际化思路是将程序中的信息放在资源文件中,程序需要支持哪些国家、语言环境,则对应提供相应的资源文件。资源文件是key-value对,如:"ap_name" = "名称:";

每个资源文件中key是不变的,value则随不同的国家、语言改变。如:中文对应的资源文件中 "ap_name" = "名称:";

英文对应的资源文件中"ap_name" ="Name:";

key是程序使用的部分,value则是程序界面中显示的字符串。

资源文件名通常为Localizable.string,iOS程序需要区分不同语言、国家的资源文件,其方法是:不同国家、语言环境的资源文件放在不同的文件夹下。如:汉语简体环境的资源文件放在zh-Hans.lproj文件夹中,美式英语的资源文件放在en.lproj文件夹中。这种特殊的文件夹被称为本地化文件夹。


新建项目,通过Finder打开,会发现Base.lproj文件夹,Base.lproj文件夹下默认保存了Main.storyboard、LaunchScreen.storyboard文件,该文件可以作为各种语言环境的共有文件。(xcode 版本不一样,结果会不一样,xcode7.2创建没有en.lproj文件夹;而有的有,en.lproj文件夹是一个典型的本地化文件夹。该文件夹默认包含一个InfoPlist.strings文件。说明ios应用默认为InfoPlist.strings做了国际化准备,只不过默认只为英文环境提供了本地化文件,如果需要其他语言、国家本地化文件,则自行添加。)。


2 界面设计文件  国际化

添加国际化文件步骤

1 选中项目面板中的项目图标,再选中项目导航面板右边Dock列表中的PROJCET标题下的项目图标。

2 选中编辑去中的info选项卡,找到Localizations选项区域。


3 点击Localizations区域下面的 “+”,系统弹出语言列表,点击下面的other可以看到显示国家、语言的详细列表。根据需要进行选择。我这里选择的是Chinese(Simplifiled)(zh-Hans)。

4 由于本应用默认提供了Main.storyboard、LaunchScreen.storyboard文件,所以如图显示该两个文件。

对于storyboard文件国际化时,File Types处you两个选择。

  • Interface Builder Storyboard ,选择此项,表示系统要对整个界面进行国际化。使用不同的storyboard文件,这样不同语言、国家的用户界面都不同,最彻底的国际化。
  • Localizable String ,选择此项,表明只对界面上的字符串进行国际化。
此处我们只选Main.storyboard,type为“Interface Builder Storyboard”。点击finish。


在项目面板中我们可以看到此图:


分别对不同语言的Main.storyboard进行设置界面。


3 应用程序显示名称  国际化

应用程序显示名称(手机上应用下面显示的名)默认为应用程序名(项目名),在程序中的info.plist文件中有一项key为“Bundle name”,对应的值为${PRODUCT_NAME},也就是程序名。可以通过改变此value值来改变应用的名称。但是如果要国际化,修改这个就不行了。需要通过InfoPlist.string文件进行国际化。

1 点击“New”-->"File"--> iOS下的“Resource”--> Strings File。并命名为InfoPlist.strings或者InfoPlist。

2 选中该新建文件,在右侧面板中查找Localization区域,点击Localize按钮。


3 屏幕上会弹出对话框,如下图。这里选择Base(当然也可以选择其他,如汉语,英语等),点击Localize。


4 这时,你会发现右侧的变化,如下图,需要配置哪项语言即可选中对应框,这里我们选中Chinese对应的框。


5 此时,项目文件中的InfoPlist.strings文件由一个变成了如下图所示。


6 在每个InfoPlist.strings文件中填写key-value对,

如:base文件中写 :CFBundleDisplayName="base name";

Chinese文件中写: CFBundleDisplayName="哈哈";

这样就完成了名称的国际化,运行后你会发现程序的名称已经变成你改的那样了。其他语言也可通过类似方法添加。


4 图片  国际化

图片国际化的过程和名称国际化过程类似。

1 首先将一张图片拖入到项目中。(copy items if needed)

2 选中该图片,同样是查找Localization,点击Localize按钮。选择chinese。这样就会把该图片移到了汉语对应的本地化文件夹中。

3 采用上面类似的步骤重新导入同名的图片,配置为其他语言的本地化文件。


代码中或者布局界面直接用本图片名就可以了。切换不同语言可以看到对应的图片。


5 字符串   国际化

新建Strings File文件,命名为Localizable.strings,并将改文件保存至本地化文件中,如:保存到zh-Hans.lproj文件夹中,这样就配置了汉语简体本地文件。其他语言也是这样的操作步骤。。

该文件中以之前说的kye-value对存储,这里就不细说了。

代码中使用方式:

NSLocalizedString(key, comment);key为资源文件中的key值,comment参数是该消息的注释。

NSLocalizedString(@"app_name", nil);这样就可以获取到Localizable.strings文件中存储的内容了。



demo下载


著作权声明:本文由http://blog.csdn.net/vnanyesheshou原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

1
0
查看评论

iOS开发 - app国际化+手动切换语言

一:跟随系统切换语言 1>创建好项目工程后, 新建一个多语言文件: 2>添加要设置的语言类型: 3>添加成功 细心的朋友可能会发现在English后面写的是3 Files Localized,这是因为英语是系统默认添加的,而且同时...
  • a910577347
  • a910577347
  • 2017-11-21 16:11
  • 376

iOS开发 - app国际化,各国的语言简写

我在做app手动国际化的时候,发现需要判定当前语言,但是各国的语言缩写并不是太确定,因此为了以后方便,我在下面一一列举各国语言简写,为以后方便操作:     1、       中文简体  zh-Hans; &...
  • a910577347
  • a910577347
  • 2017-12-11 10:51
  • 234

iOS下怎么对项目内容进行国际化

在开发项目中有事需要多语言支持,在对应手机环境下显示对应的语言,这时我们需要对项目国际化。 首先新建一个stings文件命名为localizable如图: 然后打开项目Targe-Info-Localizations中添加要支持的语言如图 然后选择刚才创建的stings.文件 ...
  • iOSTerry
  • iOSTerry
  • 2017-08-28 11:55
  • 279

iOS 语言国际化

转过来的资料,国际化和判断当前语言环境!  1、IOS程序名称国际化  1.1 新建一个Single View app模版项目,命名为Localization。  1.2 新建后,可以看到工作目录结构文件如下,单击InfoPlist.strings,查...
  • zz1732818683
  • zz1732818683
  • 2014-04-01 13:09
  • 697

iOS 国际化的设置大全

国际化(Internationalization ,简写为I18N)的作用是防止将本土文化信息写死仔应用里(所谓本土文化,是指语言、货币、日期格式、数字格式等)。本土化(Localization,简写为L10n)的作用是根据用户设置的Language and Region Format(语言和区域格...
  • watermelon_
  • watermelon_
  • 2016-12-01 09:54
  • 1499

iOS国际化配置

闲来无事倒腾了一下国际化的设置,可能在我们日常生活中我们都很少去配置这个国际化,但这种需求也不是没有的,现在越来越多的app都希望做大能更大程度满足用户的需求,所以app本身要优化和提升的地方也越来越多,好啦,废话不多说,做个笔记; 开始也不知道怎么搞,就在网上查找了些资料,看了几篇博客熟悉相关流...
  • chuming0311
  • chuming0311
  • 2016-12-19 15:36
  • 196

iOS国际化(本地化)详解

一、国际化(本地化) 国际化又称本地化,一句话解释也就是说:用户设置不同的手机系统语言,您的APP也分别适配不同的语言。 二、本地化类型 1、首先创建项目工程(大家都懂跳过) 2、你需要告诉我您需要做哪些国家(语言)的国际化 —— 添加本地化语言 选中project->Info-&...
  • xinzhaoyu
  • xinzhaoyu
  • 2017-04-24 14:45
  • 358

IOS 国际化语言包配置(三)

转自:http://blog.sina.com.cn/s/blog_7b9d64af0101jncz.html NOTE:添加完两个string文件后,再加入中文简体和其它语言比较方便 最终效果: 程序名称文件:InfoPlist.strings 本地化文字文件:L...
  • Jason_chen13
  • Jason_chen13
  • 2016-06-16 10:50
  • 1577

IOS的国际化(一)APP名称和启动页

IOS国际化应用程序的名称国际化最近公司把公司产品中的国际化给去掉了,以后就不维护了国际化了,在这里写下国际化的处理,长时间不用怕给忘记了。这里就写个小例子来实现app名称的国际化和app启动页的国际化。(xcode8.1)APP名称的国际化 1. 首先向app中加入app支持的语言 ...
  • YouLing_0809
  • YouLing_0809
  • 2016-12-22 18:28
  • 2504

storyboard的国际化

首先我们看一下要实现的界面 ,只是一个简单的登录界面,用storyboard搭建好就可以。 然后按照如图所示的方式来配置国际化所需要的语言。 添加语言后会出现这样一个提示框,这个提示框选取你想要国际化的storyboard就可以了。 选取完之后,在对应的storyboard中会出现,两个.s...
  • zzzzhy
  • zzzzhy
  • 2016-06-12 17:20
  • 598
    个人资料
    • 访问:734273次
    • 积分:7061
    • 等级:
    • 排名:第3874名
    • 原创:123篇
    • 转载:23篇
    • 译文:0篇
    • 评论:413条
    微信公众号
      分享Android相关文章、生活感悟等。
    QQ交流群
    群号 532259820
    博客专栏
    最新评论
    微信公众号
    微信关注我的公众号
    统计