package service.impl; import com.google.common.base.Optional; import com.optimaize.langdetect.LanguageDetector; import com.optimaize.langdetect.LanguageDetectorBuilder; import com.optimaize.langdetect.i18n.LdLocale; import com.optimaize.langdetect.ngram.NgramExtractors; import com.optimaize.langdetect.profiles.LanguageProfileReader; import com.optimaize.langdetect.text.CommonTextObjectFactories; import com.optimaize.langdetect.text.TextObject; import com.optimaize.langdetect.text.TextObjectFactory; import lombok.extern.slf4j.Slf4j; import service.LanguageChecker; import java.io.IOException; /** * Created by [email protected] on 2017. 5. 9. * Blog : http://jojoldu.tistory.com * Github : http://github.com/jojoldu */ @Slf4j public class LanguageCheckerImpl implements LanguageChecker { private LanguageDetector languageDetector; private TextObjectFactory textObjectFactory; public LanguageCheckerImpl() { //build language detector: try { languageDetector = LanguageDetectorBuilder.create(NgramExtractors.standard()) .withProfiles(new LanguageProfileReader().readAllBuiltIn()) //load all languages: .build(); } catch (IOException e) { log.error("LanguageCheckerImpl {}", e.getMessage()); } //create a text object factory textObjectFactory = CommonTextObjectFactories.forDetectingOnLargeText(); } @Override public String detect(String text) { //query: TextObject textObject = textObjectFactory.forText(text); Optional<LdLocale> lang = languageDetector.detect(textObject); if(lang.isPresent()){ return lang.get().getLanguage(); } return "en"; } @Override public String exchange(String language) { if("en".equals(language)){ return "ko"; } else if("ko".equals(language)){ return "en"; } return "ko"; } }