""" @author: idoia lerchundi """ import streamlit as st from language_directions import * from transformers import pipeline from adibideak import adibide_esaldiak from PIL import Image def local_css(file_name): with open(file_name) as f: st.markdown(f"", unsafe_allow_html=True) st.set_page_config( page_title="Streamlit iCodeIdoia: Basque (EU) Euskera Multilingual Translator (Basque as the Starting Point)", ) st.image("images/banner.jpg") # ---- LOAD local_css("styles/style.css") source_lang_dict = get_all_source_languages() target_lang_dict = {} source_languages = source_lang_dict.keys() def get_auto_detect_source_dropdown(input_text): source, _ = auto_detect_language_code(input_text) language_name = get_name_from_iso_code(source) source_dropdown_text = "Detected - " + language_name update_source_languages_dict(source_lang_dict, source_dropdown_text) source_language_dropdown = st.selectbox(choices=source_languages, value=source_dropdown_text, label="Input Language") return source_language_dropdown, language_name def get_target_dropdown(source_language_name, input_text): global target_lang_dict target_lang_dict, source_language = get_target_languages(source_lang_dict[source_language_name], input_text) target_languages = list(target_lang_dict.keys()) default_target_value = None if "English" in target_languages or "english" in target_languages: default_target_value = "English" else: default_target_value = target_languages[0] target_dropdown = st.selectbox(choices=target_languages, value=default_target_value, label="Output Language") return target_dropdown def get_dropdown_value(dropdown): if isinstance(dropdown, st.selectbox): dropdown_value = dropdown.constructor_args.get('value') elif isinstance(dropdown, str): dropdown_value = dropdown return dropdown_value def get_dropdowns(source_dropdown, input_text): source_language_name = get_dropdown_value(source_dropdown) if input_text and source_language_name == "Detect" or source_language_name.startswith("Detected"): source_dropdown, source_language_name = get_auto_detect_source_dropdown(input_text) target_dropdown = get_target_dropdown(source_language_name=source_language_name, input_text=input_text) return source_dropdown, target_dropdown def input_changed(source_language_dropdown, input_text=""): return get_dropdowns(source_dropdown=source_language_dropdown, input_text=input_text) def translate(input_text, source, target): source_readable = source if source == "Detect" or source.startswith("Detected"): source, _ = auto_detect_language_code(input_text) if source in source_lang_dict.keys(): source = source_lang_dict[source] target_lang_dict, _ = get_target_languages(source) try: target = target_lang_dict[target] model = f"Helsinki-NLP/opus-mt-{source}-{target}" pipe = pipeline("translation", model=model) translation = pipe(input_text) return translation[0]['translation_text'] except KeyError: return f"Error: Translation from {source_readable} to {target} is not supported by Translation Models" with st.container(): st.header("Basque (EU) Euskera Multilingual Translator (Basque as the Starting Point)") st.caption("This is an AI translator using language models - Hau hizkuntza-ereduak erabiltzen dituen IA itzultzaile bat da. Oraingoz lau hizkuntzetara itzultzen du.") me = """
More about me and some apps
""" st.markdown(me, unsafe_allow_html=True) coffee = """
Buy Me A Coffee
""" col1, col2 = st.columns([1,1], gap="small") with col1: #source_language_dropdown.change slang = ("Detect", "Basque") # Example list of languages source_language_dropdown = st.selectbox("Language - Hizkuntza", slang, key='source_languages') # Create a text area widget input_textbox = st.text_area("Enter text - Idatzi textua", value="", key='input_text') data_load_state = st.text("") with col2: tlang=("","English","German","Russian","Spanish") target_language_dropdown = st.selectbox("Translation - Itzulpena", tlang, key='target_languages') if st.button('Itzuli - Translate') and len(input_textbox)> 0: translated_output = translate(input_textbox,source_language_dropdown,target_language_dropdown) st.text_area("Itzulpena - Translation", value=translated_output, disabled=True) @st.cache_data def load_data(inputt,inputl,targetl): data = translate(inputt,inputl,targetl) data_load_state.text("") return data if len(target_language_dropdown)>1 and len(source_language_dropdown)>0 and target_language_dropdown!= "" and source_language_dropdown!="Detect" and len(input_textbox)>0: data_load_state.text("Itzultzena amaituta...") #data = load_data(input_textbox,source_language_dropdown,target_language_dropdown) st.markdown(coffee, unsafe_allow_html=True)