gpt4 book ai didi

ios - 如何强制应用程序更改 iOS/Objective-C 中的语言?

转载 作者:行者123 更新时间:2023-11-28 18:55:29 25 4
gpt4 key购买 nike

我遇到了让应用程序立即更改语言的问题,例如 this app .

我发现了很多类似的问题,例如 thisthis .

但是,不幸的是,这些问题的相关答案对我不起作用。当我点击一个单元格时,我需要我的应用程序立即更改语言。

有什么想法吗?提前致谢。

最佳答案

我的解决方案

首先你需要创建字符串文件

Go to Project Right Click.
New File->iOS
Under iOS you can see the Resource
Click Resource and you can see the String File among the group of files.
Click that give name whatever you want.

现在您可以创建下面的字符串文件了。

"Date"="Date";

"Time"="Time";

"Done"="Done";

"Back"="Back";

在appDelegate.h中

-(NSString*) languageSelectedStringForKey:(NSString*) key
{
NSString *path;
AppDelegate *app=(AppDelegate *)[[UIApplication sharedApplication]delegate];
if(app.currentLanguage==ENGLISH)
path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
else if(app.currentLanguage==TAMIL)
path = [[NSBundle mainBundle] pathForResource:@"ta-IN" ofType:@"lproj"];
else if(app.currentLanguage==SPANISH)
path = [[NSBundle mainBundle] pathForResource:@"es" ofType:@"lproj"];
else if(app.currentLanguage==FRENCH)
path = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"];
else if(app.currentLanguage==JAPANESE)
path = [[NSBundle mainBundle] pathForResource:@"ja" ofType:@"lproj"];
else if(app.currentLanguage==GERMAN)
path = [[NSBundle mainBundle] pathForResource:@"de" ofType:@"lproj"];
else if(app.currentLanguage==KOREAN)
path = [[NSBundle mainBundle] pathForResource:@"ko" ofType:@"lproj"];
else if(app.currentLanguage==RUSSIAN)
path = [[NSBundle mainBundle] pathForResource:@"ru" ofType:@"lproj"];
else if(app.currentLanguage==HINDI)
path = [[NSBundle mainBundle] pathForResource:@"hi" ofType:@"lproj"];
else if(app.currentLanguage==CHINESE)
path = [[NSBundle mainBundle] pathForResource:@"zh-Hans" ofType:@"lproj"];
else if(app.currentLanguage==ITALIAN)
path = [[NSBundle mainBundle] pathForResource:@"it" ofType:@"lproj"];
else if(app.currentLanguage==PORTUGUESE)
path = [[NSBundle mainBundle] pathForResource:@"pt" ofType:@"lproj"];
else if(app.currentLanguage==THAI)
path = [[NSBundle mainBundle] pathForResource:@"th" ofType:@"lproj"];
else if(app.currentLanguage==MALAY)
path = [[NSBundle mainBundle] pathForResource:@"ms" ofType:@"lproj"];
else if(app.currentLanguage==INDONESIAN)
path = [[NSBundle mainBundle] pathForResource:@"id" ofType:@"lproj"];
else if(app.currentLanguage==CHINESE1)
path = [[NSBundle mainBundle] pathForResource:@"zh-Hant" ofType:@"lproj"];
else
{
path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
}
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
NSString* str=[languageBundle localizedStringForKey:key value:@"" table:@"LocalizeSTRING"];
return str;
}

在appDelegate.m的didFinishLaunchingWithOptions中调用上述方法

NSString *str=[[[NSUserDefaults standardUserDefaults]objectForKey:@"AppleLanguages"] objectAtIndex:0];

if([str isEqualToString:[NSString stringWithFormat: @"en"]])
{
currentLanguage=ENGLISH;
selectedrow=ENGLISH;
}
else if([str isEqualToString:[NSString stringWithFormat: @"ta-IN"]])
{
currentLanguage=TAMIL;
selectedrow=TAMIL;
}
else if([str isEqualToString:[NSString stringWithFormat: @"es"]])
{
currentLanguage=SPANISH;
selectedrow=SPANISH;
}
else if([str isEqualToString:[NSString stringWithFormat: @"fr"]])
{
currentLanguage=FRENCH;
selectedrow=FRENCH;
}
else if([str isEqualToString:[NSString stringWithFormat: @"ja"]])
{
currentLanguage=JAPANESE;
selectedrow=JAPANESE;
}
else if([str isEqualToString:[NSString stringWithFormat: @"de"]])
{
currentLanguage=GERMAN;
selectedrow=GERMAN;
}
else if([str isEqualToString:[NSString stringWithFormat: @"ko"]])
{
currentLanguage=KOREAN;
selectedrow=KOREAN;
}
else if([str isEqualToString:[NSString stringWithFormat: @"ru"]])
{
currentLanguage=RUSSIAN;
selectedrow=RUSSIAN;
}
else if([str isEqualToString:[NSString stringWithFormat: @"hi"]])
{
currentLanguage=HINDI;
selectedrow=HINDI;
}
else if([str isEqualToString:[NSString stringWithFormat: @"zh-Hans"]])
{
currentLanguage=CHINESE;
selectedrow=CHINESE;
}
else if([str isEqualToString:[NSString stringWithFormat: @"it"]])
{
currentLanguage=ITALIAN;
selectedrow=ITALIAN;
}
else if([str isEqualToString:[NSString stringWithFormat: @"pt"]])
{
currentLanguage=PORTUGUESE;
selectedrow=PORTUGUESE;
}
else if([str isEqualToString:[NSString stringWithFormat: @"th"]])
{
currentLanguage=THAI;
selectedrow=THAI;
}
else if([str isEqualToString:[NSString stringWithFormat: @"ms"]])
{
currentLanguage=MALAY;
selectedrow=MALAY;
}
else if([str isEqualToString:[NSString stringWithFormat: @"id"]])
{
currentLanguage=INDONESIAN;
selectedrow=INDONESIAN;
}

else if([str isEqualToString:[NSString stringWithFormat: @"zh-Hant"]])
{
currentLanguage=CHINESE1;
selectedrow=CHINESE1;
}

[self languageSelectedStringForKey:str];

然后在你需要的 View Controller 中

-(NSString*) languageSelectedStringForKey:(NSString*) key
{
app=(AppDelegate *)[[UIApplication sharedApplication]delegate];
if(app.currentLanguage==ENGLISH)
path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
else if(app.currentLanguage==TAMIL)
path = [[NSBundle mainBundle] pathForResource:@"ta-IN" ofType:@"lproj"];
else if(app.currentLanguage==SPANISH)
path = [[NSBundle mainBundle] pathForResource:@"es" ofType:@"lproj"];
else if(app.currentLanguage==FRENCH)
path = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"];
else if(app.currentLanguage==JAPANESE)
path = [[NSBundle mainBundle] pathForResource:@"ja" ofType:@"lproj"];
else if(app.currentLanguage==GERMAN)
path = [[NSBundle mainBundle] pathForResource:@"de" ofType:@"lproj"];
else if(app.currentLanguage==KOREAN)
path = [[NSBundle mainBundle] pathForResource:@"ko" ofType:@"lproj"];
else if(app.currentLanguage==RUSSIAN)
path = [[NSBundle mainBundle] pathForResource:@"ru" ofType:@"lproj"];
else if(app.currentLanguage==HINDI)
path = [[NSBundle mainBundle] pathForResource:@"hi" ofType:@"lproj"];
else if(app.currentLanguage==CHINESE)
path = [[NSBundle mainBundle] pathForResource:@"zh-Hans" ofType:@"lproj"];
else if(app.currentLanguage==ITALIAN)
path = [[NSBundle mainBundle] pathForResource:@"it" ofType:@"lproj"];
else if(app.currentLanguage==PORTUGUESE)
path = [[NSBundle mainBundle] pathForResource:@"pt" ofType:@"lproj"];
else if(app.currentLanguage==THAI)
path = [[NSBundle mainBundle] pathForResource:@"th" ofType:@"lproj"];
else if(app.currentLanguage==MALAY)
path = [[NSBundle mainBundle] pathForResource:@"ms" ofType:@"lproj"];
else if(app.currentLanguage==INDONESIAN)
path = [[NSBundle mainBundle] pathForResource:@"id" ofType:@"lproj"];
else if(app.currentLanguage==CHINESE1)
path = [[NSBundle mainBundle] pathForResource:@"zh-Hant" ofType:@"lproj"];
else
{
path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
}
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
NSString* str=[languageBundle localizedStringForKey:key value:@"" table:@"LocalizeSTRING"];
return str;
}

在您的 viewDidLoad 和 viewWillAppear 方法中调用上述方法或在您要调用的地方调用该方法

- (void)viewWillAppear:(BOOL)animated
{
//If you want to set language in label,TextFiled
localizeBackLabel.text=[self languageSelectedStringForKey:@"Back"];
localizeDoneLabel.text=[self languageSelectedStringForKey:@"Done"];
localizeTimeLabel.text=[self languageSelectedStringForKey:@"Time"];
localizeDateLabel.text=[self languageSelectedStringForKey:@"Date"];

//If you want to set language in button
[yourButton setTitle:[self languageSelectedStringForKey:@"Back"]; forState:UIControlStateNormal];
[yourButton setTitle:[self languageSelectedStringForKey:@"Done"]; forState:UIControlStateNormal];

//If you want to set the Language in cell
cell.labelHomeList.text=[self languageSelectedStringForKey:@"Date"];
cell.labelHomeList.text=[self languageSelectedStringForKey:@"Time"];
}

最后如果你想将语言更改为其他语言。例如在(设置)表中你有两种语言。如果你想将其更改为其他语言,请按照以下编码

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
AppDelegate *app=(AppDelegate *)[[UIApplication sharedApplication]delegate];
app.selectedrow=indexPath.row;
if (indexPath.row==0)
{
app.currentLanguage=ENGLISH;
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", nil]forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"%d", [[NSUserDefaults standardUserDefaults] synchronize]);
}
else
{
app.currentLanguage=CHINESE1;
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"zh-Hant", nil]forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}

它完美地工作。

关于ios - 如何强制应用程序更改 iOS/Objective-C 中的语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34130853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com