本地化字符串和字符串比较

时间:2012-07-30 21:31:27

标签: objective-c ios nsstring ios5 nslocalizedstring

我对NSStrings有一个小问题。我正在制作应用程序,开发语言是英语。我有一个这样的字符串:

NSLocalizedString(@“取消”,@“取消字符串”);

我有意将此应用程序本地化为西班牙语,所以我需要这样做。现在,我遇到的问题是我需要将此特定字符串与另一个字符串进行比较。所以假设我有这个:

NSString *cancelString = NSLocalizedString(@"cancel", @"cancel string");

我可以将此字符串与其他字符串进行比较吗?:

[cancelString isEqualToString:@"cancel"];

它会正常工作吗?或者如果用户使用我的西班牙语应用程序会发生什么(所以cancelString说“取消”而不是“取消”)? equalToString只与应用程序的基本语言进行比较吗?

希望我很清楚。

2 个答案:

答案 0 :(得分:4)

尽管可能有更好的方法来实现你在这里尝试的比较,你应该与NSLocalizedString(@“cancel”,@“whatever”)进行比较,因为在预处理器运行后它会最终改变并且''isEqualToString'只会比较方法的两个结果(字符串与字符串)。

NSString *cancelString = NSLocalizedString(@"cancel", @"cancel string");

[cancelString isEqualToString:NSLocalizedString(@"cancel", @"cancel string")];

应该有效

答案 1 :(得分:2)

您可以尝试本地化比较

NSString *cancelString = NSLocalizedString(@"cancel", @"cancel string");
bool areEqual = ([cancelString localizedCompare:@"cancel"] == NSOrderedSame);

参考:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/localizedCompare