File size: 2,540 Bytes
6f3d478
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import streamlit as st
from transformers import pipeline
from streamlit_language_texts import *
import torch
import os

st.set_page_config(layout="wide", page_title=app_title["eng"], page_icon="πŸ‡²πŸ‡¦")

token = os.getenv("HF_TOKEN")
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
languages = {"πŸ‡¬πŸ‡§ English": "eng", "πŸ‡²πŸ‡¦ Darija": "ary", "πŸ‡ΈπŸ‡¦ Arabic": "ara", "πŸ‡«πŸ‡· French": "fra"}

if "lang" not in st.query_params:
    st.query_params["lang"] = "eng"
    st.rerun()

def set_language():
    if "selected_language" in st.session_state:
        st.query_params["lang"] = languages.get(st.session_state["selected_language"])

with st.sidebar:
    sel_lang = st.selectbox(
        "Select a primary language for this app",
        options=languages,
        on_change=set_language,
        key="selected_language",
    )

if 'eng2ary_pipe' not in st.session_state:
    st.session_state['eng2ary_pipe'] = pipeline("text2text-generation", model="ychafiqui/english-to-darija-2", token=token, device=device)
if 'ary2eng_pipe' not in st.session_state:
    st.session_state['ary2eng_pipe'] = pipeline("text2text-generation", model="ychafiqui/darija-to-english-2", token=token, device=device)

def eng_to_ary(text):
    if text:
        return st.session_state.eng2ary_pipe(text)[0]['generated_text']
    else:
        return ""

def ary_to_eng(text):
    if text:
        return st.session_state.ary2eng_pipe(text)[0]['generated_text']
    else:
        return ""

st.title(app_title[languages[sel_lang]])
st.write(app_description[languages[sel_lang]])

direction = st.radio(".", ["English to Darija", "Darija to English"], key="lang", horizontal=True, label_visibility="collapsed")

if direction == "English to Darija":
    input_col, output_col = st.columns(2)
    input_col_container = input_col.container()

    eng_text = input_col_container.text_area("πŸ‡¬πŸ‡§ Write English text here", key="eng_text")

    output_col_container = output_col.container()
    output_col_container.text_area("πŸ‡²πŸ‡¦ Darija translation will appear here", value=eng_to_ary(eng_text))

elif direction == "Darija to English":
    input_col, output_col = st.columns(2)
    input_col_container = input_col.container()

    ary_text = input_col_container.text_area("πŸ‡²πŸ‡¦ Write Darija text here", key="ary_text")

    output_col_container = output_col.container()
    output_col_container.text_area("πŸ‡¬πŸ‡§ English translation will appear here", value=ary_to_eng(ary_text))

st.markdown(app_footer[languages[sel_lang]])