Web design and hosting, database, cloud and social media solutions that deliver business results
  • ビジネスソリューション
    • データベースサービス
      • サーバーのアップグレードと DBA サービス
      • データウェアハウス サービス
      • データ統合
      • パワーBI
    • ウェブサイトデザイン
      • Web サイトのセキュリティ
      • Web サイトの最適化
      • ロゴデザイン
      • 支払いゲートウェイ
      • テクニカルツール
    • ビジネスサービス
      • Google クラウド サービス
      • アマゾン ウェブ サービス
      • マイクロソフト アズール
    • ソーシャルメディア
    • マイクロソフトオフィス
  • 学校
    • テスト環境
    • 学習データベース
      • 基礎
      • SQL Serverデータ
      • SQLServerのメンテナンス
      • SQL Serverの日付の使用
      • SQLServerピボットの使用-ピボット解除
      • SQLServer関数の使用
      • オープンクエリを取得
      • ツール
    • ウェブデザインを学ぶ
      • Ousia コンテンツ管理システムの構築
      • ASP-NET の使用
      • CSS の使用
      • JavaScript の使用
    • クラウドと IT サービスの学習
      • タスク スケジューラ エラー 2147943645
      • OpenSSL での SSL の要求と PFX ファイルの生成の簡単な手順
    • ソーシャル メディアの使用
      • Facebookアカウントを個人用からビジネス用に変更する
      • Google レビューを依頼する
      • ソーシャル メディアの取り組みをどこに集中させるかを選択する
      • ソーシャル メディアの画像サイズ
      • メタ データを使用してソーシャル メディア画像を設定する
  • 私たちに関しては
    • ブログ
      • Google コア アップデート 2020 年 1 月
      • インターネット上のウェブサイトに関する最も厄介なこと
      • ウェブサイトの広告リーフレットのコンテンツを選択する方法
      • エントリーレベルのゲーム機の構築
      • オンライン詐欺の防止
      • ギグエコノミーのスキマー
      • ホットチリインターネット閉鎖
      • 無料のベクター グラフィックスのトップ 5 Web サイト
    • キャリア
      • 翻訳者 英日
      • 英語-トルコ語翻訳者
    • チーム
      • アイセ・ハー
      • アリ アル アミン
      • ギャビン・クレイトン
      • サイガングー
      • スーリヤ・ムッカマラ
      • スニール・クマール
      • チェスターコッパーポット
    • ポートフォリオ
čeština (CS)Deutsch (DE)English (EN-US)English (EN-GB)Español (ES)Français (FR)हिंदी (HI)italiano (IT)日本語 (JA)polski (PL)Português (PT)русский (RU)Türk (TR)中国的 (ZH)

ASP.NET から Google 翻訳を呼び出す

チュートリアル: コード ビハインドからの長いドキュメントに対して、POST を使用して ASP.NET から Google 翻訳を呼び出す。

If you want to run through this walkthrough, please follow the guide on setting up our test environment.

Experience Level - Intermediate

序章

Google Translate API は、かなり複雑な翻訳を実行するのに適しています。完璧ではありませんが、少なくとも、伝えようとしている内容の基本的な理解を読者に提供します。

このドキュメントは、約 500 文字を翻訳できる Java Script を使用するとどうなるかを説明するのに非常に適していますが、より大きなドキュメントを翻訳する必要がある場合はほとんど説明されていません。

POST を使用する場合、これを 5000 文字まで増やすことができるため、投稿リクエストを Google API に送信して翻訳を受け取る独自のコードを開発しました。

最初のステップでは、クラスを App_Code フォルダーに追加して Translate という名前にする必要があります。ビルド アクションを Compile に設定するチュートリアルを思い出してください。

ドキュメントを見る: Google Translate API コードを見る

VB

Imports System.IOImports System.NetImports System.Web.Script.SerializationPublic Class Translate    Shared Function GetTranslation(ByVal key As String, ByVal source As String, ByVal target As String, ByVal Text As String) As String        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12        Dim TranslatedString As String = ""        Text = "q=" + Text        Dim TranslateRequest As New Uri(String.Format("https://www.googleapis.com/language/translate/v2?key={0}&source={1}&target={2}&format=html", key, source, target))        Dim Req As WebRequest = WebRequest.Create(TranslateRequest)        Req.Method = "POST"        Req.Headers.Add("X-https-Method-Override", "GET")        Req.ContentType = "application/x-www-form-urlencoded"        Using ReqStr As Stream = Req.GetRequestStream()            Dim encoding As New UTF8Encoding()            Dim bytes As Byte() = encoding.GetBytes(Text)            ReqStr.Write(bytes, 0, bytes.Length)        End Using        Dim ReturnStr As String        Using sr = New StreamReader(Req.GetResponse.GetResponseStream)            ReturnStr = sr.ReadToEnd()        End Using        Dim Reader As New JavaScriptSerializer        Dim TranslateJSON As Dictionary(Of String, Object) = Reader.DeserializeObject(ReturnStr)        Dim TranslateData As Dictionary(Of String, Object)        If TranslateJSON.ContainsKey("data") Then            TranslateData = TranslateJSON("data")            If TranslateData.ContainsKey("translations") Then                For Each pair In TranslateData.Item("translations")(0)                    TranslatedString = pair.Value.ToString()                Next            End If        End If        Return TranslatedString    End FunctionEnd Class

Add a page

Within the Pages Section, Add a new page called GoogleTranslate, and then the HTML and code below.

HTML

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title></title>    <script>        function UpdateHiddenField(el, id) {            nextElSibling(el).value = el.innerHTML;        }        function nextElSibling(el) {            if (el.nextSibling)                do { el = el.nextSibling } while (el && el.nodeType !== 1);            return el;        }    </script></head><body>    <form id="form1" runat="server">        <div style="max-width:1000px;margin:auto;">              <div style="clear:both;">                <asp:Label ID="KeyLabel" runat="server" AssociatedControlID="LgTo" Text="API Key"></asp:Label>                <asp:TextBox ID="KeyValue" runat="server"></asp:TextBox>            </div>            <div style="float:left;width:50%;background-color:#ddd;">                <div>                <asp:Label ID="LgFromLabel" runat="server" AssociatedControlID="LgFrom" Text="From"></asp:Label>                <asp:DropDownList runat="server" ID="LgFrom">                    <asp:ListItem Text="English" Value="en"></asp:ListItem>                    <asp:ListItem Text="Français" Value="fr"></asp:ListItem>                    <asp:ListItem Text="Deutsch" Value="de"></asp:ListItem>                </asp:DropDownList>                </div>                <div style="min-height:400px;border:1px solid #ccc;" contenteditable="true" onkeyup="UpdateHiddenField(this)" id="ContentTextInput" runat="server"></div>                <asp:HiddenField ID="ContentText" runat="server"/>            </div>            <div style="float:left;width:50%;background-color:#ccc;">                <div>                <asp:Label ID="LgToLabel" runat="server" AssociatedControlID="LgTo" Text="To"></asp:Label>                <asp:DropDownList runat="server" ID="LgTo">                    <asp:ListItem Text="English" Value="en"></asp:ListItem>                    <asp:ListItem Text="Français" Value="fr"></asp:ListItem>                    <asp:ListItem Text="Deutsch" Value="de" Selected="True"></asp:ListItem>                </asp:DropDownList>                </div>                <div style="min-height:400px;border:1px solid #bbb;" runat="server" id="ContentTrans"></div>            </div>             <div style="clear:both;text-align:center;">                <asp:Button runat="server" ID="Translation" Text="Translate"/>            </div>        </div>    </form></body></html>

VB

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load    End Sub    Protected Sub GetTranslation_Click(sender As Object, e As EventArgs) Handles Translation.Click        Dim Key As String = "Your Key"        Dim source As String = LgTo.SelectedItem.Text.ToString        Dim target As String = LgFrom.SelectedItem.Text.ToString        Dim PageText As String = HttpUtility.HtmlDecode(ContentText.InnerHtml)        Try            ContentTrans.InnerHtml = HttpUtility.HtmlDecode(Translate.GetTranslation(Key, source, target, PageText))        Catch        End Try    End Sub

機能

この関数には 4 つの入力が必要です。これらは、キー、元の言語、元の言語、および翻訳するテキストです。

次に、戻り文字列を宣言し、新しい Web リクエスト (Req) にすばやく解析されるリクエスト URL 文字列を作成します。

次に、リクエスト タイプとコンテンツ タイプを設定し、最も重要なヘッダーを追加して get メソッドをオーバーライドします。

これが完了したら、データをストリームとして Google に送信します (ReqStr)。

次に、Google から返された JSON を保持する戻り文字列 (ReturnStr) を宣言し、応答文字列を読み取ります。

次のステップは、JavaScriptSerializer の作成です。これは、当時の私の開発スキルの最も弱い領域であったため、おそらく最も混乱を招きました。この最後のセクションが行うことは、必要な領域に到達するまでテキストの各セクションを引き出し、返されるテキストを Google から返される値として設定することです。これは世界で最も精巧なコードではないかもしれないので、整理する方法を見つけたら教えてください。

この例では、DIV コンテンツを別の内容に取り込みます。 (エディターと Google からの) 二重のデコードに注意してください。また、言語を示す 2 つのテキスト ボックスがあります。

著者

役に立った?

Please note, this commenting system is still in final testing.
Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

RSSLoginLink クッキーポリシーサイトマップ

Social Media

facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd

Get in Touch

+442392064871info@claytabase.comClaytabase Ltd, Unit 3d, Rink Road Industrial Estate, PO33 2LT, United Kingdom
The settings on this site are set to allow all cookies. These can be changed on our Cookie Policy & Settings page.
By continuing to use this site you agree to the use of cookies.
Ousia Logo
Logout
Ousia CMS Loader