如何在我的应用程序中使用UIKit本地化字符串

时间:2011-08-02 09:28:21

标签: iphone uialertview

我们正在构建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

的读取字符串文件

以下语言在NSUserDefaultUIKit.framework文件夹之间有不同的名称:fr en zh-Hans it de ja nl es pt-PT nb zh-Hant en-GB。它们应该由代码处理。

3 个答案:

答案 0 :(得分:1)

UIKit中的Strings简易方法

NSBundle* uikitBundle = [NSBundle bundleForClass:[UIButton class]];
NSString *cancel = [uikitBundle localizedStringForKey:@"Cancel" value:nil table:nil];

答案 1 :(得分:0)

斯威夫特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)
    }

答案 2 :(得分:-1)

您应该使用基础框架中的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/

这些预定义的按钮名称将由OS自动翻译(在标签栏中完成),在uialertview中,您可以将取消按钮标题设置为您想要的任何内容......

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