Можете ли вы программно получить доступ к стандартным локализованным строкам в Cocoa Touch? - PullRequest
18 голосов
/ 08 февраля 2012

Некоторые элементы управления iOS имеют встроенные строки Apple.Элементы кнопок панели «Готово», «Редактировать», «Назад» - некоторые примеры.Есть ли способ доступа к этим строкам?

Я делаю UIActionSheet со стандартными параметрами «Удалить» или «Отмена», так же, как при удалении контакта в приложении «Контакты».

Есть ли способ ссылки на эти строки в коде?Если нет, могу ли я где-нибудь получить эти строки (например, извлечь их из ресурсов приложения Apple)?Это сэкономит дополнительную работу по локализации и обеспечит согласованность с платформой.

Ответы [ 2 ]

6 голосов
/ 09 февраля 2012

Если iOS похожа на Mac OS, каждое приложение имеет свой собственный файл Localizable.strings.И в каждом файле строк есть все эти маленькие строки, как «Готово», «Редактировать», «Отмена» и так далее.

Это некоторые строки, которые я скопировал из английского файла Localizable.string из Finder.app:

<key>AL1</key>
<string>Cancel</string>
<key>AL4</key>
<string>OK</string>
<key>AL9</key>
<string>Don’t Save</string>
<key>FF24</key>
<string>Save</string>
<key>U32</key>
<string>Yes</string>
<key>U33</key>
<string>No</string>

Вы понимаете, что это за идея.Каждая маленькая строка локализована в каждом приложении.

Это из iTunes.app.

/* ===== Ask User Strings ===== */
"23987.001" = "Yes";
"23987.002" = "No";
"23987.003" = "OK";
"23987.004" = "Cancel";
"23987.005" = "Ignore";
"23987.006" = "Quit";
"23987.007" = "Don’t Quit";
"23987.008" = "Apply";
"23987.009" = "Don’t Apply";
"23987.010" = "Later";
"23987.011" = "Don’t Save";
"23987.012" = "Save";
"23987.013" = "Stop";
"23987.014" = "Continue";
"23987.015" = "Delete";
"23987.016" = "Remove";
"23987.017" = "Replace";
"23987.018" = "Don’t Replace";
"23987.019" = "Do not ask me again";

Выглядит немного более структурированным.Копирование их файлов, вероятно, не допускается;

Некоторые элементы пользовательского интерфейса автоматически локализуются для вас.Например, изображение на UIBarButtonItem. Однако нет поддерживаемого способа добраться до таких строк, как «ОК» и «Отмена», поскольку они используются в UIActionSheet. Однако они должны быть тривиальными, чтобы ваш локализатор справился с ними.

2 года.Но новые темы имеют тот же результат.Нет способа получить эти строки.

4 голосов
/ 07 июля 2014

Можно получить доступ к локализованным строкам из комплекта UIKit с помощью этого фрагмента:

static NSString * UIKitLocalizedString(NSString *string)
{
    NSBundle *UIKitBundle = [NSBundle bundleForClass:[UIApplication class]];
    return UIKitBundle ? [UIKitBundle localizedStringForKey:string value:string table:nil] : string;
}

Полный кредит поступает на 0xced ( Использование в XCDFormInputAccessoryView )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...