因爲我已經從我的應用程序中刪除了一些本地化,我遇到了這個問題:第一次加載我的應用程序時,我在標籤中看到了我的密鑰的本地化字符串。第二次加載應用程序時,出現xxxxxkey。下次我加載應用程序,一切都很好(顯示本地化的字符串)。怎麼會這樣?本地化字符串並不總是在項目中使用ShareKit
我會很高興,如果任何人都可以指出我在正確的方向。我在Xcode 4.2上。
在此先感謝!
因爲我已經從我的應用程序中刪除了一些本地化,我遇到了這個問題:第一次加載我的應用程序時,我在標籤中看到了我的密鑰的本地化字符串。第二次加載應用程序時,出現xxxxxkey。下次我加載應用程序,一切都很好(顯示本地化的字符串)。怎麼會這樣?本地化字符串並不總是在項目中使用ShareKit
我會很高興,如果任何人都可以指出我在正確的方向。我在Xcode 4.2上。
在此先感謝!
將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;
}