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

Можете ли вы программно получить доступ к стандартным локализованным строкам в Cocoa Touch?

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

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

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

4b9b3361

Ответ 1

Если iOS похож на Mac OS, каждое приложение имеет свой собственный файл Localizable.strings. И в каждом файле строк у вас есть все те маленькие строки, как Done, Edit, Cancel и т.д.

Это некоторые строки, которые я скопировал из файла 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";

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


ответить в яблочном devforum от Quinn (eskimo1) от Apple Developer Relations.

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

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

Ответ 2

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

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

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