Обнаружить язык NSString

кто-то рассказал мне о классе для распознавания языка в Какао. Кто-нибудь знает, кто он?

Это не работает:

NSSpellChecker *spellChecker = [NSSpellChecker sharedSpellChecker]; [spellChecker setAutomaticallyIdentifiesLanguages:YES]; NSString *spellCheckText = @"Guten Tag Herr Mustermann. Dies ist ein deutscher Text. Bitte löschen Sie diesen nicht."; [spellChecker checkSpellingOfString:spellCheckText startingAt:0]; NSLog(@"%@", [spellChecker language]); 

Результатом является «en», но должно быть «de».

Благодаря…

4 Solutions collect form web for “Обнаружить язык NSString”

Существует API в какао, доступный для проверки языка строки, и всегда лучше использовать Foundation over CoreFoundation, когда это возможно.

 NSArray *tagschemes = [NSArray arrayWithObjects:NSLinguisticTagSchemeLanguage, nil]; NSLinguisticTagger *tagger = [[NSLinguisticTagger alloc] initWithTagSchemes:tagschemes options:0]; [tagger setString:@"Das ist ein bisschen deutscher Text. Bitte löschen Sie diesen nicht."]; NSString *language = [tagger tagAtIndex:0 scheme:NSLinguisticTagSchemeLanguage tokenRange:NULL sentenceRange:NULL]; 

Кроме того, если у вас смешанный язык текста, вы можете использовать enumerateLinguisticTagsInRange API, чтобы получить язык каждого слова в тексте.

Это результат:

 - (NSString *)languageForString:(NSString *) text{ if (text.length < 100) { return (NSString *) CFStringTokenizerCopyBestStringLanguage((CFStringRef)text, CFRangeMake(0, text.length)); } else { return (NSString *)CFStringTokenizerCopyBestStringLanguage((CFStringRef)text, CFRangeMake(0, 100)); } } 

-requestCheckingOfString:… этого вы можете использовать -requestCheckingOfString:… NSTextCheckingTypeOrthography пытается идентифицировать язык, используемый в строке, а обработчик завершения получает параметр NSOrthography который может использоваться для получения информации об орфографии в строке, включая ее доминирующий язык.

В следующем примере выводится dominant language = de :

 NSSpellChecker *spellChecker = [NSSpellChecker sharedSpellChecker]; [spellChecker setAutomaticallyIdentifiesLanguages:YES]; NSString *spellCheckText = @"Guten Herr Mustermann. Dies ist ein deutscher Text. Bitte löschen Sie diesen nicht."; [spellChecker requestCheckingOfString:spellCheckText range:(NSRange){0, [spellCheckText length]} types:NSTextCheckingTypeOrthography options:nil inSpellDocumentWithTag:0 completionHandler:^(NSInteger sequenceNumber, NSArray *results, NSOrthography *orthography, NSInteger wordCount) { NSLog(@"dominant language = %@", orthography.dominantLanguage); }]; 

Быстрое расширение строки для ответа Дженнифер:

 extension String { func language() -> String? { let tagger = NSLinguisticTagger(tagSchemes: [NSLinguisticTagSchemeLanguage], options: 0) tagger.string = self return tagger.tagAtIndex(0, scheme: NSLinguisticTagSchemeLanguage, tokenRange: nil, sentenceRange: nil) } } 

Применение:

 let language = "What language is this?".language() 
  • Заголовковый файл Umbrella не обновляется после изменения любого быстрого кода
  • Производительность мобильной сети: какой был бы самый эффективный тип данных для передачи данных с веб-сервера на мобильный телефон?
  • Альтернатива оболочке обмена сообщениями «Layer» для обмена сообщениями iOS
  • CSRF в мобильных приложениях
  • Виджет «Ссылка на App Store» для мобильного сайта
  • обнаружение пинча для увеличения iOS
  • Когда проверять подключение к Интернету в мобильных приложениях
  • Общий токен доступа Facebook между веб-сайтом и мобильным приложением
  • Есть ли способ использовать Touch ID с iOS Keychain, но не запрашивать пароль пользователя?
  • Как мне (или приостановить) приложение IP-приложения Flex 4.5 через код?
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.