英語を日本語に翻訳します。
ネットに接続するため、少し時間がかかります。// 英語->日本語変換サンプル
// 翻訳APIを使用
// http://muumoo.jp/news/2007/05/09/0translationapi.html
// 参考:mod_rss.as
#module mod_translate
#deffunc rss2load_init@mod_translate
newcom oDom,"Microsoft.XMLDOM"
oDom("async") = "FALSE"
comres elm_desc
return
#deffunc rss2load@mod_translate array desc, str url, int p_max
oDom->"load" url
oRoot = oDom("documentElement")
if varuse(oRoot) == 0 : return 1
if oRoot("tagName") != "rss" : return 2
maxnum = p_max
if maxnum <= 0 : maxnum = 5
oDom->"getElementsByTagName" "description"
max = limit(elm_desc("length"), 1, maxnum)
sdim desc, 64, max
repeat max
node = elm_desc("item", cnt)
node2 = node("firstChild")
desc(cnt) = node2("nodeValue")
loop
return 0
#deffunc rss2load_clean onexit
if vartype(oRoot) == vartype("comobj") {
delcom node : delcom node2 : delcom oRoot
}
delcom elm_desc : delcom oDom
return
// 英文を和訳します。変換に成功するとstatに0が代入され、第1引数の変数に変換結果が代入されます。
// 変換に失敗するとstatに1が代入されます。
#deffunc eng2jp var result, str before, local after
rss2load after, "http://pipes.yahoo.com/poolmmjp/ej_translation_api?_render=rss&text=" + before
if (stat == 0)&(length(after) == 2) {
// after(0)にはAPIの説明が代入されている
result = after(1)
return 0
} else {
return 1
}
#global
rss2load_init@mod_translate
// モジュールここまで
target = "Good morning! How are you today?", "I'm fine, thank you. And you?", "So so."
foreach target
mes target(cnt)
eng2jp result, target(cnt)
if stat == 0 : mes "-> " + result
loop
stop
2008年1月7日月曜日
APIを利用して英語を日本語に翻訳するモジュール
登録:
コメントの投稿 (Atom)
2 件のコメント:
後ほど正式に反映しますが、クリーンアップ用命令は以下のように修正する必要があります。
#deffunc rss2load_clean onexit
if vartype(oRoot) == vartype("comobj") {
delcom node : delcom node2 : delcom oRoot
}
delcom elm_desc : delcom oDom
return
delcomを明示的に実行する必要性は無いので、命令自体を削除しても問題は無いのですが……。
なんとなくですが、明記しておきたいものです。
修正しました。
コメントを投稿