c# - 通过谷歌翻译的字符串翻译停止工作
问题描述
前段时间,我使用了一种简单的方法,使用谷歌翻译(没有云翻译 API)将字典从一种语言翻译成另一种语言。它看起来类似于:
private static Dictionary<string, string> StringTranslator(Dictionary<string, string> input)
{
var output = new Dictionary<string, string>();
var LanguagePair = "en|fr"; //let's take English to French as an example
using (var web = new WebClient())
{
foreach (var pair in input)
{
var url = string.Format(@"http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", pair.Value, LanguagePair);
var w = web.DownloadString(url);
w = w.Substring(w.IndexOf(@"<span title="">") + @"<span title="">".Length);
w = w.Substring(w.IndexOf(">") + 1);
w = w.Substring(0, w.IndexOf("</span>"));
output.Add(pair.Key, w.Trim());
}
}
return output;
}
在本例中,字典的键是字符串名称(此处无关),值是要翻译的文本。直到最近,当谷歌改变了翻译器的布局(我认为)时,代码才能正常工作。现在输出始终是完整下载的网页,而不仅仅是翻译的文本。调试表明,
<span title="">
在下载的页面中找不到,翻译后的文本也找不到。有没有办法修复它,或者可能有另一种方法来实现像这样的自动翻译?干杯。
编辑:使用相关方法提供更多上下文:
private static void Main()
{
var strings = new Dictionary<string, string>()
{
{"str1", "one" },
{"str2", "two" },
{ "strTest", "This is just nothing but a test message that will soon be translated into another language." }
};
var test = StringTranslator(strings);
}
字典中的所有输出字符串看起来都类似于:https ://pastebin.com/h4ahMRCb (很长而且格式很差,但是当我得到它时就是这样)
解决方案
推荐阅读
- twitter-bootstrap - 带有下拉菜单的 Bootstrap 4.6 导航栏项目不会与其他菜单项垂直对齐
- windows - Get-PackageSource 不返回最近添加的包
- ibm-watson - 如何从外部查询中获取结果并在对话中使用
- apache - Apache 无法执行通过 FTP 传输的文件
- javascript - 当我通过 JS 单击按钮时,如何折叠(前后)一个部分?
- qt - 在 QML 中完成的自定义标题栏中重现 OS 最小化行为
- openlayers - OpenLayers - ArcGIS 矢量切片 - 使用 ol-MapBox-Style 进行样式设置
- netlogo - 网标。海龟出生时更新历史列表
- javascript - 如何从现有的对象数组构建一个新的对象数组,过滤以匹配键列表
- reactjs - 如何避免Warning:[antd:Table]`FilteredKeys`应该全部控制还是不控制