0

我正在制作一个程序来读取.tyd文件并尝试将“之间的所有文本从英语翻译成意大利语。

GoToDesk翻译-> “寻找计算机”

问题是我仍然“内​​存不足”。

代码是:

using System.Collections;
using System.Net;
using MiscUtil.IO;

namespace Soft_inc
{
 class MyProject
{
    public static string TranslateText(string input, string languagePair)
    {
        string url = String.Format("http://translate.google.it/?hl=en&ie=UTF8&text={0}&langpair={1}", input, languagePair);
        WebClient webClient = new WebClient();
        webClient.Encoding = System.Text.Encoding.UTF8;
        string result = webClient.DownloadString(url);
        result = result.Substring(result.IndexOf("<span title=\"") + "<span title=\"".Length);
        result = result.Substring(result.IndexOf(">") + 1);
        result = result.Substring(0, result.IndexOf("</span>"));
        return result.Trim();
}
       public static void Main()
    {
        string path_file = @"H:\Games\Software.In.v11.7.62\Software.In.v11.7.62\Localization\Italiano\idk\UI.tyd";

        string Ftext = System.IO.File.ReadAllText(path_file);
        ArrayList ar = new ArrayList();
    Console.WriteLine("This may require some time.");
    foreach (string line in new LineReader(() => new StringReader(Ftext)))
    {
        if(line.IndexOf("\"") == -1) continue;
        string text = line.Substring(line.IndexOf("\""));
        text = text.Replace("\"","");

        if(text.Length == 0) continue;
        ar.Add(text);
    }

    int idk = 0;

    while(true)
    {
        idk++;
        if(idk == ar.Count) break;
        string oldT = (string)ar[idk];
        Ftext = Ftext.Replace(oldT, TranslateText(oldT,"en|it"));
    }


    System.IO.File.WriteAllText("UI.tyd",Ftext);
}
}


}

也许是因为该文件有 2535 行文本?我该如何解决这个问题?

4

1 回答 1

0

您需要使用StreamReader类。不必将所有文件内容读入 RAM。打开一个 StreamReader 和一个StreamWriter。逐行读取文件并将翻译后的数据写入临时文件。翻译所有内容后,只需临时文件移动到所需的目的地。不要忘记在移动之前关闭源和目标句柄。

于 2021-12-19T19:28:07.863 回答