使用警报按钮的标准Apple翻译?

c r*_*ald 11 translation localization uialertview ios

这是真的?实例化UIAlertButton时,必须为"取消"按钮传递一个显式标题,如下所示:

UIAlertView *av = 
    [[UIAlertView alloc] 
         initWithTitle:@"Error" 
         message:err.localizedDescription 
         delegate:nil 
         cancelButtonTitle:@"Cancel" 
         otherButtonTitles:nil];
Run Code Online (Sandbox Code Playgroud)

这意味着如果你想要一个本地化的应用程序(你当然可以这样做),你也必须本地化取消字符串,即使Apple显然已经有了规范的翻译.我真的被迫写这样的东西来处理它(或者这甚至可以)?

NSBundle* uikitBundle = [NSBundle bundleForClass:[UIButton class]];
UIAlertView *av = 
    [[UIAlertView alloc] 
         initWithTitle:NSLocalizedString(@"Error", @"Title for Alert box when error occurs") 
         message:err.localizedDescription 
         delegate:nil 
         cancelButtonTitle:NSLocalizedStringFromTableInBundle(@"Cancel", @"Localizable", uikitBundle, nil) 
         otherButtonTitles:nil];
Run Code Online (Sandbox Code Playgroud)

这对我来说太可怕了,但我必须保持自己的Apple HIG强制翻译单词(如"取消"或"确定")的想法似乎同样荒谬.

Cla*_*fou 5

正如您所期望的那样,不推荐这样做,因为您的代码引入了一个未记录的,不受支持的依赖项,如果未来的iOS更新出现,可能会破坏您的应用程序,从而改变Apple如何本地化其UIButton(不太可能,但谁知道).

真的,"确定"和"取消"并不难翻译.如果您不希望翻译人员在您的应用程序本地化工作中为您重新本地化这些内容,那么您可以自己从iOS(使用您的代码)检索这些并将翻译复制到您的.strings文件中,这样您就可以从现在开始可靠的翻译副本!