2012-04-16 2 views
2

После создания нового приложения какао, я добавил локализации строковых файлов localizeFile.strings (английский) и localizeFile.strings (испанский)NSLocalizedString не возвращает локализованный текст XCode4

В localizeFile.strings (английский) файл я добавил "TITLE" = "Hello!";

В файле localizeFile.strings (Spanish) я добавил «TITLE» = «Hola!»;

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

-(IBAction)english:(id)sender 
{ 
    // NSString *engText = [[NSBundle mainBundle] localizedStringForKey:@"TITLE" value:@"" table:nil]; 
    NSString *engText = NSLocalizedString(@"TITLE", nil); 
    NSLog(@"engText %@",engText); 
    [displayText setStringValue:engText]; 
} 

-(IBAction)spanish:(id)sender 
{ 
    NSString *spanText = NSLocalizedString(@"TITLE", nil); 
     NSLog(@"spanText %@",spanText); 
    [displayText setStringValue:spanText]; 
} 

Здесь DisplayText является NSTextField и два действия в одном окне.

Я видел в консоли engText TITLE вместо engText Здравствуйте, нажимая кнопки.

Может кто-нибудь наставит меня, как я могу получить локализованные строки? Пожалуйста, помогите

+0

Вы просмотрели все ресурсы на этой странице (https://developer.apple.com/internationalization/#internationalize)? –

+0

@ Rob, я видел этот документ, он огромный, он очень обширен и не упоминается аккуратной процедурой интернационализации. Для моей цели понимания я пытаюсь сделать очень простой пример – Akbar

ответ

3

Это звучит как приложение не знает localizeFile.strings. Вы объявили языки для приложения? Есть ли правило копирования в вашем профиле создания?

EDIT

Вы можете добавить язык здесь (красная стрелка): enter image description here

2nd EDIT

Если вы хотите использовать язык, который не установлен на системном уровне, вы можете сделать следующее:

// Assume you have defined constants, e.g. 1 - English, 2 - Espanol, 3 - .... 
    switch (language) { 
     case kLangEn: // =1 
      path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; 
      break: 
     case kLangEs: // =2 
      path = [[NSBundle mainBundle] pathForResource:@"es" ofType:@"lproj"]; 
      break: 
      // etc. 
    } 
    NSBundle *languageBundle = [NSBundle bundleWithPathath]; 
    NSString *str = [languageBundle localizedStringForKey:key value:@"" table:nil]; 
+0

Вы объявили языки для Нет, я не знаю, как это сделать. Можете ли вы просто проинформировать меня об этом. – Akbar

+0

Я отредактировал свой ответ, см. Изображение. – Matthias

+0

Спасибо за совместное использование изображения, но я не смог увидеть изображение, поскольку прокси-сервер заблокирован. Шаги, которые я выполнил для добавления новых языков, выбраны localizedFile.String и в панели инспектора, в разделе локализации, щелкните по знаку + из списка я изложил языки English, Japnees и Spanish и т. д. – Akbar

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