こんにちは、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 がこのように動作する理由がわかりません。