您好我正在开发一个使用 C# 在 Asp.net 4.0 中开发的多语言 Web 应用程序。我正在为我必须翻译整个应用程序的每种语言创建一个资源文件。为此,首先我用英语创建了一个主资源文件。现在我们获取 Language.resx 文件的键值对并将值翻译成所需的语言并将这个值插入另一个 resx 文件中。(例如 Language.hi.resx)。对于值的转换,我对 language.resx 文件的每个值使用 Google 语言翻译器 API,并使用以下函数来翻译该值。
public static string TranslateText(string Text, string tragetlan, string sourceLang)
{
try
{
LanguagesListResponse ls = new LanguagesListResponse();
Google.Apis.Translate.v2.Data.LanguagesResource ss = new Google.Apis.Translate.v2.Data.LanguagesResource();
ss.Language = tragetlan;
// GetLanguageCode
string googlekey = "Axxxxxxxxxxxxxxxxxxxxxxxxxxxxw";
var service = new TranslateService(new BaseClientService.Initializer()
{
ApiKey = googlekey
});
//new TranslateService { Key = googlekey };
ICollection<string> data = new Collection<string>();
string[] srcText = new[] { Text };
TranslationsListResponse response = service.Translations.List(srcText, tragetlan).Fetch();
var translations = new List<string>();
// We need to change this code...
// currently this code
foreach (Google.Apis.Translate.v2.Data.TranslationsResource translation in response.Translations)
{
translations.Add(translation.TranslatedText);
}
return translations[0];
}
catch (Exception ex)
{
return Text;
}
}
上面的函数对我来说很好,但是对于某些值,这个函数通过异常说:
Google.Apis.Requests.RequestError 访问未配置 [403] 远程服务器返回错误:(403)禁止。
此异常以随机方式发生,这意味着对于同一个句子(值),它可以在所有语言中正确翻译,但通过一种或两种语言的异常。此问题在 8-12 次请求后出现。注意:我的输入值的字符长度总是小于 500 个字符,并且所有大小的句子都会出现这个问题(即小 10-20 个字符和大 250-400 个字符)我不知道为什么 google API 会这样。