Mercurial > hg > mpdl-group
diff software/mpdl-services/mpiwg-mpdl-cms/src/de/mpg/mpiwg/berlin/mpdl/cms/translator/MicrosoftTranslator.java @ 23:e845310098ba
diverse Korrekturen
author | Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de> |
---|---|
date | Tue, 27 Nov 2012 12:35:19 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/software/mpdl-services/mpiwg-mpdl-cms/src/de/mpg/mpiwg/berlin/mpdl/cms/translator/MicrosoftTranslator.java Tue Nov 27 12:35:19 2012 +0100 @@ -0,0 +1,120 @@ +package de.mpg.mpiwg.berlin.mpdl.cms.translator; + +import java.util.ArrayList; + +import com.memetix.mst.language.Language; +import com.memetix.mst.translate.Translate; +import com.memetix.mst.detect.Detect; + +import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException; + +public class MicrosoftTranslator { + private static final String KEY = "474A4E72DB217E37031EC190ACB4159378A6917C"; // free key to use with Microsoft server + private static String[] DEST_LANGUAGES = {"eng", "ger", "fra"}; + + private MicrosoftTranslator() { + // nothing: prevent instantiation + } + + public static String[] getDestLanguages() { + return DEST_LANGUAGES; + } + + public static String translate(String query, String toLanguageStr) throws ApplicationException { + if (toLanguageStr == null) + throw new ApplicationException("MicrosoftTranslator: toLanguageStr is null"); + String translation = null; + try { + Translate.setKey(KEY); // Set the API key once per JVM. It is set statically and applies to all services + String langId = de.mpg.mpiwg.berlin.mpdl.lt.general.Language.getInstance().getLanguageId(toLanguageStr); // e.g. "de" is delivered from "deu" + Language toLanguage = Language.fromString(langId); + translation = Translate.execute(query, toLanguage); + translation = translation.toLowerCase(); + } catch (Exception e) { + throw new ApplicationException(e); + } + return translation; + } + + public static String translate(String query, String fromLanguageStr, String toLanguageStr) throws ApplicationException { + if (fromLanguageStr == null) + throw new ApplicationException("MicrosoftTranslator: toLanguageStr is null"); + if (toLanguageStr == null) + throw new ApplicationException("MicrosoftTranslator: fromLanguageStr is null"); + String translation = null; + try { + Translate.setKey(KEY); + String fromLangId = de.mpg.mpiwg.berlin.mpdl.lt.general.Language.getInstance().getLanguageId(fromLanguageStr); // e.g. "de" is delivered from "deu" + String toLangId = de.mpg.mpiwg.berlin.mpdl.lt.general.Language.getInstance().getLanguageId(toLanguageStr); // e.g. "de" is delivered from "deu" + Language fromLanguage = Language.fromString(fromLangId); + Language toLanguage = Language.fromString(toLangId); + translation = Translate.execute(query, fromLanguage, toLanguage); + translation = translation.toLowerCase(); + } catch (Exception e) { + throw new ApplicationException(e); + } + return translation; + } + + public static ArrayList<String> translate(String[] query, String fromLanguageStr, String[] toLanguagesStr) throws ApplicationException { + ArrayList<String> translations = new ArrayList<String>(); + for (int i=0; i<toLanguagesStr.length; i++) { + String toLanguageStr = toLanguagesStr[i]; + String[] translationsArray = translate(query, fromLanguageStr, toLanguageStr); + for (int j=0; j<translationsArray.length; j++) { + String translation = translationsArray[j]; + translations.add(translation); + } + } + return translations; + } + + public static String[] translate(String[] query, String fromLanguageStr, String toLanguageStr) throws ApplicationException { + if (fromLanguageStr == null) + throw new ApplicationException("MicrosoftTranslator: toLanguageStr is null"); + if (toLanguageStr == null) + throw new ApplicationException("MicrosoftTranslator: fromLanguageStr is null"); + String[] translation = null; + try { + Translate.setKey(KEY); + String fromLangId = de.mpg.mpiwg.berlin.mpdl.lt.general.Language.getInstance().getLanguageId(fromLanguageStr); // e.g. "de" is delivered from "deu" + String toLangId = de.mpg.mpiwg.berlin.mpdl.lt.general.Language.getInstance().getLanguageId(toLanguageStr); // e.g. "de" is delivered from "deu" + Language fromLanguage = Language.fromString(fromLangId); + Language toLanguage = Language.fromString(toLangId); + translation = Translate.execute(query, fromLanguage, toLanguage); + for (int i=0; i<translation.length; i++) { + translation[i] = translation[i].toLowerCase(); + } + } catch (Exception e) { + throw new ApplicationException(e); + } + return translation; + } + + public static String detectLanguageCode(String query) throws ApplicationException { + String langCode = null; + try { + Detect.setKey(KEY); + Language detectedLanguage = Detect.execute(query); + if (detectedLanguage != null) + langCode = detectedLanguage.toString(); + } catch (Exception e) { + throw new ApplicationException(e); + } + return langCode; + } + + public static String detectLanguageName(String query) throws ApplicationException { + String langName = null; + try { + Detect.setKey(KEY); + Language detectedLanguage = Detect.execute(query); + if (detectedLanguage != null) + langName = detectedLanguage.getName(Language.GERMAN); + } catch (Exception e) { + throw new ApplicationException(e); + } + return langName; + } + +}