public static GTResp ParseGTResp(string raw_GTresp) { var lines = raw_GTresp.Split('\n'); var gtresp = new GTResp(); foreach (var l in lines) { if (l.Contains("_!_TR_TXT:")) { gtresp.translation = l.Replace("_!_TR_TXT:", ""); } if (l.Contains("_!_TL_TXT:")) { gtresp.targ_lang = l.Replace("_!_TL_TXT:", ""); } if (l.Contains("_!_SQ_TXT:")) { gtresp.source = l.Replace("_!_SQ_TXT:", ""); } if (l.Contains("_!_SL_DET:")) { gtresp.src_lang = l.Replace("_!_SL_DET:", ""); } if (l.Contains("_!_SP_URL:")) { gtresp.speech_url = l.Replace("_!_SP_URL:", ""); } } return(gtresp); }
public void UpdateTranslation(GTResp gtr) { foreach (Control ct in pan_Translations.Controls) { var ind = GTRs.IndexOf(gtr); var pan = pan_Translations.Controls["PN_LINE_" + gtr.src_lang + ".to." + gtr.targ_lang]; var slt = pan.Controls[0]; var txt = pan.Controls[1]; var ab = (pan.Controls[2] is ButtonLabel); ButtonLabel btn = (ButtonLabel)(ab ? pan.Controls[2] : pan.Controls[3]); btn.gtr = gtr; // Debug.WriteLine("updating speech url to "+gtr.speech_url); slt.Text = gtr.targ_lang + ":"; var g = CreateGraphics(); var size = g.MeasureString(slt.Text, slt.Font); g.Dispose(); slt.Width = (int)size.Width; if (ind != -1) { GTRs.RemoveAt(ind); GTRs.Insert(ind, gtr); } // SPs.RemoveAt(i); // SPs.Insert(i, getSP()); txt.Text = gtr.translation; int abw = 0; if (!ab) { var txttrc = (MahouUI.TextBoxCA)pan.Controls[2]; abw = txttrc.Width; } txt.Width = pan.Width - slt.Width - 2 - btn.Width - 2 - abw; } }
public static List <GTResp> GetGTResponceAll(string[] tls, string[] qs, string[] sls) { var gtrlist = new List <GTResp>(); try { for (int i = 0; i != tls.Length; i++) { // corrects GTLink responce encoding. client.Headers["User-Agent"] = "User-Agent: Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20180501 Firefox/60.0"; var url = TranslatePanel.GTLink + "&q=" + HttpUtility.UrlPathEncode(qs[i].Replace(" ", "%20")) + "&sl=" + sls[i] + "&tl=" + tls[i]; Debug.WriteLine("url: " + url); var raw_array = Encoding.UTF8.GetString(client.DownloadData(url)); Debug.WriteLine("RAW:" + raw_array); var aur = new Auray(raw_array); var gtresp = new GTResp(); string src = "", tr = ""; var aur_dim_2 = new Auray(aur[0]); for (int m = 0; m != aur_dim_2.len + 1; m++) // combine all responce from all dimensions { var s = aur_dim_2[m, 1]; src += s.Substring(1, s.Length - 2); s = aur_dim_2[m, 0]; tr += s.Substring(1, s.Length - 2); } gtresp.source = src; gtresp.translation = tr; var det_l = aur[2]; det_l = det_l.Substring(1, det_l.Length - 2); gtresp.speech_url = GTSpeechLink + "&q=" + HttpUtility.UrlEncode(tr) + "&sl=" + det_l + "&tl=" + tls[i]; // Debug.WriteLine(gtresp.speech_url); if (sls[i] == "auto") { gtresp.auto_detect = true; } gtresp.src_lang = det_l; gtresp.targ_lang = tls[i]; gtrlist.Add(gtresp); } } catch (Exception e) { MMain.mahou._TranslatePanel.GTRespError(e.Message); } return(gtrlist); }
public void AddTranslation(GTResp gtr) { txt_Source.Text = gtr.source; if (TRANSCRIPTION) { if (!string.IsNullOrEmpty(gtr.src_transcr)) { var txt = new MahouUI.TextBoxCA(); txt.Name = txtstrc; txt.Multiline = true; if (this.Controls.ContainsKey(txtstrc)) { txt = (MahouUI.TextBoxCA) this.Controls[txtstrc]; } else { this.Controls.Add(txt); } txt.Text = "[" + MahouUI.UnescapeUnicode(gtr.src_transcr) + "]"; } else { if (this.Controls.ContainsKey(txtstrc)) { this.Controls.Remove(this.Controls[txtstrc]); } } } pan_Translations.Width = Width - 2; bool exist = false; if (GTRs.Count == 0) { pan_Translations.Height = 0; } if (!String.IsNullOrEmpty(MahouUI.AutoCopyTranslation)) { if (MahouUI.AutoCopyTranslation.ToLower() == gtr.targ_lang.ToLower()) { Debug.WriteLine("AutoCopyTranslation: " + gtr.targ_lang); KMHook.RestoreClipBoard(gtr.translation); MahouUI.ACT_Match++; } } foreach (Control ct in pan_Translations.Controls) { if (ct.Name == "PN_LINE_" + gtr.src_lang + ".to." + gtr.targ_lang) { exist = true; break; } } if (exist) { UpdateTranslation(gtr); } else { GTRs.Add(gtr); var ind = GTRs.IndexOf(gtr); var pan = new Panel(); pan.Width = pan_Translations.Width - 2; pan.Height = MahouUI.TrText.Height * 2; Debug.WriteLine("Pan height: " + pan.Height); pan.Name = "PN_LINE_" + gtr.src_lang + ".to." + gtr.targ_lang; pan.Location = new Point(1, pan_Translations.Height + 1); var slt = new MahouUI.TextBoxCA(); var txt = new MahouUI.TextBoxCA(); slt.ReadOnly = txt.ReadOnly = true; slt.TabStop = txt.TabStop = false; slt.Name = "SL_TXT" + gtr.targ_lang; slt.BorderStyle = txt.BorderStyle = 0; slt.Location = new Point(1, 0); slt.Text = (gtr.auto_detect ? "" : gtr.src_lang + "/") + gtr.targ_lang + ":"; var g = CreateGraphics(); var size = g.MeasureString(slt.Text, slt.Font); slt.Width = (int)size.Width; txt.Name = "TR_TXT" + gtr.targ_lang; txt.Text = MahouUI.UnescapeUnicode(gtr.translation); var btn = new ButtonLabel(); btn.Text = "♫"; btn.gtr = gtr; btn.Name = "LBBT_SP" + gtr.targ_lang; btn.Width = 14; btn.Height = 14; pan.Controls.Add(slt); pan.Controls.Add(txt); var trcw = 0; if (TRANSCRIPTION) { if (!String.IsNullOrEmpty(gtr.targ_transcr)) { MahouUI.TextBoxCA txttrc = new MahouUI.TextBoxCA(); txttrc.ReadOnly = true; txttrc.TabStop = false; txttrc.BorderStyle = 0; txttrc.Multiline = true; txttrc.Font = MahouUI.TrText; txttrc.Name = "TRC_TXT" + gtr.targ_lang; txttrc.Text = "[" + MahouUI.UnescapeUnicode(gtr.targ_transcr) + "]"; var si = g.MeasureString(txttrc.Text, txttrc.Font); trcw = txttrc.Width = (int)si.Width; txttrc.Location = new Point(txt.Location.X + pan.Width - slt.Width - 2 - btn.Width - 2 - trcw, txt.Location.Y); pan.Controls.Add(txttrc); } } g.Dispose(); btn.Location = new Point(pan.Width - 14 - 1, 1); pan.Controls.Add(btn); txt.Width = pan.Width - slt.Width - 2 - btn.Width - 2 - trcw; txt.Multiline = true; txt.Location = new Point(slt.Width + 2, 1); btn.BackColor = slt.BackColor = txt.BackColor = pan_Translations.BackColor; btn.ForeColor = slt.ForeColor = txt.ForeColor = pan_Translations.ForeColor; pan_Translations.Controls.Add(pan); txt_Source.Font = slt.Font = txt.Font = MahouUI.TrText; UpdateHeight(); } SetOptimalWidth(); SetOptimalWidth(); }
public static List <GTResp> GetGTResponceAll(string[] tls, string[] qs, string[] sls) { var gtrlist = new List <GTResp>(); try { for (int i = 0; i != tls.Length; i++) { var gl = GTLink; if (useNA) { gl = GTNALink; } // corrects GTLink responce encoding. client.Headers["User-Agent"] = "AndroidTranslate/5.3.0.RC02.130475354-53000263 5.1 phone TRANSLATE_OPM5_TEST_1"; var url = gl + "&q=" + HttpUtility.UrlPathEncode( qs[i].Replace(" ", "%20").Replace("\r", "%0D").Replace("\n", "%0A")) + "&sl=" + sls[i] + "&tl=" + tls[i]; Debug.WriteLine("url: " + url); var raw_array = Encoding.UTF8.GetString(client.DownloadData(url)); Debug.WriteLine("RAW:" + raw_array); var det_l = ""; var gtresp = new GTResp(); string src = "", tr = "", strc = "", trc = ""; if (!useNA) { var aur = new Auri(raw_array); var aur_dim_2 = new Auri(aur["^0"]); var len = new Auray(aur.raw).len; for (int m = 0; m != len + 1; m++) // combine all responce from all dimensions { var s = aur_dim_2["^" + m, "^" + 1]; src += s.Substring(1, s.Length - 2); s = aur_dim_2["^" + m, "^" + 0]; tr += s.Substring(1, s.Length - 2); } det_l = aur["^2"]; } else { Debug.WriteLine("NA MODE :)"); var auri = new Auri(raw_array); var au_se = new Auri(auri["sentences"]); src = dosen(100, au_se, "orig"); // src = s.Substring(1, s.Length-2); tr = dosen(100, au_se, "trans"); if (TRANSCRIPTION) { trc = dosen(100, au_se, "translit"); strc = dosen(100, au_se, "src_translit"); } // Debug.WriteLine(au_se["^1", "src_translit"]); // s = au_se["^0", "trans"]; // tr = s.Substring(1, s.Length-2); det_l = auri["ld_result", "srclangs", "^0"];; } gtresp.source = src; gtresp.translation = tr; gtresp.src_transcr = strc; gtresp.targ_transcr = trc; // Debug.WriteLine("trc " + trc + " strc " + strc); det_l = det_l.Substring(1, det_l.Length - 2); gtresp.speech_url = GTSpeechLink + "&q=" + HttpUtility.UrlEncode(tr) + "&sl=" + det_l + "&tl=" + tls[i]; // Debug.WriteLine(gtresp.speech_url); if (sls[i] == "auto") { gtresp.auto_detect = true; } gtresp.src_lang = det_l; gtresp.targ_lang = tls[i]; gtrlist.Add(gtresp); } } catch (Exception e) { MMain.mahou._TranslatePanel.GTRespError(e.Message /*+e.StackTrace*/); } return(gtrlist); }
public void AddTranslation(GTResp gtr) { txt_Source.Text = gtr.source; pan_Translations.Width = Width - 2; bool exist = false; if (GTRs.Count == 0) { pan_Translations.Height = 0; } foreach (Control ct in pan_Translations.Controls) { if (ct.Name == "PN_LINE_" + gtr.src_lang + ".to." + gtr.targ_lang) { exist = true; break; } } if (exist) { UpdateTranslation(gtr); } else { GTRs.Add(gtr); var ind = GTRs.IndexOf(gtr); var pan = new Panel(); pan.Width = pan_Translations.Width - 2; pan.Height = MahouUI.TrText.Height * 2; Debug.WriteLine("Pan height: " + pan.Height); pan.Name = "PN_LINE_" + gtr.src_lang + ".to." + gtr.targ_lang; pan.Location = new Point(1, pan_Translations.Height + 1); var slt = new TextBox(); var txt = new TextBox(); slt.ReadOnly = txt.ReadOnly = true; slt.TabStop = txt.TabStop = false; slt.Name = "SL_TXT" + gtr.targ_lang; slt.BorderStyle = txt.BorderStyle = 0; slt.Location = new Point(1, 0); slt.Text = (gtr.auto_detect ? "" : gtr.src_lang + "/") + gtr.targ_lang + ":"; var g = CreateGraphics(); var size = g.MeasureString(slt.Text, slt.Font); g.Dispose(); slt.Width = (int)size.Width; txt.Name = "TR_TXT" + gtr.targ_lang; txt.Text = gtr.translation; var btn = new ButtonLabel(); btn.Text = "♫"; btn.gtr = gtr; btn.Name = "LBBT_SP" + gtr.targ_lang; btn.Width = 14; btn.Height = 14; btn.Location = new Point(pan.Width - 14 - 1, 1); pan.Controls.Add(slt); pan.Controls.Add(txt); pan.Controls.Add(btn); txt.Width = pan.Width - slt.Width - 2 - btn.Width - 2; txt.Location = new Point(slt.Width + 2, 1); btn.BackColor = slt.BackColor = txt.BackColor = pan_Translations.BackColor; btn.ForeColor = slt.ForeColor = txt.ForeColor = pan_Translations.ForeColor; pan_Translations.Controls.Add(pan); txt_Source.Font = slt.Font = txt.Font = MahouUI.TrText; UpdateHeight(); } SetOptimalWidth(); SetOptimalWidth(); }