Я пишу инструмент, чтобы перевести содержимое файла html в c #.
Я использую HtmlAgilityPack
для работы с узлами HTML и YandexTranslateCSharpSdk
для перевода текстов. (Я встречался с обоими недавно)
Мой алгоритм получает текст в любом узле HTML и заменяет егос переведенным.
одна проблема состоит в том, что HtmlAgilityPack
возвращает все содержимое в теге html, когда я использую node.innerText
, а другая в том, что я понятия не имею, чтобы ускорить процесс перевода, когда я получаю текст с узла и перевожуэто с онлайн-инструментом, безусловно, занимает много времени.Код выглядит следующим образом:
foreach (var node in nodes)
{
//i++;
if (string.IsNullOrWhiteSpace(node.InnerText) || string.IsNullOrEmpty(node.InnerText))
continue;
var trans = await wrapper.TranslateText(node.InnerText.Replace("\n", "").Trim(), "en-fr");
if (node.ChildNodes.Count > 0)
{
node.ReplaceChild(doc.CreateTextNode(trans), node.ChildNodes.First());
}
else
{
node.AppendChild(doc.CreateTextNode(trans));
}
}
В HtmlAgilityPack node.innerText
только для чтения и не может использовать node.innerText="some text"
для его решения, я использовал этот код:
if (node.ChildNodes.Count > 0)
{
node.ReplaceChild(doc.CreateTextNode(trans), node.ChildNodes.First());
}
else
{
node.AppendChild(doc.CreateTextNode(trans));
}
Но естьне работает.