ios 实现app语言切换,不跟随系统
2014-10-16 09:57
567 查看
实现的功能是第一次app打开跟随系统语言, 其他则显示用户选择的语言,直接上代码:
.h文件
#import <Foundation/Foundation.h>
@interface MyLocalString : NSObject
+(MyLocalString *)sharedInstance;
-(NSString *)MyLocalStringForKey:(NSString *)key;
-(void)setMyLanguage:(NSString *)language;
@end
.m文件
#import "MyLocalString.h"
static MyLocalString* localString=nil;
NSBundle *languageBundle=nil;
@implementation MyLocalString
+(MyLocalString*)sharedInstance
{
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate,^{
localString = [[MyLocalStringalloc]init];
NSUserDefaults *def=[NSUserDefaults standardUserDefaults];
NSString *language=[def valueForKey:@"userLanguage"];
NSString *currentString=nil;
if (language.length==0)
{
NSArray *languageArr=[def valueForKey:@"AppleLanguages"];
currentString=[languageArr objectAtIndex:0];
[def setValue:currentString forKey:@"userLanguage"];
[def synchronize];
}else
{
currentString=language;
}
NSString *path = [[NSBundle mainBundle] pathForResource:currentString ofType:@"lproj"]; // "zh", "fr"等
languageBundle=[NSBundle bundleWithPath:path];
});
return localString;
}
-(NSString *)MyLocalStringForKey:(NSString *)key
{
return [languageBundle localizedStringForKey:key value:@"" table:nil];
}
-(void)setMyLanguage:(NSString *)language
{
NSUserDefaults *def=[NSUserDefaults standardUserDefaults];
[def setValue:language forKey:@"userLanguage"];
[def synchronize];
NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@"lproj"];
languageBundle=[NSBundle bundleWithPath:path];
}
@end
.h文件
#import <Foundation/Foundation.h>
@interface MyLocalString : NSObject
+(MyLocalString *)sharedInstance;
-(NSString *)MyLocalStringForKey:(NSString *)key;
-(void)setMyLanguage:(NSString *)language;
@end
.m文件
#import "MyLocalString.h"
static MyLocalString* localString=nil;
NSBundle *languageBundle=nil;
@implementation MyLocalString
+(MyLocalString*)sharedInstance
{
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate,^{
localString = [[MyLocalStringalloc]init];
NSUserDefaults *def=[NSUserDefaults standardUserDefaults];
NSString *language=[def valueForKey:@"userLanguage"];
NSString *currentString=nil;
if (language.length==0)
{
NSArray *languageArr=[def valueForKey:@"AppleLanguages"];
currentString=[languageArr objectAtIndex:0];
[def setValue:currentString forKey:@"userLanguage"];
[def synchronize];
}else
{
currentString=language;
}
NSString *path = [[NSBundle mainBundle] pathForResource:currentString ofType:@"lproj"]; // "zh", "fr"等
languageBundle=[NSBundle bundleWithPath:path];
});
return localString;
}
-(NSString *)MyLocalStringForKey:(NSString *)key
{
return [languageBundle localizedStringForKey:key value:@"" table:nil];
}
-(void)setMyLanguage:(NSString *)language
{
NSUserDefaults *def=[NSUserDefaults standardUserDefaults];
[def setValue:language forKey:@"userLanguage"];
[def synchronize];
NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@"lproj"];
languageBundle=[NSBundle bundleWithPath:path];
}
@end
相关文章推荐
- IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)
- IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)
- IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源)
- iOS应用内部切换语言,不跟随系统
- iOS应用内部切换语言,不跟随系统
- iOS多语言(国际化)开发(跟随系统 + APP内手动设置)
- 关于iOS国际化(根据手机系统来切换语言) App支持多语言切换
- iOS应用内部切换语言,不跟随系统
- iOS本地化国际化(续):不更随系统,手动选择APP语言 本地化和国际化的实现
- iOS应用内部切换语言,不跟随系统
- iOS 应用程序内部国际化,不跟随系统语言
- iOS 应用程序内部国际化,不跟随系统语言
- iOS中代码支持多国语言切换的实现(Xcode5+iOS7)
- ios开发应用内实现多语言自由切换 (转)
- [iOS]如何在iOS开发中切换显示语言实现国际化
- IOS APP软件多国语言切换,国际化app
- ios应用内切换设置语言,不跟系统变化
- iOS 应用程序内部国际化,不跟随系统语言
- iOS 应用程序内部国际化,不跟随系统语言
- iOS -- 国际化,不跟随系统语言--(不能使用storyboard、xib等)可网络上搜索 storyboard国际化