0

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

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

现在,每当用户通过以下方式更改设备中的其他语言时,我都需要更新此语言NSCurrentLocaleDidChangeNotification

如果用户在设备中更改为其他语言,你能建议我如何更新语言吗?

4

2 回答 2

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.plist 文件被添加到您的项目中,在其中选择您要支持的语言
  • 以 //heare格式编辑该文件,key = value;键是您帮助的基本语言,值是支持的语言。

例如,听说我添加了“西班牙语”语言,它的字符串文件如下所示

 "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

...对于其他人也

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

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

于 2014-01-20T05:20:35.027 回答
0

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

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

于 2014-01-20T05:25:17.690 回答