你的位置:首页 > 软件开发 > 操作系统 > iOS 应用程序内部国际化,不跟随系统语言

iOS 应用程序内部国际化,不跟随系统语言

发布时间:2015-11-12 11:00:04
前言:网络上关于iOS国际化的文章很多,但基本上都是基于跟随系统语言的国际化,笔者就不赘述了-0 –今天要讲的是不跟随系统的切换语言版本方案,即程序内部的切换语言版本方案。 一、总则: 应用内部语言不跟随系统语言, ...

前言:网络上关于iOS国际化的文章很多,但基本上都是基于跟随系统语言的国际化,笔者就不赘述了-0 –

今天要讲的是不跟随系统的切换语言版本方案,即程序内部的切换语言版本方案。

 

 

一、总则:

       应用内部语言不跟随系统语言,由应用自己进行控制,通过配置多个语言文件,根据用户的选择动态获取不同文件夹下的语言文件,显示在界面上。

       最后把用户选择的语言持久化到本地,下次运行时读取。

 

 

二、应用内的国际化

1、新建工程

      新建Single View Application工程,取名为MyInternational。

                                                      iOS 应用程序内部国际化,不跟随系统语言

 

 

2、添加多语言文件

      我们选择使用自己的语言文件,而不是系统的localizable.string,因为在项目开发使用svn时,多人操作同一文件可能会造成冲突。

在Resource中添加新的Strings File:

                                                            iOS 应用程序内部国际化,不跟随系统语言

 

       

      取名为hello(记得Targets要勾选项目)

                                                                 iOS 应用程序内部国际化,不跟随系统语言

 

      新建完成之后会生成hello.string文件,把它拖进Supporting Files里。

 

 

3、配置hello.string国际化

      首先配置刚才的hello.string文件。

      点击hello.strings文件,点击圈中的Make localized(本地化)。

                                                                             iOS 应用程序内部国际化,不跟随系统语言

 

    

      只有English,没关系点击确定。

                                                                iOS 应用程序内部国际化,不跟随系统语言

 

4、配置项目国际化

      网络上很多配置方法不靠谱,因为新版的Xcode位置“+”号的位置换了,这里教大家正确的方法,点击项目—>选择Project—>选择Info—>点击“+”号。

                                                     iOS 应用程序内部国际化,不跟随系统语言

 

 

      点击“+”号后,添加中文,当然也可以添加其他的语言,弹出对话框,infoPlist是配置系统的国际化文件,可以配置图标之类的多语言环境,不属于本文范围,nib文件看需要配,这里选择不配。

                                                      iOS 应用程序内部国际化,不跟随系统语言

      

      配置完成之后,再看hello.string便分成了两个文件。

                                                                                 iOS 应用程序内部国际化,不跟随系统语言

 

      完成上面的四步便完成了项目内的多语言环境配置,下面来看看代码怎么写。

 

5、添加需要的字符串

      分别在hello.strings(English)与hello.strings(Chinese)里面添加对应语言的字符串。

      字符串的格式为“key”=“value”;键值对(别忘记分号!)

      接下来配置项目需要的字符串,一个用于lable的显示,一个用于button的显示。

 

    hello.strings(English)

    "invite" ="hello atany,come to join in us!";

   "buttonInfo" ="change Language";

 

    hello.strings(Chinese)

    "invite" ="你好 atany,快来加入我们吧!";

    "buttonInfo" ="切换语言";

 

6、看看流程

                                                     iOS 应用程序内部国际化,不跟随系统语言

 

【实现思路:】

      在初始化首个Controller的时候,进行应用语言的加载。首次加载因为userLanguage(应用内语言)不存在,则使用系统当前的语言,保存到userlanguage,下次直接读。读出来之后,获取到对应文件路径,得到文件的索引,储存到工具类InternationalControl的静态变量bundle中。

其他地方需要用字符串时,用工具类获得bundle即可读取相应文件中的字符串。

 

7、新建工具类InternationalControl

                           iOS 应用程序内部国际化,不跟随系统语言

 

InternationalControl.h

[cpp] view plaincopy 

原标题:iOS 应用程序内部国际化,不跟随系统语言

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。