【问题标题】:Google translate API (Paid Api) Request Error for few requests randomly while sending multiple request in Asp.net在 Asp.net 中发送多个请求时,随机请求少数请求的 Google 翻译 API(付费 API)请求错误
【发布时间】:2013-06-24 11:01:28
【问题描述】:

您好,我正在开发一个使用 C# 在 Asp.net 4.0 中开发的多语言 Web 应用程序。 我正在为我必须翻译整个应用程序的每种语言创建一个资源文件。为此,首先我用英语创建了一个主资源文件。现在我们获取 Language.resx 文件的键值对并将值翻译成所需的语言并将该值插入另一个 resx 文件中。(例如 Language.hi.resx)。对于值的转换,我对 language.resx 文件的每个值使用 Google 语言翻译 A​​PI,并使用以下函数来翻译该值。

     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) Forbidden.

此异常以随机方式发生,这意味着对于同一个句子(值),它可以在所有语言中正确翻译,但通过一种或两种语言的异常。此问题在 8-12 次请求后出现。 注意:我的输入值的字符长度始终小于 500 个字符,所有大小的句子都会出现此问题(即小 10-20 个字符和大 250-400 个字符) 我不确定为什么 google API 会这样。

【问题讨论】:

  • 调用 API 的次数没有限制吗?你有没有机会达到这个限制?
  • 不,我没有达到极限。如果碰巧我达到了 API 的限制,也没有翻译我最后请求的文本。但是我的代码将所有值从我的资源文件的开头翻译到结尾。该问题仅在少数文本中以随机方式发生。

标签: c# asp.net google-translate


【解决方案1】:

通过增加字符/秒/用户限制来增加 Google Translator API 的配额。

https://code.google.com/apis/console/#project:149xxxxxxx84:quotas

【讨论】:

  • 进入该页面的步骤: 1. 登录谷歌 2. 转到 url : code.google.com/apis/console 3. 点击配额 4. 将翻译 API 报价增加到 100000
猜你喜欢
  • 2021-01-14
  • 1970-01-01
  • 2011-05-23
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 2023-03-08
相关资源
最近更新 更多