你可以编程访问Cocoa Touch中的标准本地化string吗?
一些iOS控件拥有由Apple内置的本地化string。 “完成”,“编辑”,“返回”栏button项目是一些例子。 有没有办法来访问这些string?
我正在制作一个带有标准“删除”或“取消”选项的UIActionSheet,就像删除联系人应用程序中的联系人一样。
有没有办法在代码中引用这些string? 如果没有,是否有某处我可以至less得到这些string(如从苹果应用程序的资源提取它们)? 这将节省额外的本地化工作,并确保与平台的一致性。
如果iOS和Mac OS一样,每个应用程序都带有自己的Localizable.strings文件。 在每个string文件中,你都有像Done,Edit,Cancel等那样的小string。
这些是我从Finder.app的英文Localizable.string文件中复制的一些string:
<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>
你明白了。 每个小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";
看起来有点结构化。 复制他们的文件可能不被允许,但;;)
苹果开发者关系公司(Apple Developer Relations)的Quinn(eskimo1)的苹果devforum的答案 。
某些UI元素会自动为您本地化。 例如,UIBarButtonItem上的图稿。 但是,在UIActionSheet中使用“OK”和“Cancel”这样的string时没有支持的方法。 然而,他们应该为你的本地化者应付微不足道的。
2岁了。 但是较新的线程有相同的结果。 没办法得到那些string。
可以使用以下代码从UIKit包中访问本地化的string:
static NSString * UIKitLocalizedString(NSString *string) { NSBundle *UIKitBundle = [NSBundle bundleForClass:[UIApplication class]]; return UIKitBundle ? [UIKitBundle localizedStringForKey:string value:string table:nil] : string; }
完整功劳归功于0xced ( XCDFormInputAccessoryView中的 使用 )