我正在尝试使用XCode执行一个简单的任务,以检查某种NSString语言是否与用户的首选语言匹配。
例如,假设我有一个如下字符串:
NSString *englishString = @"Good morning!";
NSString *frenchString = @"Bonjour!";
我知道我可以使用 NSLocaleLanguageCode 值来获取用户设备的首选语言,并且基于先前的堆栈溢出答案here,我可以获取NSString的语言。但是,当我比较两个值时,键似乎不匹配。是否有更好的方法来实现这一目标?谢谢!
NSLocaleLanguageCode的文档可以找到here,NSLinguisticTagger的描述可以找到here。 NSLocaleLanguageCode返回一个NSString,而标记程序,尤其是“ tagAtIndex”方法返回一个NSLinguisticTag键。
答案 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