如何在用户更改设备语言时更新设备语言

时间:2014-01-20 04:58:21

标签: ios objective-c localization nsstring nslocale

目前我正在通过此代码获取当前的设备语言:

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

现在,只要用户通过NSCurrentLocaleDidChangeNotification

更改为设备中的其他语言,我就需要更新此语言

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

2 个答案:

答案 0 :(得分:1)

没有必要自己做,iOS会照顾你

了解哪种语言 - >假设您在设备 - >设置中更改语言 后台的所有应用程序都将被终止,你需要再次启动它 方法


你的情况非常不同,所以如何实现更改语言的通知,这是不可能的因为应用程序被终止所以你没有得到任何通知,

更好你需要使用用户默认值试试这个

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 


  • 选择您的项目 - > info-> localisation->“添加您想要支持的语言”
  • info.plist文件已添加到您的项目中,选择您想要支持的语言
  • key = value;格式编辑该文件// heare key是您的帮助的基本语言,值是支持的语言。

例如,heare我添加了“spanish”语言,其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

......还有其他人

只需像这样使用,当您更改设备中的语言时,每个键的值都会更新,您无需执行额外的工作

那里有很多博客你可以关注它。

答案 1 :(得分:0)

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

每次更改设备语言时,您的应用都会重新启动。