最近公司做的项目需要向国外推广,因此app需要添加相应的语言设置,为此整理记录下多语言设置的过程。如有不对的地方,欢迎各位大神指正。下面就详细介绍下设置的过程:

1、基本设置

第一步:首先在 项目工程-PTROJECT-Info中添加需要支持的语言

如上点击“+”号会弹出提供的语言列表,我们选择项目需要支持的语言就可以了

第二步:创建Localizable.strings(⚠️:该文件名不要随意更改)作为多语言资源对应的词典,存储多语言

创建好后,接下来需要继续做如下操作:

(1)选中Localizable.strings文件,点击右侧栏对应的Localize...

(2)在Localization里添加所要支持的语言,并勾选

第三步,经过以上几步,前期的基本设置完成了,可以在Localizable.strings里设置所需要的语言了。如下所示

第四步,设置好对应的语言后,就可以去使用了。那么可以按以下方式去使用

NSString * tempStr = NSLocalizedString(@"test_label", nil);

⚠️:

以上是对应的创建以Localizable为名字的文件调用方式。如果设置的是自定义的名字,如test.strings,调用的方式为:

NSLocalizedStringFromTable("name", "test", nil);

2、StoryBoard和Xib设置

storyBoard和xib设置同Localizable.strings类似。点那个我们创建Localizable.strings对应的语言文件时,系统自动的生成了app中现有storyBoard对应的系统文件。对于后加的文件,我们可以选中文件,点击右侧的Localize...并勾选对应的语言即可。

比如在storyBoard和xib中有一个Label,它对以会有一个Object ID了。我们可以通过这个ID来设置对应的语言文本

   

不过这个建议是所有的UI界面都设置完成后,再去设置多语言。当然可以通过对控件拖线,在代码实现中设置多语言

3、应用名等相关权限多语言设置

应用名等设置与上面的几个多语言设置的步骤是基本一致的,只是在创建strings文件的时候文件名要为InfoPlist。

这里以中文为例,设置app名称:"CFBundleDisplayName" = "测试";

4、判断系统的语言

NSArray *languages = [NSLocale preferredLanguages];

NSString *currentLanguage = [languages objectAtIndex:];

NSLog(@"%@", currentLanguage);

⚠️:通过[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]]设置app语言后,一定要记得重新设置window的rootViewController

好了,以上就是iOS多语言的相关内容

iOS多语言设置的更多相关文章

  1. ios多语言设置,操作

    多语言在应用程序中一般有两种做法:一.程序中提供给用户自己选择的机会: NSArray *languages = [NSLocale preferredLanguages]; NSString *cu ...

  2. XCODE 4.5 IOS多语言设置 及NSLocalizedString和NSLocalizedStringFromTable的用法。

    前 些天升级到Xcode4.5,现在正在用Xcode4.5+IOS6开发项目,当使用国际化时,遇到了一点问题,之前版本Xcode上新建 Localizable.strings后,添加语言的“+”号不见 ...

  3. iOS 国际化多语言设置 xcode7

    iOS 国际化多语言设置 方式一: 1. 在storyboard中创建好UI,然后在 project 里面  Localizables 栏目里面,添加你需要的语言:默认是Englist; 比如这里我添 ...

  4. 【转】iOS多语言本地化(国际化)设置

    原文网址:http://www.jianshu.com/p/2b7743ae9c90 讨论的iOS应用中的多语言设置,Ok 一般是两种情况: 1.根据当前设备语言自动切换显示 2.在应用中可进行语言设 ...

  5. iOS应用的语言设置

    首先需要明确两个名词的区别:“当前手机的系统语言”.“应用内部的语言设置” 要解决的问题的情景: 在iOS应用中,有时候会调用系统的一些UI控件,例如: 1.在UIWebView中长按会弹出系统的上下 ...

  6. iOS开发--应用设置及用户默认设置【1、bundle的运用】

           在iphone里面,应用都会在“设置”里面有个专属的应用设置,选择该菜单界面,用户便可以在其中输入和更改各种选项,协助用户更便捷设置个人喜好与习惯. 在这一节中,希望能通过对捆绑包(bu ...

  7. iOS开发--应用设置及用户默认设置——转载

    [链接]iOS开发--应用设置及用户默认设置[1.bundlehttp://www.jianshu.com/p/6f2913f6b218 在iphone里面,应用都会在“设置”里面有个专属的应用设置, ...

  8. iOS多语言备选机制

    近期伊书突然接到一些外国用户的投诉,说伊书界面变成了中文,但他们系统语言不是中文,是法文俄文日文等,伊书只支持中文跟英文,在不支持系统所用语言的时候,理应会自动选用英文,不知为什么会选成了中文,经过艰 ...

  9. iOS 多语言的实现(本地化和国际化)

    配置需要国际化的语言 配置需要国际化的语言,这也是国际化之前的准备工作,无论我们是国际化App名称.代码中的字符串.图片.还是storyboard和xib,都需要进行这一步的准备工作(一个项目中需要且 ...

随机推荐

  1. 004声明式服务调用Feign & 断路器Hystrix

    1.POM配置 和普通Spring Boot工程相比,添加了Eureka Client.Feign.Hystrix依赖和Spring Cloud依赖管理 <dependencies> &l ...

  2. <Android 应用 之路> 百度地图API使用(2)

    简介 上一篇只是大致的提一下百度地图API的Android SDK的基本内容,然后抄袭一个官网上的Demo,今天看一下百度地图的第一部分,地图类型和基本的显示. 简单实战 不同类型地图的显示 //设置 ...

  3. 大V云集!参加首届阿里巴巴在线技术峰会的八大理由

    由阿里巴巴集团.阿里巴巴技术协会(ATA)和阿里云云栖社区联合举办的首届阿里巴巴在线技术峰会(Alibaba Online Technology Summit)将于7月19日-21日20:00-21: ...

  4. 完美解决Office2003、Office2007、Office2010、Office2013共存方法

    原文:http://www.360doc.com/content/14/0903/16/7555793_406799011.shtml 微软Office深受广大用户的青睐,特别是经典的Office 2 ...

  5. Qt判断鼠标在控件上

    QT判断鼠标是否在某子窗口控件上方 需要注意的是,子窗口获取geometry,是相对于父窗口的相对位置,QCursor::pos()获取的是鼠标绝对位置,要不将父窗口的相对位置进行换算,要不将鼠标的绝 ...

  6. WPF DatePicker日期控件只显示年月

    1.需要引用2个类,第一个类DatePickerCalendar public class DatePickerCalendar { public static readonly Dependency ...

  7. console和windows子系统

    https://blog.csdn.net/ilvu999/article/details/8050292

  8. Linux 服务器性能问题排查思路

    一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你的程序非正常工作的时候, ...

  9. yii2.0查询关联数据以及widgets小部件

    怎样去查询关联数据呢,接下来整理一个简单的代码:

  10. 使用 JDK XML 和 java对象相互转换

    Unmarshaller 类能将 XML 数据转换为 Java 内容对象. Marshaller 类能够将 Java 对象转换回 XML 数据. package jaxb; /** * Created ...