欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

iOS中代码支持多国语言切换的实现(Xcode5+iOS7)

发布时间:2024/9/30 编程问答 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 iOS中代码支持多国语言切换的实现(Xcode5+iOS7) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
时间2014-03-08 22:14:13 CSDN博客 原文  http://blog.csdn.net/gisxy/article/details/20577881

为了增加程序的用户使用数量,那么程序的国际化是不可或缺的一步。在Xcode中要实现程序的国际化,其实非常简单,开发者只需要简单配置,并修改相应的字符串键值对即可。

        应用程序的国际化主要包括三个方面:A、程序名称国际化;B、程序内容国际化;C、程序资源国际化

  在Xcode中新建项目后,可以在project的info选项卡中找到Localization的项目,可以添加应用程序需要支持的国际语言。


 


回到项目中可以发现在InfoPlist.strings、Main.storyboard(Main.strings)增加了相应项,而Localizable.strings文件如果已经存在的情况也会增加对应的语言版本。(默认情况,Xcode5+iOS7下Localizable文件需要新建,如下图)


完成以上的设置和文件添加,来看应用程序国际化的ABC。

A、应用名称国际化(InfoPlist.strings)

在InfoPList.strings的不同语言版本的文件中设置相应语言下程序的显示名称

英语版 /* Localized versions of Info.plist keys */CFBundleDisplayName="test"; 中文版 /* Localized versions of Info.plist keys */

CFBundleDisplayName= "测试" ;

         这样程序在运行时,就会根据设备当前设置的语言版本显示对应语言的名称。 B、内容国际化(Localizable.strings) 

同样,应用程序里面的内容(组件显示的名称、提示等)可以在Localizable.strings的对应文件以键值对的形式配置;

英文

/* 

  Localizable.strings

  LocalizeMe

  Created by gisxy on 14-3-5.

  Copyright (c) 2014 年 esrixa. All rights reserved.

*/

"abc" = "cba" ;

"message" = "this is english" ;

"ok" = "ok" ;

  中文 /* Localizable.stringsLocalizeMeCreated by gisxy on 14-3-5.Copyright (c) 2014年 esrixa. All rights reserved. */ "abc"="我是测试"; "message"="这是中文信息提示"; "ok"="确定"; 需要注意的是代码里面:对于相应提示的代码应该使用NSLocalizedString(@"键值", nil)

  UIAlertView *alert = [[ UIAlertView alloc ] initWithTitle : NSLocalizedString (@"abc" , nil )

                                                    message : NSLocalizedString ( @"message" , nil)

                                                   delegate : self

                                          cancelButtonTitle : NSLocalizedString ( @"ok" , nil )

                                          otherButtonTitles : nil ];

    [alert show];

C、资源国际化

        在iOS7中storyboard生成的对应语言文本文件可以通过配置相应组件的显示名称来完成国际化

/* Class = "IBUIButton"; normalTitle = "定位"; ObjectID = "qpS-qC-Lcy"; */ "qpS-qC-Lcy.normalTitle" = "定位";         对于使用xib文件组织布局的情况下,以上方法并不好使,个人建议是:复制xib文件改名,修改显示的名称,然后在代码里面来根据语言版本来加载对应的资源,该方法同样使用图片等资源。
判断当前设备语言版本: NSArray *languages = [NSLocale preferredLanguages];NSString *currentLanguage = [languages objectAtIndex:0];NSLog(@"language is %@",currentLanguage);

如不同语言的图片资源位于不同文件夹下,然后可以根据语言版本来动态加载: _chineseImagesPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Images_Chinese/"]; _englishImagesPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Images_English/"];

总结

以上是生活随笔为你收集整理的iOS中代码支持多国语言切换的实现(Xcode5+iOS7)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。