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

时间:2012-05-17 20:36:10

标签: ios localization translation uialertview

这是真的吗?当你实例化一个UIAlertButton时,你必须为它取一个显示的Cancel按钮标题,如下所示:

UIAlertView *av = 
    [[UIAlertView alloc] 
         initWithTitle:@"Error" 
         message:err.localizedDescription 
         delegate:nil 
         cancelButtonTitle:@"Cancel" 
         otherButtonTitles:nil];

这意味着如果你想要一个本地化的应用程序(你当然可以这样做),你也必须本地化取消字符串,即使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];

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

1 个答案:

答案 0 :(得分:5)

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

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

相关问题