Как использовать локализованную строку UIKit в моем приложении - PullRequest
8 голосов
/ 02 августа 2011

Мы создаем игру для iOS, наша компания требует, чтобы кнопка отмены в UIAlertView всегда была локализована в зависимости от языка устройства пользователя.

Похоже, в UIKit есть такая строка, как я могу получить к ней доступ в своем приложении?

Или любой другой способ создать UIAlertView с локализованной кнопкой отмены?

Спасибо

Ответ сам:

Проблема решена с помощью следующего кода:

NSBundle* uikitBundle = [NSBundle bundleForClass:[UIButton class]];
NSString *language = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0];
NSBundle *languageBundle = [NSBundle bundleWithPath:[uikitBundle pathForResource:language ofType:@"lproj"]];
NSLog(@"%@: %@", language, NSLocalizedStringFromTableInBundle(@"Cancel", @"Localizable", languageBundle, nil));

Это чтение строковых файлов из /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/UIKit.framework

Следующие языки имеют разные названия между папками NSUserDefault и UIKit.framework: fr en zh-Hans it de ja nl es pt-PT nb zh-Hant en-GB. Они должны обрабатываться кодом.

Ответы [ 3 ]

1 голос
/ 27 марта 2014

Простой метод для строк уже в UIKit

NSBundle* uikitBundle = [NSBundle bundleForClass:[UIButton class]];
NSString *cancel = [uikitBundle localizedStringForKey:@"Cancel" value:nil table:nil];
0 голосов
/ 27 марта 2018

Swift 4:

    let bundle = Bundle.init(for: UIButton.self)
    let doneTitle = bundle.localizedString(forKey: "Done", value: nil, table: nil)
    for state: UIControlState in [.normal, .highlighted, .disabled, .selected, .focused, .application, .reserved] {
        buttonDone.setTitle(doneTitle, for: state)
    }
0 голосов
/ 02 августа 2011

Вы должны использовать NSLocalizedString из базового фреймворка: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html

Есть хороший урок об этом: http://www.icanlocalize.com/site/tutorials/iphone-applications-localization-guide/

Эти предопределенные имена кнопок будут автоматически переведены ОС (Готово)в панели вкладок) и в uialertview вы можете установить название кнопки Отмена, чтобы быть тем, что вы хотите ...

     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"title",@"titleKey") 
message:NSLocalizedString(@"message",@"messageKey") 
delegate:self 
cancelButtonTitle:NSLocalizedString(@"cancel",@"cancelKey") 
otherButtonTitles:nil];
...