 英語を日本語に翻訳します。
英語を日本語に翻訳します。
ネットに接続するため、少し時間がかかります。// 英語->日本語変換サンプル
// 翻訳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を明示的に実行する必要性は無いので、命令自体を削除しても問題は無いのですが……。
なんとなくですが、明記しておきたいものです。
修正しました。
コメントを投稿