iOS项目国际化详解

Posted zhangshengjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS项目国际化详解相关的知识,希望对你有一定的参考价值。

  现在的开发中难免会遇到项目国际化处理,下面把我理解到的国际化相关的知识点进行总结归纳

1 首先是对项目名称,系统性的文字进行名字化,比如程序名字

  1,先给项目添加语言技术分享图片

技术分享图片

2 添加InfoPlist.strings的文件 

技术分享图片

技术分享图片

3 ,将Info.plist 转换成常规的key

技术分享图片

技术分享图片

 

4,配置InfoPlist.strings

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 

5 这样就完成了,切换系统语言之后名字就会跟着变化了

--------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------

 配置一般的国际化配置文件

1 新增一个 Localizable.strings 文件,然后和上面一样的操作,然后在对应的不同的文件里设置不同的key value

技术分享图片

技术分享图片

2 然后在项目里根据不同的语言去获取不通的名字

 

NSLocalizedString(@"titleName", nil)

这样就实现项目多语言化了

如果需要切换语言 只需要设置语言 

//"zh-Hans-US", 中文
//"en-US",英文

 //  所有语言 NSArray *languages = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];
 // 设置语言
NSArray *lans = @[@"en-US"];
    [[NSUserDefaults standardUserDefaults] setObject:lans forKey:@"AppleLanguages"];

项目中经常遇到多人开发可能会涉及到大家都去修改 Localizable.strings 这样会处理不好可能会出现冲突 那么可以自己再创建一个strings定义 ****.strings

然后在获取国际化名字的时候只需要指定是从哪个.strings 表中获取的就行 代码如下

self.bb.text=NSLocalizedStringFromTable(@"titleName", @"Mine", nil);

 

技术分享图片

----------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------

图片国际化配置

1 拖入一张图片到项目目录下,不是拖到Assets.xcassets里

然后和之前一样的、操作 然后查看目录 替换里面的图片就能对不同语言的图片进行适配了

技术分享图片

技术分享图片

技术分享图片

技术分享图片

然后用代码适配获取不同的图片

 NSString *imageName = NSLocalizedString(@"doctor_start_10", nil);
    UIImage *image = [UIImage imageNamed:imageName];
    self.img.image=image;

至此国际化适配完毕

以上是关于iOS项目国际化详解的主要内容,如果未能解决你的问题,请参考以下文章

IOS 项目国际化(多语言支持)

ngx-translate实现国际化:this.translate.use()this.translate.get()this.translate.instant()onLangChange(代码片段

20160222.CCPP体系详解(0032天)

angularjs国际化多语言,angular-translate教程详解,$translate.instant()为什么不生效

IOS:iOS项目的版本国际化的完整流程

iOS中 HTTP/Socket/TCP/IP通信协议详解