public IEnumerator Process(SetLanguageImage s, string targetLang, string sourceText)
    {
        string sourceLang = "en";
        string url        = "https://translate.googleapis.com/translate_a/single?client=gtx&sl="
                            + sourceLang + "&tl=" + targetLang + "&dt=t&q=" + WWW.EscapeURL(sourceText);
        WWW www = new WWW(url);

        yield return(www);

        if (www.isDone)
        {
            if (string.IsNullOrEmpty(www.error))
            {
                Debug.Log(www.text);
                var N = JArray.Parse(www.text);
                var translatedText = N[0][0][0].ToString();
                var tex            = new SetLanguageImage.tex();
                tex.text = translatedText;
                s.translations.Add(targetLang, tex);
            }
        }
    }
    public override void OnInspectorGUI()
    {
        bool have = false;

        serializedObject.Update();
        if (GUILayout.Button("Get Translations"))
        {
            have = true;
            SetLanguageImage l = (SetLanguageImage)targets[0];

            TextAsset text = Resources.Load <TextAsset>("csvjson");
            JObject   j    = JObject.Parse(text.text);

            string refer = "";
            if (l.GetComponent <Text>())
            {
                refer = l.GetComponent <Text>().text;
            }
            if (l.Reference != "")
            {
                refer = l.Reference;
            }
            if (j[refer] != null)
            {
                if (!l.translations.ContainsKey("en"))
                {
                    SetLanguageImage.tex t = new SetLanguageImage.tex();
                    t.text = refer;
                    l.translations.Add("en", t);
                }
                if (!l.translations.ContainsKey("es"))
                {
                    SetLanguageImage.tex t = new SetLanguageImage.tex();
                    t.text = j[refer]["es"].ToString();
                    l.translations.Add("es", t);
                }
                if (!l.translations.ContainsKey("ru"))
                {
                    SetLanguageImage.tex t = new SetLanguageImage.tex();
                    t.text = j[refer]["ru"].ToString();
                    l.translations.Add("ru", t);
                }
                if (!l.translations.ContainsKey("fr"))
                {
                    SetLanguageImage.tex t = new SetLanguageImage.tex();
                    t.text = j[refer]["fr"].ToString();
                    l.translations.Add("fr", t);
                }
                if (!l.translations.ContainsKey("pt"))
                {
                    SetLanguageImage.tex t = new SetLanguageImage.tex();
                    t.text = j[refer]["pt"].ToString();
                    l.translations.Add("pt", t);
                }
                if (!l.translations.ContainsKey("hi"))
                {
                    SetLanguageImage.tex t = new SetLanguageImage.tex();
                    t.text = j[refer]["hi"].ToString();
                    l.translations.Add("hi", t);
                }
                if (!l.translations.ContainsKey("ar"))
                {
                    SetLanguageImage.tex t = new SetLanguageImage.tex();
                    t.text = j[refer]["ar"].ToString();
                    l.translations.Add("ar", t);
                }
                foreach (var b in targets)
                {
                    SetLanguageImage sd = (SetLanguageImage)b;
                    sd.translations = l.translations;
                }
            }
            else
            {
                Debug.LogError("No Translation Found, Use Google");
            }



            return;
        }

        if (GUILayout.Button("Get Google Translations"))
        {
            have = true;
            foreach (var b in targets)
            {
                SetLanguageImage l = (SetLanguageImage)b;

                string refer = "";
                if (l.GetComponent <Text>())
                {
                    refer = l.GetComponent <Text>().text;
                }
                else if (l.Reference != "")
                {
                    refer = l.Reference;
                }
                if (!l.translations.ContainsKey("en"))
                {
                    SetLanguageImage.tex t = new SetLanguageImage.tex();
                    t.text = refer;
                    l.translations.Add("en", t);
                }
                if (!l.translations.ContainsKey("es"))
                {
                    marijnz.EditorCoroutines.EditorCoroutines.StartCoroutine(Process(l, "es", refer), this);
                }
                if (!l.translations.ContainsKey("ru"))
                {
                    marijnz.EditorCoroutines.EditorCoroutines.StartCoroutine(Process(l, "ru", refer), this);
                }
                if (!l.translations.ContainsKey("fr"))
                {
                    marijnz.EditorCoroutines.EditorCoroutines.StartCoroutine(Process(l, "fr", refer), this);
                }
                if (!l.translations.ContainsKey("pt"))
                {
                    marijnz.EditorCoroutines.EditorCoroutines.StartCoroutine(Process(l, "pt", refer), this);
                }
                if (!l.translations.ContainsKey("hi"))
                {
                    marijnz.EditorCoroutines.EditorCoroutines.StartCoroutine(Process(l, "hi", refer), this);
                }
                if (!l.translations.ContainsKey("ar"))
                {
                    marijnz.EditorCoroutines.EditorCoroutines.StartCoroutine(Process(l, "ar", refer), this);
                }
            }
            return;
        }
        if (GUILayout.Button("Paste To Library"))
        {
            SetLanguageImage l = (SetLanguageImage)targets[0];
            l.GetComponent <Library>().library.Add(l.translations["en"].text, l.translations);
        }
        if (GUILayout.Button("Reset"))
        {
            SetLanguageImage l = (SetLanguageImage)targets[0];
            l.translations = new SetLanguageImage.Mes();
        }
        serializedObject.ApplyModifiedProperties();
        DrawDefaultInspector();
    }