2014-01-20 33 views
0

目前即时通讯这个代码获取当前的设备语言:如何,每当用户改变其更新设备语言

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; 

现在我需要更新此语言,只要通过NSCurrentLocaleDidChangeNotification

用户更改到设备的其他语言

你可以建议我如何更新语言,如果用户更改为设备中的其他语言。

回答

1

没有必要由你自己做,iOS设备会照顾的ü

的知道哪些语言 - >假设当u改变语言装置 - >设置 所有的应用程序在后台会终止,和u需要在 方法再次启动它


你的情况是非常不同的,所以你怎么能对不断变化的语言实现通知,becz应用程序被终止,这样你们不就不可能得到任何通知,

更好

u需要使用用户默认试试这个

EDITED FOR CONDITION


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    { 


    // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(defaultsChanged) name:NSCurrentLocaleDidChangeNotification object:nil]; 


    NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
    NSLog(@"%@",language); 
    NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults]; 
    NSString *currecntLan = [standardDefaults objectForKey:@"CURRENTLAN"]; 
    if([currecntLan isEqualToString:language]) 
    { 
     NSLog(@"language does't change"); 
    } 
    else 
    { 
     NSLog(@"CHANGED"); 
     //your saving code 
    } 
    } 


- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 


    //since u need to update the userdefaults 
    //hear u can set the defaults with current language 
    NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
    NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults]; 
    [standardDefaults setObject:language forKey:@"CURRENTLAN"]; 


} 


END EDITE FOR CONDITION

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

{

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
    NSLog(@"%@",language);//it prints "en" for english 

    ..update it to server heare 


  • 选择你的项目 - >信息 - >本地化 - > “添加ü要suppourt语言”
  • Info.plist文件添加到你的项目,在那里选择你想要支持的语言
  • 编辑该文件的格式为key = value; // heare key是帮助的基本语言,值是支持的语言。

例如,heare我添加了 “西班牙” 语言的stringfile看起来像下面

"Automatic Play" = "juego automático"; 
"Manual Play"  = "juego manual"; 
"Settings"   = "Ajustes"; 


另一个字符串文件日语它看起来像下面


"Automatic Play" = "自動再生"; 
"Manual Play"  = "手動遊び"; 
"Settings"   = "設定"; 


后,美需要使用一些在宏编程文件,例如

[aButton setTitle:NSLocalizedString(@"Automatic Play", nil) forState:UIControlStateNormal]; //use like this hear "Automatic Play" is the key that u specify 

...和他人也

只是用这样的并且当您更改设备中的语言时,每个密钥的值都会更新,因此不需要执行额外的工作

有很多博客可以关注它。

+0

我这样做的东西已经 –

+0

如果用户更改语言设置,然后再次打开该应用程序,我需要更新用户更改语言 –

+0

雅它将更新 –

0

不用担心,只需检查应用程序启动时的语言。

每当您更改设备语言时,您的应用程序将重新启动。