0

こんにちは、C# を使用して Asp.net 4.0 で開発された多言語 Web アプリケーションに取り組んでいます。アプリケーション全体を翻訳する必要がある各言語のリソース ファイルを作成しています。この最初に、英語でメイン リソース ファイルを作成します。ここで、Language.resx ファイルのキーと値のペアをフェッチし、値を目的の言語に変換し、この値を別の resx ファイル (例: Language.hi.resx) に挿入します。値の変換には、language.resx ファイルの値ごとに Google Language Translator 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) 許可されていません。

この例外はランダムに発生します。つまり、同じ文 (値) がすべての言語で正しく翻訳されますが、1 つまたは 2 つの言語の例外が発生します。この問題は、8 ~ 12 のリクエストの後に発生します。注: 入力値の文字の長さは常に 500 文字未満であり、この問題はすべてのサイズの文 (つまり、小さな 10 ~ 20 文字と大きな 250 ~ 400 文字) で発生します。Google API がこのように動作する理由がわかりません。

4

1 に答える 1