Google翻訳を使う
このチュートリアルでは、テキストを翻訳するGoogleのWebサービスを使用します。翻訳が必要なテキストは、URLパラメーターとして渡されます。その結果は。Webブラウザーコントロール内のDOM構造から抽出され、GuiXTに返されます。
ここでは、テキストボックスを入力として使用し、ロングテキスト変数を使用して後でそのテキストにアクセスします。プッシュボタンは、翻訳されたテキストを他のロングテキスト変数を介して2番目のテキストボックスに設定するVB.NET関数を呼び出すInputScriptを処理します。
pushbutton (20,1) “Translate” process=“translate_text.txt”
text (22,1) “english”
TextBox (20,13) (25,100) name=“translate_this”
text (27,1) “german”
TextBox (26,13) (31,100) name=“translated_text”
Inputscript “translate_text.txt”:
callvb tutorials.translator.translate “translate_this” “en” “translated_text” “de”
return
VB.NET関数の実装:
プロジェクトにguinet.dllへの参照を追加します。このプロジェクトは、必ずクラスライブラリ(DLL)としてコンパイルしてください。
次に、コンパイルされたDLLファイルおよびguinet.dll(GuiXTセットアップに付属)を、GuiXTプロファイルで指定されたディレクトリにコピーします。
VB.NETのコードは以下のようになります。その下に注記を付けてあります。
1 | Imports guinet |
2 | Public Class translator |
3 | Inherits System.Windows.Forms.WebBrowser |
4 | |
5 | Private done As Boolean |
6 | |
7 | Public Function translate(ByVal textidIn As String, _ |
8 | ByVal LangIn As String, _ |
9 | ByVal textidOut As String, _ |
10 | ByVal LangOut As String) As String |
11 | |
12 | ‘Access to GuiXT variables and SAP GUI Session |
13 | Dim g = New guixt |
14 | |
15 | ‘Get content of GuiXT text variable |
16 | Dim translateThis = g.GetText(textidIn) |
17 | |
18 | ‘ Build Google translation URL |
19 | Dim url = “http://www.google.com/translate_t?langpair=” _ |
20 | & LangIn & “|” & LangOut & “&text=” _ |
21 | & System.Uri.EscapeUriString(translateThis) |
22 | |
23 | done = False |
24 | Navigate(url) |
25 | |
26 | ‘ wait until new document is loaded |
27 | While Not done |
28 | Application.DoEvents() |
29 | End While |
30 | |
31 | ‘ text translation done |
32 | Dim text = Document.GetElementById(“result_box”).InnerText |
33 | |
34 | ‘Transfer translation back to GuiXT text variable |
35 | g.SetText(textidOut, text) |
36 | |
37 | Return “” |
38 | |
39 | End Function |
40 | |
41 | ‘ Document completed |
42 | Public Sub MyDocumentCompleted _ |
43 | (ByVal sender As Object, _ |
44 | ByVal e As WebBrowserDocumentCompletedEventArgs) _ |
45 | Handles Me.DocumentCompleted |
46 | done = True |
47 | End Sub |
End Class |
注記とヒント:
14行目:
textidlnは、翻訳されるテキストが格納されたロングテキスト変数の名前です。内容を読み出すにはguixt.getTextを呼び出します。
39行目:
Google翻訳にどのくらい時間がかかるか分からないため、ブラウザーコントロールの”documentCompleted”イベントを待つ必要があります。
29行目:
サイトが完全に読み込まれると、wb.Document.GeElementByIdを介してサイトのすべての要素にアクセスできます。ここでは特に、翻訳されるテキストを含む要素result_boxに着目します。
32行目:
翻訳されたテキストは、guixt.SetTextコマンドを使用してSAP GUIウィンドウに直接表示されます。ここでは、GuiXTスクリプト内のTextBox name=コマンドで定義されたロングテキスト変数の名前が”textidOut”に格納されます。この名前は、VB.NET関数にパラメーターとして渡されます。
長いテキストに関する注意: 翻訳されるテキストを含むURLの長さには制限があるため、1度に1センテンスのみ翻訳するようにしてください。