見出し画像

辞書パッケージを試す(2)

(Python学習初心者の試行錯誤・備忘録です)

一旦は動いたはずのPyDictionaryが、動かなくなってしまいました。

こちらの記事・コメント欄見ると・・

8年前(2016年)にも「一旦は動いたはずのPyDictionaryが、動かなくなって」困っていた人がいたみたい。

※その後、2024/04/29 19:30(台湾時間 :日本時間だと20:30)にテストしたら、PyDictionary復活していました。一日の処理回数の上限とかがあって、そこまで行くと使えなくなる・・ということなのかも。ただ、このままでは、ほかの方に積極的にお勧めはできませんね。

PyMultiDictionaryに戻る

じゃあ、PyMultiDictionaryの方は?

from PyMultiDictionary import MultiDictionary
dictionary = MultiDictionary()
print(dictionary.translate('en', 'good'))

[('af', 'goeie'), ('ar', 'جَيِّد'), ('bn', 'ভাল'), ('de', 'gut'), ('el', 'καλός'), ('en', 'good'), ('es', 'bueno'), ('fr', 'bon'), ('hi', 'अच्छा'), ('it', 'buono'), ('ja', '良い'), ('jv', 'Apik'), ('ko', '좋은'), ('mr', 'चांगले'), ('ms', 'baik'), ('no', 'bra'), ('pl', 'dobry'), ('pt', 'bom'), ('ro', 'bun'), ('ru', 'хороший'), ('sv', 'bra'), ('ta', 'நல்ல'), ('tr', 'iyi'), ('uk', 'гарний'), ('vi', 'tốt'), ('zh', '好的')]
こちらは私が試した限り、継続的に動作しています。公式の説明

を見て、

from PyMultiDictionary import MultiDictionary
dictionary = MultiDictionary()
print(dictionary.translate('en', 'good', to='ja'))

で、日本語だけになるかと思ったのですが

UserWarning: good cannot be translated to ja-language as Google API is not available. Error: HTTP Error 429: Too Many Requests
warn(f'{word} cannot be translated to {to}-language as Google API is not available. Error: {e}')
[('af', 'goeie'), ('ar', 'جَيِّد'), ('bn', 'ভাল'), ('de', 'gut'), ('el', 'καλός'), ('en', 'good'), ('es', 'bueno'), ('fr', 'bon'), ('hi', 'अच्छा'), ('it', 'buono'), ('ja', '良い'), ('jv', 'Apik'), ('ko', '좋은'), ('mr', 'चांगले'), ('ms', 'baik'), ('no', 'bra'), ('pl', 'dobry'), ('pt', 'bom'), ('ro', 'bun'), ('ru', 'хороший'), ('sv', 'bra'), ('ta', 'நல்ல'), ('tr', 'iyi'), ('uk', 'гарний'), ('vi', 'tốt'), ('zh', '好的')]

ターゲットを「日本語」にしたらWarningが出る。言語指定しなければ、マルチ言語で出力されるがWarningは出ない。なら、言語指定せず、マルチで取り出してから自分で日本語だけにすればいいか。

def mytranslate(lang,word,tolang):
    from PyMultiDictionary import MultiDictionary
    dictionary = MultiDictionary()
    templist = dictionary.translate(lang, word)
    result = None
    for templang, temptrans in templist:
        if templang == tolang:
            result =temptrans
            break
    return(result)

print(mytranslate('en', 'good', 'ja'))

これで、だいぶ時間はかかりますが「良い」と出力されました。すごく無駄があるような気がしますけど、まあ、今のところ動きます。
 ではこれで、前回やったように people,checked,baggage,late,mainly,active
を訳してみます。ついでに中文訳もつけてみましょう。

def mytranslate(lang,word,tolang):
    from PyMultiDictionary import MultiDictionary
    dictionary = MultiDictionary()
    templist = dictionary.translate(lang, word)
    result = None
    for templang, temptrans in templist:
        if templang == tolang:
            result =temptrans
            break
    return(result)

words = ['people','checked','baggage','late','mainly','active']
for word in words:
    print (word, mytranslate('en',word,'ja'),mytranslate('en',word,'zh'))
people 人々 人们
checked チェックの 有格子花的
baggage 手荷物 行李
late 遅れた 迟的
mainly 主に 大体上
active 活動的な 活跃的

日本語の方は、一応使えそうです。
中文の方は、このままじゃ台湾で使われている繁体字表記にはならない
(´;ω;`)

この記事が気に入ったらサポートをしてみませんか?