Строки локализации не всегда работают с ShareKit в проекте - PullRequest
1 голос
/ 13 октября 2011

, поскольку я удалил некоторые локализации из своего приложения, у меня возникла эта проблема: при первой загрузке приложения я вижу локализованную строку моего ключа в метке.Во второй раз, когда я загружаю приложение, появляется ключ xxxxx.В следующий раз, когда я загружаю приложение, все снова хорошо (показывает локализованную строку).Как это может быть?

Я был бы рад, если бы кто-нибудь мог указать мне правильное направление.Я на Xcode 4.2.

Заранее спасибо!

1 Ответ

5 голосов
/ 13 октября 2011

Я тоже испытал это после добавления библиотеки ShareKit в свой проект. Как оказалось, проблема заключалась в том, что ShareKit включает в себя файл localizable.strings, а в моем собственном проекте был файл с таким же именем. Я не уверен, почему, но когда вы запустили приложение, была обнаружена любая из этих двух локализуемых строк, а не обе. Если вы переименуете файл localizable.strings, чтобы не было конфликтующего имени файла, проблема должна исчезнуть.

Если вы переименуете свои localizable.strings, вам нужно обновить код, который загружает строки из этого конкретного файла строк, используя макрос NSLocalizedStringFromTable вместо NSLocalizedString. Например, я переименовал Shareizit 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;
}
...