当我尝试翻译简单的“19 - 15”时,源语言的自动检测失败,并且出现“错误的语言对”异常。
.NET 示例包含某种围绕 Google Translate API 的包装器。它位于 Google.Apis.Translate.v2.cs 文件中。但是这个包装器不允许指定源语言。那么,最简单的方法是什么?
我认为最正确的方法是重新生成 Google.Apis.Translate.v2.cs。但我不知道该怎么做。
虽然我可以处理粗略的 REST 请求,但看起来很尴尬。
当我尝试翻译简单的“19 - 15”时,源语言的自动检测失败,并且出现“错误的语言对”异常。
.NET 示例包含某种围绕 Google Translate API 的包装器。它位于 Google.Apis.Translate.v2.cs 文件中。但是这个包装器不允许指定源语言。那么,最简单的方法是什么?
我认为最正确的方法是重新生成 Google.Apis.Translate.v2.cs。但我不知道该怎么做。
虽然我可以处理粗略的 REST 请求,但看起来很尴尬。
您可以在翻译 ListRequest 中指定 Source 参数,如以下代码段所示:
var request = service.Translations.List(srcText, input.TargetLanguage);
request.Source = "fr";
TranslationsListResponse response = request.Fetch();
或者,您可以在 Google.Apis.Translate.v2.cs 中为 List 方法创建和重载。只需在原始 List() 方法下面键入:
public virtual ListRequest List(Google.Apis.Util.Repeatable<string> q,
string source, string target)
{
var _request = new ListRequest(service, q, target);
_request.Source = source;
return _request;
}
之后你可以打电话
var response = service.Translations.List(srcText, "en","ru").Fetch();
对我有用的是以下内容:
var request = service.Translations.List(text, targetLanguage);
if (!string.IsNullOrEmpty(sourceLanguage))
{
request.Source = sourceLanguage;
request.Format = TranslationsResource.ListRequest.FormatEnum.Text;
}
var response = await request.ExecuteAsync();