2

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

NSLocalizedString(@"取消", @"取消字符串");

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

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

我可以像这样将此字符串与另一个字符串进行比较吗?:

[cancelString isEqualToString:@"cancel"];

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

希望我很清楚。

4

2 回答 2

4

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

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

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

应该管用

于 2012-07-30T21:45:42.667 回答
2

你可以试试localizedCompare

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 :

于 2014-03-20T13:29:32.493 回答