예제 #1
0
        string OneLineTranslate(string src, string from)
        {
            if (src.Length <= 0)
            {
                return(src);
            }

            string ret = "";

            TranslateGoogle engine = new TranslateGoogle();

            string[] lines = src.Split(new string[] { "\r\n" }, StringSplitOptions.None);
            for (int i = 0; i < lines.Length; i++)
            {
                string t;
                if (this.TranslateCache.ContainsKey(lines[i]))
                {
                    t = this.TranslateCache[lines[i]];
                }
                else
                {
                    t = engine.Trans(lines[i], from, this.GoogleTranslateLang);
                    Log.Debug("GoolgeTranslate:" + lines[i] + " => " + t);
                    this.TranslateCache[lines[i]] = t;
                }
                ret += "\r\n" + t;
            }
            return(ret.Substring(2));
        }
예제 #2
0
        static string TranslateTextGoogleTranslate(string text, string from, string to)
        {
            //定型文で変換できない場合GoogleTranslateへ
            List <string> list    = SplitEscapeString(text);
            bool          use0001 = false;
            bool          use0003 = false;

            if (text.IndexOf("\r\n") >= 0)
            {
                use0001 = true;
            }
            if (text.IndexOf("@0003") >= 0)
            {
                use0003 = true;
            }

            uint addchar = 0;

            for (int i = 0; i < list.Count; i++)
            {
                string oneline = list[i];
                if (oneline == "")
                {
                    continue;
                }
                if (oneline[0] == '@')
                {//エスケープ文字列は翻訳しない.
                    if (oneline.IndexOf("@0002") >= 0 ||
                        oneline.IndexOf("@0008") >= 0 ||
                        oneline.IndexOf("@0009") >= 0 ||
                        oneline.IndexOf("@000A") >= 0 ||
                        oneline.IndexOf("@000B") >= 0 ||
                        oneline.IndexOf("@000C") >= 0 ||
                        oneline.IndexOf("@000D") >= 0 ||
                        oneline.IndexOf("@000E") >= 0 ||
                        oneline.IndexOf("@000F") >= 0 ||
                        oneline.IndexOf("@0001") >= 0 ||
                        oneline.IndexOf("\r\n") >= 0
                        )
                    {
                        addchar = 0;
                    }
                    continue;
                }
                oneline = Cat0003(oneline, i, list);

                //英語の場合、改行はスペースを兼ねるので。
                if (from == "en")
                {
                    oneline = oneline.Replace("\r\n", " ");
                }
                else
                {
                    oneline = oneline.Replace("\r\n", "");
                }

                TranslateGoogle engine    = new TranslateGoogle();
                string          transline = engine.Trans(oneline, from, to);

                if (use0001)
                {
                    transline = InsertSerifnl(transline, to, use0003, ref addchar);
                }
                list[i] = transline;
            }

            string resultext = string.Join("", list);

            return(resultext);
        }