示例#1
0
        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);
        }
示例#2
0
        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;
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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();
        }
示例#5
0
        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);
        }
示例#6
0
        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();
        }