TranslationJob_POST.cs 1.9 KB

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