如何获得本地化的取消,完成等?

UIBarButtonItem有像Cancel,Done和其他一些标识符。 它们以文本显示给用户。 如果用户改变语言,例如取消button将被自动翻译。 作为开发人员,您无需为此button提供本地化string。 这意味着取消,完成和其他string已经本地化,并与操作系统。

这里有一种方法来获得这个string编程?

我不想添加额外的string到本地化文件。 如果有可能访问那么这将是非常好的。

下面是我创build的一个小macros来获取系统UIKitstring:

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

像这样使用它:

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

一个很容易实现的方法就是直接使用Apple的框架捆绑本地化:

要查看他们提供的内容,请通过Finder打开以下目录:

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

在你的情况下,你将随后打开./UIKit.framework/English.lproj/Localizable.strings (在TextMate中)。 在这里,您可以看到苹果公司在“打印”,“确定”,“开”,“关”等方面使用的各种翻译。真正的妙处是,大约有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"; 

警告:我不build议您实际上在您打算提交给App Store的应用程序中以编程方式访问这些本地化资源。 我只是说明了一个特定的实现,我已经看到哪个解决您的原始问题。

虽然也许不是你正在寻找的,但在Mac App Store中有一个名为“系统string”的商业应用程序,声称它提供了超过53000个标准本地化string的集合。 它于2012年11月2日发布。我与这个应用程序或作者没有任何关系。 该URL是https://itunes.apple.com/us/app/systemstrings/id570467776

听起来像你问的是如果苹果提供了一种方法来访问预翻译string的字典。 我认为苹果公司提供的任何东西都可以在Docs: Internationalization Programming Topics中find

要回答你的问题,我不相信他们提供了一个已知翻译的字典/列表。 要么你将不得不在你的Localizable.strings资源文件中定义它们,或者像其他人在注释中声明的一样,从UIBarButtonItem(我将个人使用资源文件)中提取标题。

为什么不在你的故事板上使用基础本地化? 它会为你本地化。

你可以使用

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