Google翻訳を使用して、ランダムな言語を経由してテキストを日本語に翻訳するプログラム
このようなことができます。
モジュールのインポート:
import random
from googletrans import Translator
コードは、randomモジュールとgoogletransモジュールからTranslatorインポートしています。 モジュールはrandomランダムな選択を行うために使用され、モジュールはgoogletransGoogle 翻訳 API へのアクセスが提供されます。
言語辞書の定義:
languages = {
# 省略...
}
languages辞書は、各言語のコードに対応する言語名を展開しています。
main関数の定義:
def main():
user_input = input("翻訳したい言葉を入力してください: ")
lang1 = random.choice(list(languages.keys()))
lang2 = random.choice([code for code in languages if code != lang1])
lang3 = random.choice([code for code in languages if code not in [lang1, lang2]])
translation1 = translator.translate(user_input, dest=lang1)
translation2 = translator.translate(translation1.text, dest=lang2)
final_translation = translator.translate(translation2.text, dest="ja")
result = f"{final_translation.text} (日本語 → {languages[lang1]} → {languages[lang2]} → {languages[lang3]})"
print(result)
user_input = input("翻訳したい言葉を入力してください: "): ユーザー向け、翻訳したいテキストを入力するように進みます。入力したテキストは変数に格納されますuser_input。
lang1 = random.choice(list(languages.keys())): languages辞書のキー(言語コード)のリストからランダムに1つの言語コードを選択し、変数に格納します。これは翻訳の最初の言語ですlang1。
lang2 = random.choice([code for code in languages if code != lang1]): languages辞書の中から以外lang1のランダムな言語コードを選択し、lang2変数に入れます。これは翻訳中の言語です。
lang3 = random.choice([code for code in languages if code not in [lang1, lang2]]): lang1とlang2以外のランダムな言語コードを選択、lang3変数に入れます。これは翻訳の最終的な言語であり、日本語です。
translation1 = translator.translate(user_input, dest=lang1): googletransライブラリを使用して、user_inputのテキストをlang1翻訳します。翻訳結果はtranslation1展開されます。
translation2 = translator.translate(translation1.text, dest=lang2): translation1のテキストをlang2翻訳します。翻訳結果はtranslation2展開されます。
final_translation = translator.translate(translation2.text, dest="ja"): translation2のテキストを日本語に翻訳します。翻訳結果はfinal_translation展開されます。
result = f"{final_translation.text} (日本語 → {languages[lang1]} → {languages[lang2]} → {languages[lang3]})": 翻訳の結果を含む文字列を作成し、result変数に入れます。この文字列には、各言語の翻訳テキストと言語名が含まれます。
print(result): 最終的な翻訳結果と言語の表示をコンソールに出力します。
このコードブロックの結果は、ユーザーが入力したテキストを偶然な3つの言語を経由して日本語翻訳し、結果翻訳と使用された言語の組み合わせを表示することです。
プログラムの実行:
if name == "main":
main()
このブロックは、スクリプトが直接実行される場合にmain関数を呼び出す部分です。
あんまりすべてのコードを書いてしまうと勉強にならないのですがやってみたいっていう人だけのために一応書いておきます。
import random
from googletrans import Translator
translator = Translator()
languages = {
"af": "アフリカーンス語",
"sq": "アルバニア語",
"am": "アムハラ語",
"ar": "アラビア語",
"hy": "アルメニア語",
"az": "アゼルバイジャン語",
"eu": "バスク語",
"be": "ベラルーシ語",
"bn": "ベンガル語",
"bs": "ボスニア語",
"bg": "ブルガリア語",
"ca": "カタロニア語",
"ceb": "セブアノ語",
"ny": "チェワ語",
"zh-cn": "中国語(簡体字)",
"co": "コルシカ語",
"hr": "クロアチア語",
"cs": "チェコ語",
"da": "デンマーク語",
"nl": "オランダ語",
"en": "英語",
"eo": "エスペラント語",
"et": "エストニア語",
"tl": "タガログ語",
"fi": "フィンランド語",
"fr": "フランス語",
"fy": "フリジア語",
"gl": "ガリシア語",
"ka": "ジョージア語",
"de": "ドイツ語",
"el": "ギリシャ語",
"gu": "グジャラート語",
"ht": "ハイチ語",
"ha": "ハウサ語",
"haw": "ハワイ語",
"iw": "ヘブライ語",
"hi": "ヒンディー語",
"hmn": "フモン語",
"hu": "ハンガリー語",
"is": "アイスランド語",
"ig": "イボ語",
"id": "インドネシア語",
"ga": "アイルランド語",
"it": "イタリア語",
"ja": "日本語",
"jw": "ジャワ語",
"kn": "カンナダ語",
"kk": "カザフ語",
"km": "クメール語",
"ko": "韓国語",
"ku": "クルド語",
"ky": "キルギス語",
"lo": "ラオ語",
"la": "ラテン語",
"lv": "ラトビア語",
"lt": "リトアニア語",
"lb": "ルクセンブルグ語",
"mk": "マケドニア語",
"mg": "マダガスカル語",
"ms": "マレー語",
"ml": "マラヤーラム語",
"mt": "マルタ語",
"mi": "マオリ語",
"mr": "マラーティー語",
"mn": "モンゴル語",
"my": "ビルマ語",
"ne": "ネパール語",
"no": "ノルウェー語",
"or": "オリヤ語",
"ps": "パシュトゥ語",
"fa": "ペルシャ語",
"pl": "ポーランド語",
"pt": "ポルトガル語",
"pa": "パンジャブ語",
"ro": "ルーマニア語",
"ru": "ロシア語",
"sm": "サモア",
"ja": "日本語",
}
def main():
user_input = input("翻訳したい言葉を入力してください: ")
lang1 = random.choice(list(languages.keys()))
lang2 = random.choice([code for code in languages if code != lang1])
lang3 = random.choice([code for code in languages if code not in [lang1, lang2]])
translation1 = translator.translate(user_input, dest=lang1)
translation2 = translator.translate(translation1.text, dest=lang2)
final_translation = translator.translate(translation2.text, dest="ja")
result = f"{final_translation.text} (日本語 → {languages[lang1]} → {languages[lang2]} → {languages[lang3]})"
print(result)
if __name__ == "__main__":
main()