import gradio as gr from deep_translator import GoogleTranslator, MyMemoryTranslator # 言語のリストを定義(例: Google翻訳がサポートする言語) LANGUAGES = { "English": "en", "Japanese": "ja", "French": "fr", "Spanish": "es", "German": "de", "Chinese (Simplified)": "zh-CN", } # 翻訳関数 def translate_with_multiple_ais(text, target_language): try: # GoogleTranslatorを使用 google_translated = GoogleTranslator(source='auto', target=target_language).translate(text) except Exception as e: google_translated = f"Error: {str(e)}" try: # MyMemoryTranslatorを使用 mymemory_translated = MyMemoryTranslator(source='auto', target=target_language).translate(text) except Exception as e: mymemory_translated = f"Error: {str(e)}" # 2つの翻訳結果を返す return google_translated, mymemory_translated # Gradioインターフェースの設定 with gr.Blocks() as demo: gr.Markdown("# Multi-AI Translator") gr.Markdown("このアプリはGoogle TranslatorとMyMemory Translatorを使用してテキストを翻訳します。") with gr.Row(): input_text = gr.Textbox(label="Text to Translate", placeholder="Enter text here...") target_language = gr.Dropdown(choices=list(LANGUAGES.keys()), label="Target Language") with gr.Row(): google_translation = gr.Textbox(label="Google Translator Result", interactive=False) mymemory_translation = gr.Textbox(label="MyMemory Translator Result", interactive=False) translate_button = gr.Button("Translate") # 翻訳ボタンの動作を設定 translate_button.click( fn=lambda text, lang: translate_with_multiple_ais(text, LANGUAGES[lang]), inputs=[input_text, target_language], outputs=[google_translation, mymemory_translation] ) # アプリを実行 demo.launch()