Подтвердить что ты не робот

Как получить локализованный Отмена, Готово и т.д.?

UIBarButtonItem имеют идентификаторы, такие как Cancel, Done и некоторые другие. Они отображаются как текст для пользователя. Если пользователь меняет язык, то, например, кнопка "Отмена" будет переведена автоматически. И как разработчик вам не нужно предоставлять строку локализации для этих кнопок. Это означает, что Cancel, Done и другие строки уже локализованы и входят вместе с ОС.

Это способ получить эти строки программно?

Я не хочу добавлять дополнительные строки в файлы локализации. И если это возможно, тогда это будет очень хорошо.

4b9b3361

Ответ 1

Вот небольшой макрос, который я создал для получения системных строк UIKit:

#define UIKitLocalizedString(key) [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] localizedStringForKey:key value:@"" table:nil]

Используйте его следующим образом:

UIKitLocalizedString(@"Search");
UIKitLocalizedString(@"Done");
UIKitLocalizedString(@"Cancel");
...

Ответ 2

Один (по общему признанию, сомнительный) способ легко справиться с этим напрямую связан с локализацией пакета Java:

Чтобы узнать, что они могут предложить, откройте следующий каталог через Finder:

/Applications/Xcode/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/System/Library/Frameworks

И в вашем случае вы откроете ./UIKit.framework/English.lproj/Localizable.strings (в TextMate). Здесь вы видите множество переводов, которые Apple использует для таких вещей, как "Печать", "ОК", "On", "Выкл." И т.д. Настоящая магия заключается в том, что существует около 35 различных языковых переводов, которые вы можете скопировать в свои собственные файлы Localizable.strings, бесплатно.

Если вы невероятно наглецы и не возражаете против того, чтобы ваша будущая стабильность в вашем приложении, вы можете пропустить всю "копию в свой собственный процесс Localizable.strings" и перейти прямо к исходному программному обеспечению

NSBundle *uiKitBundle = [NSBundle bundleWithIdentifier:@"com.apple.UIKit"];
NSString *onText = uiKitBundle ? [uiKitBundle localizedStringForKey:@"Yes" value:nil table:nil] : @"YES";
NSString *offText = uiKitBundle ? [uiKitBundle localizedStringForKey:@"No" value:nil table:nil] : @"NO";

Предостережение: я не рекомендую вам фактически обращаться к этим локализованным ресурсам программным способом в приложении, которое вы собираетесь отправить в App Store. Я просто иллюстрирую конкретную реализацию, которую я видел, которая касается вашего первоначального вопроса.

Ответ 3

Хотя, возможно, не совсем то, что вы искали, в магазине Mac App Store есть коммерческое приложение под названием "System Strings", утверждающее, что оно содержит коллекцию из более чем 53000 стандартных локализованных строк. Он был выпущен 2 ноября 2012 года. Я никоим образом не связан с этим приложением или автором. URL https://itunes.apple.com/us/app/systemstrings/id570467776.

Ответ 4

Похоже, что вы спрашиваете, может ли Apple предоставить доступ к словарю предварительно переведенных строк. Я бы подумал, что что-либо, предоставленное Apple для чего-то подобного, будет размещено в их Документах: Темы программирования интернационализации

Чтобы ответить на ваш вопрос, я не верю, что они предоставляют словарь/список известных переводов. Либо вам придется определить их в <ресурсе ресурса Localizable.strings, либо сделать так, как другие заявили в комментариях, и вытащить заголовок из UIBarButtonItem ( Я бы пошел с файлом ресурсов лично).

Ответ 5

Почему бы не использовать базовую локализацию с раскадрой? Он будет локализовать его для вас.

Ответ 6

Вы можете использовать

NSLocalizedString(@"Cancel", @"Cancel")