iOS多语言环境支持设计

关于iOS多语言环境支持的设计分为两种:根据系统语言环境的设计和应用内切换设计。

一、根据系统语言环境的设计

当支持这种模式的时候,需要在工程信息的Localizations中添加你需要支持的语言


这样会在SupportFiles中增加你添加的语言文件


然后在这两个文件中添加需要的字符串

"Master" ="Master";

"Master" ="主视图";

前面是Key,后面是对应的Value。


最后就是在代码中如何读取了,

NSString *string =NSLocalizedString(@"Master",nil);


NslocalizedString()是一个宏定义方法,

#define NSLocalizedString(key, comment) \ [[NSBundle mainBundle]localizedStringForKey:(key) value:@"" table:nil]

key就是对应上面的Key,comment是对该字符串的描述,可以为nil,一般命名Key的时候就能直观的知道该字符串是干嘛用的。

该方法是通过系统语言自动读取对应文件中的字符串。


二、应用内多语言切换

1.字符串资源

这种模式不受系统语言的影响,由用户主动在APP内进行设置,设计思路也类似上面第一种的,通过对不同语言的本地文件进行读取。

不同的是这种模式需要自己创建不同语言的本地文件,根据上面使用键值对的方式我创建了两个plist文件


plist文件的Root类型设为Dictionary,Root下面就是一个个键值对

分别对应中英文文件里的字符串,设置好过后就是在代码中读取了。

首先获取文件路径

_chineshWordPath = [[NSBundlemainBundle] pathForResource:@"LocalString_chinese"ofType:@"plist"];

        _englishWordPath =[[ NSBundle mainBundle] pathForResource: @"LocalString_english" ofType: @"plist"];

然后是获取文件中的Dictionary,最后通过Key去获取对应的Value

NSDictionary *dict = [NSDictionarydictionaryWithContentsOfFile:resourcePath];//这里的resourcePath就是上面对应的中文还是英文文件路径

    NSString *string = [dictobjectForKey:key];


2.图片资源

有时候某些图片也需要不同的语言版本,又想用同一图片名去获取。这个时候需要创建多个文件夹,分别放不同的图片资源,添加到工程中

注意这两个文件是蓝色的,与上面黄色的不同,这是因为在Add Files时选择的是第二个


这样创建的是两个真正的文件夹,因为需要添加多个同名的图片资源。这样不能拖动文件添加到工程的这种文件夹中,只能去Finder中该文件夹所在的位置添加。工程中显示新添加的文件




最后就是在代码中读取图片了,首先要获取不同文件夹的路径,文件夹在资源文件夹里

_chineseImagesPath = [[[NSBundlemainBundle] resourcePath]stringByAppendingString:@"/Images_Chinese/"];

        _englishImagesPath = [[[NSBundlemainBundle] resourcePath]stringByAppendingString:@"/Images_English/"];

同样的方法,图片在Images文件夹里

NSString *imagePath = [resourcePathstringByAppendingString:@"image.png"];//这里的resourcePath就是上面对应的中文还是英文文件路径

    UIImage *image = [UIImageimageWithContentsOfFile:imagePath];


上面是设计的大概思路,具体使用如果这样一个一个去取还是很麻烦,还要判断语言环境。我在使用时用到一个单例,通过两个方法去读取字符串和图片


在初始化的时候获取资源路径


方法的实现

这里还用到另一个单例APPSetting时关于APP的一些设置,其中就有当前APP的语言环境。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值