一千萬個為什麽

搜索

在運行時更改NSLocalizedString()的語言

我有一個iPhone應用程序,它有一個在運行時改變顯示語言的按鈕。我查看了NSLocalizedString(),它將根據系統偏好返回適當的字符串。我的選擇是什麽,而不是硬編碼所有顯示字符串,並在運行時根據用戶語言選擇返回?任何指針將不勝感激。

最佳答案

基於用戶“object2.0”發布的帖子,我已經將您可以在應用程序中使用的一些示例代碼放在一起,以便即時更改UI語言。

努力工作的主要本地化課程:

-(NSString *) localized:(NSString *) key
{
  GameInfo *gameInfo = [GameInfo sharedInstance];

 //langCode should be set as a global variable somewhere
  NSString *path = [[NSBundle mainBundle] pathForResource:langCode ofType:@"lproj"];

  NSBundle* languageBundle = [NSBundle bundleWithPath:path];
  return [languageBundle localizedStringForKey:key value:@"" table:nil];
}

假設您在名為utils的全局類中具有此函數,請使用以下代碼調用此函數(例如輸出單詞“Settings”)。

NSLog( [utils localized:@"Settings"] );

要更改語言:

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:langCode, nil] forKey:@"AppleLanguages"];

轉載註明原文: 在運行時更改NSLocalizedString()的語言