2011-10-12 10 views
1

因爲我已經從我的應用程序中刪除了一些本地化,我遇到了這個問題:第一次加載我的應用程序時,我在標籤中看到了我的密鑰的本地化字符串。第二次加載應用程序時,出現xxxxxkey。下次我加載應用程序,一切都很好(顯示本地化的字符串)。怎麼會這樣?本地化字符串並不總是在項目中使用ShareKit

我會很高興,如果任何人都可以指出我在正確的方向。我在Xcode 4.2上。

在此先感謝!

回答

5

將ShareKit庫添加到我的項目後,我也遇到過這個問題。事實證明,問題是ShareKit包含一個localizable.strings文件,而且我自己的項目包含一個具有相同名稱的文件。我不知道爲什麼,但是當你啓動應用程序時,這兩個localizable.string中的任何一個都被拾取,而不是兩個。如果您重命名localizable.strings文件,以便沒有衝突的文件名,則問題應該消失。

如果您重命名localizable.strings,則需要使用NSLocalizedStringFromTable宏而不是NSLocalizedString更新從此特定字符串文件加載字符串的代碼。例如,我將ShareKit的localizable.strings重命名爲ShareKit.strings並編輯該方法的第一行,如下所示:

NSString* SHKLocalizedString(NSString* key, ...) 
{ 
    // Localize the format 
    // Was: 
    // NSString *localizedStringFormat = NSLocalizedString(key, key); 
    NSString *localizedStringFormat = NSLocalizedStringFromTable(key, @"ShareKit", key); 

    va_list args; 
    va_start(args, key); 
    NSString *string = [[[NSString alloc] initWithFormat:localizedStringFormat arguments:args] autorelease]; 
    va_end(args); 

    return string; 
} 
相關問題