2012-04-16 65 views
2

創造新的可可申請文件後,我加,我加入了本地化字符串文件localizeFile.strings(英文)和localizeFile.strings(西班牙)NSLocalizedString沒有返回本地化文本XCode4

在localizeFile.strings(英文) 「TITLE」=「你好!」;

在localizeFile.strings(西班牙文)文件中,我添加了「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 Hello,點擊按鈕。

有人能指導我怎麼能得到本地化的字符串?請幫

+0

你看過[本頁](https://developer.apple.com/internationalization/#internationalize)上的所有資源嗎? – 2012-04-16 07:03:35

+0

@羅布,我看過那個文件,它是一個巨大的,它是非常廣泛的,沒有提到整潔的程序來做國際化。爲了我的理解目的,我試圖做一個非常基本的樣本 – Akbar 2012-04-16 10:02:39

回答

3

這聽起來像應用程序不知道localizeFile.strings的。你是否爲申請聲明瞭語言?您的創作資料中是否有複製規則?

編輯

您可以在這裏添加語言(紅色箭頭): enter image description here

第二編輯

如果你想使用沒有系統級設置語言,您可以執行以下操作:

// 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 2012-04-16 07:00:16

+0

我編輯了我的答案,看圖片。 – Matthias 2012-04-16 07:06:14

+0

感謝您分享圖片,但我無法看到代理被阻止的圖像。我按照添加新語言的步驟選擇localizedFile.String,然後在檢查器面板中的本地化部分下,單擊+符號,從列表中我選擇了英語,日語和西班牙語等語言。 – Akbar 2012-04-16 07:19:35