2014-01-20 4 views
0

В настоящее время им получения текущего языка устройства с помощью этого кода:как обновлять язык устройства всякий раз, когда пользователь изменил его

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

Теперь мне нужно обновить этот язык всякий раз, когда пользователь изменит на другой язык в устройстве NSCurrentLocaleDidChangeNotification

Вы можете предложить мне, как обновить язык, если пользователь переключится на другой язык на устройстве.

ответ

1

Там нет необходимости делать по вашей собственной личности, IOS будет заботиться о у

для знать, какой язык -> предположит, когда и изменить язык в Device-> настройках всех приложений в фоновом режиме будет расторгнутым, а и нужно запустить его еще раз в методе


ваш случай очень отличается, так как вы можете осуществить уведомление для смены языка, не представляется возможным becz приложение завершается так у не получать уведомления,

лучше и нужно использовать по умолчанию пользовательские попробовать это

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-> локализации -> "добавить языки, что и хотите suppourt"
  • info.plist файл добавляется ваш проект, в котором выбрать язык u хотите suppourt
  • отредактируйте этот файл в формате 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

Не беспокойтесь, просто проверьте язык при запуске приложения.

Каждый раз, когда вы меняете язык устройства, приложение будет перезапущено.

Смежные вопросы