方法:如何处理iOS检测到的NSString语言,英文无法准确检测?
- (NSString *)languageForString:(NSString *) text{
return (__bridge NSString *)CFStringTokenizerCopyBestStringLanguage((CFStringRef)[text cStringUsingEncoding:NSUnicodeStringEncoding], CFRangeMake(0, MIN(text.length,100)));
}
用途:
NSLog(@"\"%@\" language is %@",@"Tokenizer",[self languageForString:@"tokenizer"]);
NSLog(@"\"%@\" language is %@",@"Tokenizer detect",[self languageForString:@"Tokenizer detect"]);
NSLog(@"\"%@\" language is %@",@"detect",[self languageForString:@"detect"]);
NSLog(@"\"%@\" language is %@",@"我们",[self languageForString:@"我们"]);
NSLog(@"\"%@\" language is %@",@"집안일",[self languageForString:@"집안일"]);
NSLog(@"\"%@\" language is %@",@"Démocratie",[self languageForString:@"Démocratie"]);
NSLog(@"\"%@\" language is %@",@"Tokenizer English",[self languageForString:@"Tokenizer English"]);
NSLog(@"\"%@\" language is %@",@"ここはデパートです",[self languageForString:@"ここはデパートです"]);
输出:
2013-01-09 16:12:28.582 TestCommandLine[6478:c07] "Tokenizer" language is tr<br/>
2013-01-09 16:12:28.586 TestCommandLine[6478:c07] "Tokenizer detect" language is tr<br/>
2013-01-09 16:12:28.586 TestCommandLine[6478:c07] "detect" language is cs<br/>
2013-01-09 16:12:28.587 TestCommandLine[6478:c07] "我们" language is zh-Hans<br/>
2013-01-09 16:12:28.560 TestCommandLine[6478:c07] "집안일" language is ko<br/>
2013-01-09 16:12:28.577 TestCommandLine[6478:c07] "Démocratie" language is fr<br/>
2013-01-09 16:12:28.590 TestCommandLine[6478:c07] "Tokenizer English" language is en<br/>
2013-01-09 16:12:28.591 TestCommandLine[6478:c07] "ここはデパートです" language is ja<br/>
怎么变成这样:
2013-01-09 16:12:28.582 TestCommandLine[6478:c07] "Tokenizer" language is en<br/>
2013-01-09 16:12:28.586 TestCommandLine[6478:c07] "Tokenizer detect" language is en<br/>
2013-01-09 16:12:28.586 TestCommandLine[6478:c07] "detect" language is en<br/>
2013-01-09 16:12:28.587 TestCommandLine[6478:c07] "我们" language is zh-Hans<br/>
2013-01-09 16:12:28.560 TestCommandLine[6478:c07] "집안일" language is ko<br/>
2013-01-09 16:12:28.577 TestCommandLine[6478:c07] "Démocratie" language is fr<br/>
2013-01-09 16:12:28.590 TestCommandLine[6478:c07] "Tokenizer English" language is en<br/>
2013-01-09 16:12:28.591 TestCommandLine[6478:c07] "ここはデパートです" language is ja<br/>
来自'CFStringTokenizerCopyBestStringLanguage'的文档:*结果不能保证准确。通常情况下,函数需要200-400个字符才能可靠地猜出字符串的语言。*用这么短的字符串得到好的结果是不可能的。 – rmaddy
这[问题/答案](https://stackoverflow.com/questions/47890747/how-to-detect-text-string-language-in-ios/47890753#47890753)可能会有所帮助。 –