TranslationJob_POST.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using UnityEngine;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. using System.Text.RegularExpressions;
  7. using System.Linq;
  8. using UnityEngine.Networking;
  9. namespace I2.Loc
  10. {
  11. using TranslationDictionary = Dictionary<string, TranslationQuery>;
  12. public class TranslationJob_POST : TranslationJob_WWW
  13. {
  14. TranslationDictionary _requests;
  15. GoogleTranslation.fnOnTranslationReady _OnTranslationReady;
  16. public TranslationJob_POST(TranslationDictionary requests, GoogleTranslation.fnOnTranslationReady OnTranslationReady)
  17. {
  18. _requests = requests;
  19. _OnTranslationReady = OnTranslationReady;
  20. var data = GoogleTranslation.ConvertTranslationRequest(requests, false);
  21. WWWForm form = new WWWForm();
  22. form.AddField("action", "Translate");
  23. form.AddField("list", data[0]);
  24. www = UnityWebRequest.Post(LocalizationManager.GetWebServiceURL(), form);
  25. I2Utils.SendWebRequest(www);
  26. }
  27. public override eJobState GetState()
  28. {
  29. if (www != null && www.isDone)
  30. {
  31. ProcessResult(www.downloadHandler.data, www.error);
  32. www.Dispose();
  33. www = null;
  34. }
  35. return mJobState;
  36. }
  37. public void ProcessResult(byte[] bytes, string errorMsg)
  38. {
  39. if (!string.IsNullOrEmpty(errorMsg))
  40. {
  41. // check for
  42. //if (errorMsg.Contains("rewind")) // "necessary data rewind wasn't possible"
  43. mJobState = eJobState.Failed;
  44. }
  45. else
  46. {
  47. var wwwText = Encoding.UTF8.GetString(bytes, 0, bytes.Length); //www.text
  48. errorMsg = GoogleTranslation.ParseTranslationResult(wwwText, _requests);
  49. if (_OnTranslationReady!=null)
  50. _OnTranslationReady(_requests, errorMsg);
  51. mJobState = eJobState.Succeeded;
  52. }
  53. }
  54. }
  55. }