/** * {@inheritDoc} */ public function visit($string, array &$codes, Languages $languages) { $words = preg_split('/(\\s|\\n)/', $string); foreach ($words as $word) { $word = trim($word, '.,?!-'); $wordLanguages = $this->dictionary->getLanguagesByWord($word); if (null !== $wordLanguages) { foreach ($wordLanguages as $wordLanguage) { $languages->vote($wordLanguage, 0.5); } } } }
/** * {@inheritDoc} */ public function visit($string, array &$codes, Languages $languages) { foreach ($codes as $key => $code) { if ($code >= 32 && $code <= 47 || $code >= 58 && $code <= 64 || $code >= 91 && $code <= 96 || $code >= 123 && $code <= 127) { // This is a special char. Not detected. unset($codes[$key]); continue; } $section = $this->sections->findByCode($code); if ($section === null) { // Not found section for this char code continue; } if (count($section->getLanguages()) === 0) { // Not found languages for this char code. // This chan can is a special char (music, arrows, etc...) unset($codes[$key]); } $languages->addDetectedLanguages($section->getLanguages()); } }
/** * {@inheritDoc} */ public function visit($string, array &$codes, Languages $languages) { if (!count($languages->getDetectedLanguages())) { // Not found detected languages. return; } /** @var \Ideea\LanguageDetector\Alphabet\Alphabet[] $checkAlphabets */ $checkAlphabets = array(); foreach ($languages->getDetectedLanguages() as $detectedLanguage) { $alphabet = $this->alphabets->get($detectedLanguage); if (null === $alphabet) { // Not found alphabet for language continue; } $checkAlphabets[$alphabet->getLanguage()] = $alphabet; } foreach ($codes as $code) { foreach ($checkAlphabets as $alphabet) { if ($alphabet->hasChar($code)) { $languages->vote($alphabet->getLanguage(), 1); } if ($alphabet->hasCommonChar($code)) { $languages->vote($alphabet->getLanguage(), 0.5); } } } // Devote languages if language chars not used // Can remove this functional? $votedLanguages = $languages->getVoteLanguages(); if (count($votedLanguages) > 1) { foreach ($votedLanguages as $votedLanguage => $votes) { $votedLanguageAlphabet = $this->alphabets->get($votedLanguage); if (null === $votedLanguage) { // Not alphabet exists for voted language continue; } $languageAlphabetChars = $votedLanguageAlphabet->getCharCodes(); $languageUsedChars = array_intersect(array_unique($codes), $languageAlphabetChars); $countUnusedChars = count($languageAlphabetChars) - count($languageUsedChars); if ($countUnusedChars > 2) { $languages->devote($votedLanguage, $countUnusedChars * 0.02); } } } }