Class TranslationEngine

java.lang.Object
com.iizix.translate.TranslationEngine
All Implemented Interfaces:
ITranslationEngine
Direct Known Subclasses:
EditorTranslationEngine, TestEngine

public abstract class TranslationEngine extends Object implements ITranslationEngine
The translation engine: two current translators are provided: Google and Microsoft, but the interface allows others. This engine is built to provide support to use multiple translators in parallel, with its own language capabilities and this engine would select the most suitable one to use.
Author:
Christopher Mindus
  • Field Details

    • ENCODING

      public static final Charset ENCODING
      Always UTF-8 encoded.
    • ENCODING_NAME

      public static final String ENCODING_NAME
      The "UTF-8" string.
    • DEBUG

      public static boolean DEBUG
      Debug mode.
  • Constructor Details

    • TranslationEngine

      protected TranslationEngine()
      Constructor.
      Throws:
      InternalError - if the engine is already instantiated.
    • TranslationEngine

      protected TranslationEngine(boolean recreate)
      Constructor.
      Throws:
      InternalError - if the engine is already instantiated.
  • Method Details

    • getInstance

      public static ITranslationEngine getInstance()
      Gets the translation engine instance.
      Returns:
      The engine.
      Throws:
      NullPointerException - If the engine is not created yet.
    • getQueues

      public TranslationQueue[] getQueues()
      Gets the translation queues.
      Specified by:
      getQueues in interface ITranslationEngine
      Returns:
      The array of translation queues.
    • clearLanguageQueue

      protected void clearLanguageQueue()
      Clears the language queue after reconfiguration.
    • canTranslate

      public boolean canTranslate(String sourceLanguageCode, String targetLanguageCode)
      Checks if a translation is handled between two language codes.
      Specified by:
      canTranslate in interface ITranslationEngine
      Parameters:
      sourceLanguageCode - The source language code, null for automatic detection.
      targetLanguageCode - The target language code.
      Returns:
      true if supported, false if not.
    • cancel

      public void cancel()
      Cancels pending or running translation job.
      Specified by:
      cancel in interface ITranslationEngine
    • translate

      public boolean translate(KString sourceText, String sourceLanguageCode, String targetLanguageCode, ITranslationReply replyCallback)
      Translates a text in plain text or HTML.
      Specified by:
      translate in interface ITranslationEngine
      Parameters:
      sourceText - The source text to translate.
      sourceLanguageCode - The source language code, null for automatic detection.
      targetLanguageCode - The target language code.
      replyCallback - Callback when translation completes.
      Returns:
      true for success, false for failure (error is logged).
      Throws:
      NullPointerException - If sourceText, targetLanguageCode or replyCallback is null.
    • newTranslationQueue

      protected abstract TranslationQueue newTranslationQueue(String sourceLanguageCode, String targetLanguageCode, ITranslator translator)
      Creates a new TranslationQueue instance.
      Parameters:
      sourceLanguageCode - The source language code, null for auto-detect.
      targetLanguageCode - The target language code.
      translator - The translator.
    • requestJSON

      public JSONObject requestJSON(String httpRequest, Map<String,String> params, Map<String,String> headers, int type, int sizeLimit) throws IOException, JSONException
      Requests a function using HTTPS GET or POST with "X-HTTP-Method-Override: GET", configured for proxy as specified in Eclipse or the Server.
      Specified by:
      requestJSON in interface ITranslationEngine
      Parameters:
      httpRequest - The request string.
      params - The parameters, null for none.
      headers - The HTTP headers, null for none.
      type - Type of request: REQTYPE_* value.
      sizeLimit - The size limit imposed, 5120 for Google, 10K for Microsoft.
      Returns:
      The parsed JSON object.
      Throws:
      IOException - For I/O errors.
      JSONException - For JSON exceptions.
    • requestJSON

      public JSONObject requestJSON(String httpRequest, String params, Map<String,String> headers, int type, int sizeLimit) throws IOException, JSONException
      Requests a function using HTTPS GET or POST with "X-HTTP-Method-Override: GET", configured for proxy as specified in Eclipse or the Server.
      Specified by:
      requestJSON in interface ITranslationEngine
      Parameters:
      httpRequest - The request string.
      params - The parameters, null for none.
      headers - The HTTP headers, null for none.
      type - Type of request: REQTYPE_* value.
      sizeLimit - The size limit imposed, 5120 for Google, 10K for Microsoft.
      Returns:
      The parsed JSON object.
      Throws:
      IOException - For I/O errors.
      JSONException - For JSON exceptions.
    • requestString

      public String requestString(String httpRequest, Map<String,String> params, Map<String,String> headers, int type, int sizeLimit) throws IOException
      Requests a function using HTTPS GET or POST with "X-HTTP-Method-Override: GET", configured for proxy as specified in Eclipse or the Server.
      Specified by:
      requestString in interface ITranslationEngine
      Parameters:
      httpRequest - The request string.
      params - The parameters, null for none.
      headers - The HTTP headers, null for none.
      type - Type of request: REQTYPE_* value.
      sizeLimit - The size limit imposed, 5120 for Google, 10K for Microsoft.
      Returns:
      The reply string.
      Throws:
      IOException - For I/O errors.
    • requestString

      public String requestString(String httpRequest, String params, Map<String,String> headers, int type, int sizeLimit) throws IOException
      Requests a function using HTTPS GET or POST with "X-HTTP-Method-Override: GET", configured for proxy as specified in Eclipse or the Server.
      Specified by:
      requestString in interface ITranslationEngine
      Parameters:
      httpRequest - The request string.
      params - The parameters, null for none.
      headers - The HTTP headers, null for none.
      type - Type of request: REQTYPE_* value.
      sizeLimit - The size limit imposed, 5120 for Google, 10K for Microsoft.
      Returns:
      The reply string.
      Throws:
      IOException - For I/O errors.
    • postRequestJSON

      public String postRequestJSON(String httpRequest, Map<String,String> headers, String data) throws IOException
      Requests a function using HTTPS POST, configured for proxy as specified in Eclipse or the Server.
      Specified by:
      postRequestJSON in interface ITranslationEngine
      Parameters:
      httpRequest - The request string.
      headers - The HTTP headers, never null.
      data - The data string.
      Returns:
      The reply string.
      Throws:
      IOException - For I/O errors.