iOS多语言环境支持设计
2013-12-23 11:52
253 查看
关于iOS多语言环境支持的设计分为两种:根据系统语言环境的设计和应用内切换设计。
这样会在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 =[[NSBundlemainBundle]
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的语言环境。
一、根据系统语言环境的设计
当支持这种模式的时候,需要在工程信息的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 =[[NSBundlemainBundle]
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的语言环境。
相关文章推荐
- iOS多语言环境支持设计
- 如何让你的iPhone程序支持多语言环境(本地化)
- ANSI环境下支持多语言输入的单行文本编辑器 V0.01
- 如果网页内容需要支持多语言,你会怎么做?在设计和开发多语言网站时,有哪些问题你必须要考虑?
- ios 多语言支持
- Cocoa程序支持多国语言环境
- 【VC编程技巧】动态链接库☞1.5设计支持多国语言应用程序
- 【ios开发】多语言环境
- IOS 多语言自动化测试 - 如何自动切换运行语言环境
- iOS-生成国际化包-配置App多语言支持
- 第二章:iOS应用安全与测试环境——2.4 iOS第三方库和应用支持
- 如果网页内容需要支持多语言,你会怎么做?在设计和开发多语言网站时,有哪些问题你必须要考虑?
- 关于iOS国际化(根据手机App用户自己来切换语言) App支持多语言切换
- Java模式设计之多态模式与多语言支持
- iOS中代码支持多国语言切换的实现(Xcode5+iOS7)
- ios本地化多语言支持
- mac、iOS端支持自定义布局的collection控件的实现与设计
- ios 多语言环境 二
- iOS中代码支持多国语言切换的实现(Xcode5+iOS7)
- iOS开发核心语言Objective C语言 —— 特有语法及设计模式