本地化字符串并不总是在项目中使用ShareKit

bra*_*ray 1 iphone localization ios xcode4 sharekit

因为我从我的应用程序中删除了一些本地化,所以我遇到了这个问题:第一次加载应用程序时,我在标签中看到了我的密钥的本地化字符串.第二次加载应用程序时,会出现xxxxxkey.下次加载应用程序时,一切都很好(显示本地化的字符串).怎么会这样?

如果有人能指出我正确的方向,我会很高兴的.我在Xcode 4.2上.

提前致谢!

Cla*_*fou 5

将ShareKit库添加到项目后,我也遇到过这种情况.事实证明,问题是ShareKit包含一个localizable.strings文件,我自己的项目包含一个同名文件.我不确定为什么,但是当你启动应用程序时,这两个localizable.strings中的任何一个都被拾取,而不是两者.如果重命名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;
}
Run Code Online (Sandbox Code Playgroud)