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;
+  }
+
+}