如何检查NSString语言是否与NSLocaleLanguageCode匹配

时间:2018-07-30 23:37:57

标签: objective-c string xcode compare matching

我正在尝试使用XCode执行一个简单的任务,以检查某种NSString语言是否与用户的首选语言匹配。

例如,假设我有一个如下字符串:

NSString *englishString = @"Good morning!";
NSString *frenchString = @"Bonjour!";

我知道我可以使用 NSLocaleLanguageCode 值来获取用户设备的首选语言,并且基于先前的堆栈溢出答案here,我可以获取NSString的语言。但是,当我比较两个值时,键似乎不匹配。是否有更好的方法来实现这一目标?谢谢!

NSLocaleLanguageCode的文档可以找到here,NSLinguisticTagger的描述可以找到here。 NSLocaleLanguageCode返回一个NSString,而标记程序,尤其是“ tagAtIndex”方法返回一个NSLinguisticTag键。

1 个答案:

答案 0 :(得分:0)

您会得到两个字符串。在Objective-C中,@Service public class RestCityServiceImpl implements RestCityService { private static final Logger logger = LoggerFactory.getLogger(RestCityService.class); @Autowired RestTemplate restTemplate; @Value("${rest.elatic-cache-sync.end.point}") private String cacheSyncEndPoint; @Value("${rest.elatic-search-cache.end.point}") private String cacheSearchEndPoint; @Value("${rest.elatic-cache.end.point}") private String cacheEndPoint; public SyncCityCacheResponse syncCityToCityCache(SyncCityCacheRequest syncCityCacheRequest) throws ResourceException { SyncCityCacheResponse syncCityCacheResponse = null; try { logger.info("RestCityService: Hitting CityCacheServiceAPI to push city for request: {}", syncCityCacheRequest.toString()); syncCityCacheResponse = restTemplate.postForObject(new URI(cacheSyncEndPoint), syncCityCacheRequest.getSyncCityDetails(), SyncCityCacheResponse.class); if (ResourceConstants.FAILURE.equalsIgnoreCase(syncCityCacheResponse.getStatus())) { throw new ResourceException(ResourceErrors.SYNC_API_ERROR.getErrorCode(), ResourceErrors.SYNC_API_ERROR.getErrorDescription() + " " + syncCityCacheResponse.getSyncCityDetails().get(0).getDescription()); } } catch (RestClientException | URISyntaxException e) { logger.error("RestCityService : Exception while hitting cache to push city, Exception:{}", e); throw new ResourceException(ResourceErrors.SYNC_API_ERROR.getErrorCode(), ResourceErrors.SYNC_API_ERROR.getErrorDescription() + " " + syncCityCacheResponse.getSyncCityDetails().get(0).getDescription()); } return syncCityCacheResponse; } NSLinguisticTag的同义词。只需将NSString *(实际上只是NSLinguisticTag)与您从语言环境的语言代码获得的NSString进行比较。

但是更简单的解决方案是使用NSString的{​​{1}}类方法来轻松地将字符串的语言获取为dominantLanguageForString:。这比使用NSLinguisticTagger的{​​{1}}实例方法之一简单得多,但是它确实需要iOS 11 + / macOS 10.13 +。

NSString