更改应用程序语言ios而无需重新启动Objective C.

时间:2015-12-19 07:02:31

标签: objective-c iphone nslocalizedstring

我正在尝试更改我的应用语言而不重新启动应用。我已经检查了所有示例并询问有关堆栈溢出的问题。但我没有找到任何有用的链接。 我使用以下代码。

- (void)languageChanger {
MBProgressHUD * hudFirst = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hudFirst.delegate = self;
hudFirst.labelText=NSLocalizedString(@"Please wait", @"Message");
hudFirst.center=self.view.center;
hudFirst.dimBackground=YES;
[hudFirst show:YES];
//[self localizedString:@"pl"];
NSString *Language=_select.titleLabel.text;
if ([Language isEqualToString:[languageArray objectAtIndex:0]]|| Language == nil) {
    Language=@"en";
}
else{
 Language=@"pl";
}
[self localizedString:Language];
NSString *uid = [[NSUserDefaults standardUserDefaults] objectForKey:@"userId"];
NSDictionary *inputDic=[NSDictionary dictionaryWithObjectsAndKeys:Language,@"lang",uid,@"id", nil];
NSString *urlString=[Globals urlCombileHash:kApiDominStage ClassUrl:@"ChangeLanguage/" apiKey:[Globals apiKey]];
[Globals PostApiURL:urlString data:inputDic success:^(id responseObject) {

    [self localizedString:Language];
    [hudFirst hide:YES];
}
failure:^(NSError *error) {
    [hudFirst hide:YES];
    _errorView.hidden=NO;
    _lblMessage.text=NSLocalizedString(@"Sorry! Internal Server Error.", @"Message");
    blurredView.hidden=NO;
 }];
}


- (void) localizedString:(NSString *)key {
NSString *langCode = key;
NSArray *languages = nil;
languages = [NSArray arrayWithObject:langCode];
[[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];

}

1 个答案:

答案 0 :(得分:0)

您需要为每种语言创建.strings文件。 为此,通过按加号按钮enter image description here

进入Project-> localizations->创建新文件

在此.strings文件中输入您的密钥,例如this-> 我为西班牙语做过。

/* 
  French.strings
  EzEve

  Created by MOHIT MATHUR on 07/12/15.
  Copyright © 2015 CGT. All rights reserved.
*/
"Old_Password"="Introduzca su contraseña antigua";
"New_Password"="Introduzca su nueva contraseña";
"Confirm_Password"="Introduzca su nueva contraseña";
"Password_Length"="La contraseña debe tener al menos 6 caracteres";
"Password_Match"="Nueva contraseña y Confirmar contraseña no coinciden!";
"Camera_Support"="Este dispositivo no es compatible con la cámara";
"Country_Code"="Por favor, introduzca el código de país";
"Phone_Length"="Número de teléfono debe tener una antigüedad de 7 dígitos";
"Email_Validation"="Por favor, introduzca la dirección de correo electrónico válida (abc@example.com)";
"Email_Phone"="Número de teléfono debe ser por lo menos entrar en correo electrónico o número de teléfono";
"Fetch_Countries"="Imposible obtener países. Comprueba tu conexión a Internet y oprima REINT para volver a intentarlo o CANCELAR para abortar";
"Internet_Connection"="Conexión a Internet parece estar fuera de línea!";
"Profile_Change"="Perfil actualizado correctamente";
"Password_Change"="Contraseña cambiada con éxito";

"Name"="Nombre";
"Surname"="Apellido";
"UserName"="Nombre de usuario";
"Email"="Dirección de correo electrónico";
"Code"="1 (EE.UU.)";
"Phone"="Número de teléfono";
"Address"="Dirección";
"City"="Ciudad";
"State"="Estado";
"Zipcode"="Código postal";
"Country"="País";
"OldPassword"="Contraseña anterior";
"NewPassword"="Nueva contraseña";
"ConfirmPassword"="Confirmar contraseña";
"Change Password"="Cambiar la contraseña";
"Profile"="Configuración del perfil";
"Save"="Ahorrar";
"Avatar"="Seleccione Avatar";
"Male"="Masculino";
"Female"="Hembra";
"<20"="<20 años";
"20 and 30"="Entre el 20 y 30";
"30 and 39"="Entre 30 y 39";
"40 and 49"="Entre el 40 y el 49";
"50 and 59"="Entre el 50 y el 59 ";
"60 and 69"="Entre el 60 y el 69";
">70 Years"="> 70 años";
"Age"="Grupo de Edad";
"Done"="Hecho";
"Cancel"="Cancelar";
"AgeGroup"="Seleccione Grupo de Edad";

"Device"="Mi dispositivo";
"Facebook"="Tu Facebook";
"Twitter"="Tu Twitter";

现在,创建一个可以从所有类访问的常用方法 - &gt;

+ (NSString*)setLanguage:(NSString *)key{

    NSMutableDictionary *dict=[[NSMutableDictionary alloc]initWithDictionary:[[NSUserDefaults standardUserDefaults]objectForKey:KEY_USER_INFO]];

       return NSLocalizedStringFromTable(key, [dict objectForKey:KEY_LANGUAGE], @"");


}

现在,无论您需要设置text-&gt;

,都可以调用此方法
[CommonFunctions setLanguage:@"Facebook"];