iOS 国际化 支持app多种语言

    国际化,顾名思义就是让各国人使用你的app,能显示本国的语言。国际化,没有想象中那么难,只知道通NSLocalizedString方法将相应语言的字符串加载进来即可。


本篇来自:http://blog.csdn.net/VictorMoKai/article/details/48894873

                  http://blog.sina.com.cn/s/blog_7b9d64af0101jncz.html


  开发环境 :Xcode 5以上 & Object C

   一、 iOS国际化原理分析

           国际化其实都大同小异,其核心思想就是为每种语言单独定义一份资源

           iOS就是通过xxx.lproj目录来定义每个语言的资源,这里的资源可以是图片,文本,Storyboard,Xib等。我们可以看看              LocalDemo源代码的物理目录结构


每种语言都有自己的 语言代码.lproj文件夹,加载资源时只需要加载相应语言文件夹下的资源就OK,这步可以系统为我们完成(图一),也可以手动去做(图二)。

  图一:



   图二:



 

 二 、国际化开始步骤

       1. 首先点击项目->PROJECT->Info->Localizations中添加要支持的语言



注:此处Use Base Internationalization开启状态下,每个国际化资源文件会有个Base选项,主要针对String,Storyboard,Xib作为   一个基础的模板,像后述storyboard国际化中方案二就是基于Base StoryBoard进行改动。

        在点击+添加相应语言时会弹出以下对话框,意思是为现有的资源添加语言文件,我们点击Finish就行了



        2. 然后创建国际化语言文件(Xcode 5以下自动会生成)文件名必须为:Localizable.strings



          选中Localizable.strings文件,在Utilites中,点击Localizable选项



           创建English语言包。



创建后,你的Localizable.strings文件下将挂在英文的语言支持文件。


       三、文本的国际化

             文本的国际化是通过一个Localizable.strings文件来存储每个语言的文本,它是iOS默认加载的文件。

            每个资源文件如果想为一种语言添加支持,通过其属性面板中的Localization添加相应语言就行了,此时Localizable.strings

   于可展开状态,子级有着相应语言的副本。我们把相应语言的文本放在副本里面就行了



注:此处Base与前面提过到的开启Use BaseInternationalization是有关联的,只有开启了全局Use Base Internationalization此处才会显示。那为什么这里没有勾选Base?Base做为一个基础模板,作用于Strings文件是没有太大意义的,另外去掉Base意义着在Base.lproj中少了一个strings文件,APP大小也所有下降,这点对于图片的Base更是如此。


        代码中这样写就行了


另外中文strings【Localizable.strings(Simplified)】可以不要的(可以理解为中文为APP的默认语言),因为key就是value,当找不到相应的语言strings或value时会直接返回key。nice!这样一来我们做文本的国际化就只要维护一个英文副本strings就O了

 

         四、图片的国际化

               图片的国际化可以通过原生支持与自定义命名



同上,Base副本去掉。另外需要注意的是,使用这种方式,在XIB或Storyboard中引用图片时如果只使用名称是实时显示不了的,一定要加上后缀名。如avater.png


       代码中使用方式不变,iOS会自动找相应语言(xxx.lproj)下的图片


对于图片的放置,正确姿态应该是需要国际化的图片放在自定义Group里面,不需要国际化的图片放在Images.xcassets

 

        五、获得当前设备的语言

            你可以在AppDelegate的didFinishLaunchingWithOptions方法中获取当前的语言。

    //取得用户默认信息

    NSUserDefaults *defaults = [NSUserDefaultsstandardUserDefaults ];

    // 取得 iPhone 支持的所有语言设置

    NSArray *languages = [defaultsobjectForKey :@"AppleLanguages" ];

    // 获得当前iPhone使用的语言

    NSString* currentLanguage =[languagesobjectAtIndex:0];

    NSLog(@"当前使用的语言:%@",currentLanguage);

注:1.代码有冲突,建议使用(图一)设置方式。

       2.切记不要以为改变AppleLanguages值,就改变系统的设置语言,苹果官方API没有提供我们直接修改的AIP.



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/70406.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过扫码下载安卓和ios安装包

背景: 手机端ios打包成为ipa文件,安卓打包成为apk文件.现在要求通过扫码完成ios和安卓的下载工作 要求: ios 下载需要https 可以不需要域名, 手机可以访问服务器 整体流程如下: 操作步骤: 配置ios,安卓的通用下载页面.该页面完成安卓ios 不同渠道走不同的下载路径安卓直接走…

Mac 使用Charles对苹果手机和安卓手机进行抓包

今天给大家分享在Mac下,使用Charles(青花瓷)分别对苹果手机和安卓手机进行抓包的操作流程。 前提:在Mac上安装Charles,网上很多安装包,自行下载。 在此提供官网链接:https://www.charlesproxy.com/download/ 一&…

不会电脑的可以学计算机吗?

前言 可以,学计算机都是从零基础开始学习。只要自己选择计算机,从开头的时候就一直跟着走,把计算机基础学好,然后再学你喜欢的专业知识,技术,把这些慢慢的跟着走就行了,咱们总之就是不要懈怠。…

查找文献网址

1、http://www.sci-hub.ac.cn/ 2、http://so.hiqq.com.cn/ 3、https://sci-hub.org.cn/ 4、https://www.library.ac.cn/?fa403-us8225 5、https://www.medsci.cn/sci/ 20220918更新: 有时候第四个链接打不开,于是我把里面包含的链接们都存下来了&…

为什么某些网站有些地方打得开,有些地方打不开?

原文地址为: 为什么某些网站有些地方打得开,有些地方打不开? 我们都知道,网站是由 域名、空间、网页组成,如果这三部分中有其一出问题,网站都不能打开。我们在浏览器输入要访问的网站网址时,我…

AI语音编程来了!GitHub 势要颠覆程序员开发

作者 | 王启隆 出品 | CSDN(ID:CSDNnews) 十五年前,GitHub 的第一行代码诞生。从那时起,GitHub 的开源先驱将全球开发者集体视为目标,提供开发者们所需的一切,这一使命在 GitHub 平台的每次迭代…

谷歌(google)、百度、必应d等高级搜索指令使用

Google高级搜索语法指令 1.allinanchor anchor是一处说明性的文字,它标注说明了这个链接可能跳转到其它的网页或跳转到当前网页的不同地方。当我们用allinanchor提交查询的时候,Google会限制搜索结果必须是那些在anchor文字里包含了我们所有查询关键词…

特斯拉机器人发布!马斯克:最快明年量产,价格不到14万,搬砖送货都能干...

梦晨 詹士 发自 凹非寺量子位 | 公众号 QbitAI 一年一度特斯拉AI DAY, 开场就王炸! 马斯克只用3分钟简短热场,人形机器人擎天柱 (Optimus)直接登台亮相。 不同于去年概念PPT上光滑圆润的外形,今年的擎天柱金…

模型训练系列:1、用清华ChatGLM-6B模型部署自己的本地AI助手

最近清华大学开源的ChatGLM-6B语言模型在国际上大出风头,仅仅62亿参数的小模型,能力却很强。很期待他们后续1300亿参数模型130B的发布。 为什么一些能力较弱的小模型,这么受追捧?因为ChatGPT、GPT-4虽好,毕竟被国外封锁…

腾讯云服务器小白保姆级教程

现在都是上云服务器,小白拿到一个云服务器怎么办? 1、选择 这里选择的是腾讯云轻量服务器,主要是便宜,另外自己主要是自己练习,对性能什么的也就没有啥要求了。 购买云服务器之前要进行实名验证。实名的微信可以和注…

文科生学大数据分析吃力吗

前段时间来咨询的学员,0基础想报名大大数据分析培训班,但由于自己是文科生,做的是人力资源的工作,所以一直在犹豫该不该转行从事大数据分析行业。文科生可以学大数据分析吗?今天就针对文科生的问题详细的分析一下。 在选择大数据…

文科生比不过理科生,转码IT互联网将成趋势?

今天看到“文科生转码或成趋势”的话题,觉得还是非常有意思哈,所以来聊聊看~ 值得一提的是,虽然现在高中考试改制后,已不再区分文理科生(理化生史地政6选3),但是大学本科及研究生以上&#xff…

文科妹子都会用 GitHub,你这个工科生还等什么

在某乎上刷到一条关于 GitHub 的留言,如下: 点赞人数还不少,这说明还真有不少工科生不会用 GitHub,你看大小写都没有区分(手动狗头)。所以我就想写篇文章科普下,“新手如何使用 GitHub&#xff…

文科生“转码农“风继续 理科生慌吗?Phyon最热

程序员是一个很热门的职业,至少对于文科生而言,这两年持续“转码农”风在继续,这会不会给理科生们带来压力呢? 其实,“转码”,即转行成为程序员,由于其高就业率、高薪资而在求职市场上大受欢迎&…

chatgpt赋能python:Python操作数据库:连接、查询和更新

Python操作数据库:连接、查询和更新 在开发Web应用或者处理数据时,操作数据库是必不可少的步骤。Python提供了许多标准库和第三方库来连接和操作数据库,如sqlite3、MySQLdb、psycopg2等。在本文中,我们将介绍如何使用Python连接、…

AI算力碎片化:矩阵乘法的启示

尽管AI的发展取得了巨大进步,但编译器LLVM之父Chris Lattner认为,AI技术应用并不深入,远远没有发挥出已有机器学习研究的所有潜力。而AI系统和工具的单一化和碎片化正是造成这一问题的根源。 为了让AI发挥其真正的潜力,计算碎片化…

APP后台以及用户数据被泄露 该如何防护

近期我们接到许多DK平台反馈APP里的用户信息数据被泄露,导致用户经常受到境外香港电话推广骚扰,有些用户甚至被网络诈骗,而且用户当天申请填写表单里的手机号,没过多久就泄露了,紧接着香港电话就会打过来,询…

ap计算机科学5分率,AP考试5分率及难度分析

2019年的AP报名窗口已经开启,AP选考究竟要注意些什么?如何结合科目难度和自身情况,申请的时候尽可能地凸显的优势呢?今天老师从AP各科的难度和5分率进行分析,让大家了解过往战况,好好制定最适合的选考策略。…

ALEVEL数学、物理、化学、生物与国内考试的区别

A-Level考试中数学、物理、化学、生物是常考热门科目,这些科目在国内高考中也有对应的科目,那么,两者之间有什么区别呢? 1、A-Level物理与国内高考物理 从知识范围广度来看,A-Level物理更胜一筹,涉及的知识…

PTA L2-046 天梯赛的赛场安排 (25 分)

天梯赛使用 OMS 监考系统,需要将参赛队员安排到系统中的虚拟赛场里,并为每个赛场分配一位监考老师。每位监考老师需要联系自己赛场内队员对应的教练们,以便发放比赛账号。为了尽可能减少教练和监考的沟通负担,我们要求赛场的安排满…