Upload 4 files
Browse files- .bashrc +161 -0
- 1_Hindi_to_Sindhi_MT.py +83 -0
- Dockerfile +18 -0
- pages/2_Sindhi_to_Hindi_MT.py +82 -0
.bashrc
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# ~/.bashrc: executed by bash(1) for non-login shells.
|
| 2 |
+
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
|
| 3 |
+
# for examples
|
| 4 |
+
|
| 5 |
+
# If not running interactively, don't do anything
|
| 6 |
+
case $- in
|
| 7 |
+
*i*) ;;
|
| 8 |
+
*) return;;
|
| 9 |
+
esac
|
| 10 |
+
|
| 11 |
+
# don't put duplicate lines or lines starting with space in the history.
|
| 12 |
+
# See bash(1) for more options
|
| 13 |
+
HISTCONTROL=ignoreboth
|
| 14 |
+
|
| 15 |
+
# append to the history file, don't overwrite it
|
| 16 |
+
shopt -s histappend
|
| 17 |
+
|
| 18 |
+
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
|
| 19 |
+
HISTSIZE=1000
|
| 20 |
+
HISTFILESIZE=2000
|
| 21 |
+
|
| 22 |
+
# check the window size after each command and, if necessary,
|
| 23 |
+
# update the values of LINES and COLUMNS.
|
| 24 |
+
shopt -s checkwinsize
|
| 25 |
+
|
| 26 |
+
# If set, the pattern "**" used in a pathname expansion context will
|
| 27 |
+
# match all files and zero or more directories and subdirectories.
|
| 28 |
+
#shopt -s globstar
|
| 29 |
+
|
| 30 |
+
# make less more friendly for non-text input files, see lesspipe(1)
|
| 31 |
+
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
| 32 |
+
|
| 33 |
+
# set variable identifying the chroot you work in (used in the prompt below)
|
| 34 |
+
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
|
| 35 |
+
debian_chroot=$(cat /etc/debian_chroot)
|
| 36 |
+
fi
|
| 37 |
+
|
| 38 |
+
# set a fancy prompt (non-color, unless we know we "want" color)
|
| 39 |
+
case "$TERM" in
|
| 40 |
+
xterm-color|*-256color) color_prompt=yes;;
|
| 41 |
+
esac
|
| 42 |
+
|
| 43 |
+
# uncomment for a colored prompt, if the terminal has the capability; turned
|
| 44 |
+
# off by default to not distract the user: the focus in a terminal window
|
| 45 |
+
# should be on the output of commands, not on the prompt
|
| 46 |
+
#force_color_prompt=yes
|
| 47 |
+
|
| 48 |
+
if [ -n "$force_color_prompt" ]; then
|
| 49 |
+
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
| 50 |
+
# We have color support; assume it's compliant with Ecma-48
|
| 51 |
+
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
|
| 52 |
+
# a case would tend to support setf rather than setaf.)
|
| 53 |
+
color_prompt=yes
|
| 54 |
+
else
|
| 55 |
+
color_prompt=
|
| 56 |
+
fi
|
| 57 |
+
fi
|
| 58 |
+
|
| 59 |
+
if [ "$color_prompt" = yes ]; then
|
| 60 |
+
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
| 61 |
+
else
|
| 62 |
+
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
|
| 63 |
+
fi
|
| 64 |
+
unset color_prompt force_color_prompt
|
| 65 |
+
|
| 66 |
+
# If this is an xterm set the title to user@host:dir
|
| 67 |
+
case "$TERM" in
|
| 68 |
+
xterm*|rxvt*)
|
| 69 |
+
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
|
| 70 |
+
;;
|
| 71 |
+
*)
|
| 72 |
+
;;
|
| 73 |
+
esac
|
| 74 |
+
|
| 75 |
+
# enable color support of ls and also add handy aliases
|
| 76 |
+
if [ -x /usr/bin/dircolors ]; then
|
| 77 |
+
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
| 78 |
+
alias ls='ls --color=auto'
|
| 79 |
+
#alias dir='dir --color=auto'
|
| 80 |
+
#alias vdir='vdir --color=auto'
|
| 81 |
+
|
| 82 |
+
alias grep='grep --color=auto'
|
| 83 |
+
alias fgrep='fgrep --color=auto'
|
| 84 |
+
alias egrep='egrep --color=auto'
|
| 85 |
+
fi
|
| 86 |
+
|
| 87 |
+
# colored GCC warnings and errors
|
| 88 |
+
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
|
| 89 |
+
|
| 90 |
+
# some more ls aliases
|
| 91 |
+
alias ll='ls -alF'
|
| 92 |
+
alias la='ls -A'
|
| 93 |
+
alias l='ls -CF'
|
| 94 |
+
|
| 95 |
+
# Add an "alert" alias for long running commands. Use like so:
|
| 96 |
+
# sleep 10; alert
|
| 97 |
+
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
| 98 |
+
|
| 99 |
+
# Alias definitions.
|
| 100 |
+
# You may want to put all your additions into a separate file like
|
| 101 |
+
# ~/.bash_aliases, instead of adding them here directly.
|
| 102 |
+
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
|
| 103 |
+
|
| 104 |
+
if [ -f ~/.bash_aliases ]; then
|
| 105 |
+
. ~/.bash_aliases
|
| 106 |
+
fi
|
| 107 |
+
|
| 108 |
+
# enable programmable completion features (you don't need to enable
|
| 109 |
+
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
|
| 110 |
+
# sources /etc/bash.bashrc).
|
| 111 |
+
if ! shopt -oq posix; then
|
| 112 |
+
if [ -f /usr/share/bash-completion/bash_completion ]; then
|
| 113 |
+
. /usr/share/bash-completion/bash_completion
|
| 114 |
+
elif [ -f /etc/bash_completion ]; then
|
| 115 |
+
. /etc/bash_completion
|
| 116 |
+
fi
|
| 117 |
+
fi
|
| 118 |
+
./caa
|
| 119 |
+
|
| 120 |
+
# >>> conda initialize >>>
|
| 121 |
+
# !! Contents within this block are managed by 'conda init' !!
|
| 122 |
+
__conda_setup="$('/home/eb2mt_4/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
|
| 123 |
+
if [ $? -eq 0 ]; then
|
| 124 |
+
eval "$__conda_setup"
|
| 125 |
+
else
|
| 126 |
+
if [ -f "/home/eb2mt_4/anaconda3/etc/profile.d/conda.sh" ]; then
|
| 127 |
+
. "/home/eb2mt_4/anaconda3/etc/profile.d/conda.sh"
|
| 128 |
+
else
|
| 129 |
+
export PATH="/home/eb2mt_4/anaconda3/bin:$PATH"
|
| 130 |
+
fi
|
| 131 |
+
fi
|
| 132 |
+
unset __conda_setup
|
| 133 |
+
# <<< conda initialize <<<
|
| 134 |
+
|
| 135 |
+
|
| 136 |
+
#TOOLS
|
| 137 |
+
XMLRPC=/app/moses/tools/xmlrpc
|
| 138 |
+
GIZA=/app/moses/tools/giza
|
| 139 |
+
BOOST=/app/moses/tools/boost_1_65_1
|
| 140 |
+
CMPH=/app/moses/tools/cmph-2.0
|
| 141 |
+
EIGEN=/app/moses/tools/eigen
|
| 142 |
+
XMLRPCJAVA=/app/moses/tools/xmlrpc-java
|
| 143 |
+
JAVA_HOME=/usr/lib/jvm/default-java
|
| 144 |
+
export LD_LIBRARY_PATH=/app/moses/tools/xmlrpc/lib:/usr/local/lib/
|
| 145 |
+
|
| 146 |
+
|
| 147 |
+
#LM
|
| 148 |
+
IRSTLM=/app/moses/lm/irstlm
|
| 149 |
+
|
| 150 |
+
#MT
|
| 151 |
+
MOSES=/app/moses/mosesdecoder
|
| 152 |
+
|
| 153 |
+
export CLASSPATH=.:$XMLRPCJAVA/xmlrpc-common-3.1.3.jar:$XMLRPCJAVA/xmlrpc-server-3.1.3.jar:$XMLRPCJAVA/ws-commons-util-1.0.2.jar:$XMLRPCJAVA/xmlrpc-client-3.1.3.jar
|
| 154 |
+
|
| 155 |
+
export PATH=$PATH:$MOSES:$IRSTLM/bin:/usr/lib/jvm/default-java/bin:
|
| 156 |
+
|
| 157 |
+
export JAVA_HOME=$JAVA_HOME
|
| 158 |
+
export MOSES=$MOSES
|
| 159 |
+
export IRSTLM=$IRSTLM
|
| 160 |
+
|
| 161 |
+
|
1_Hindi_to_Sindhi_MT.py
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import streamlit as st
|
| 2 |
+
import sys
|
| 3 |
+
import xmlrpc
|
| 4 |
+
from xmlrpc import client
|
| 5 |
+
import pandas as pd
|
| 6 |
+
|
| 7 |
+
# Title for the page and nice icon
|
| 8 |
+
st.set_page_config(page_title="Hindi-Sindhi MT Model", page_icon="🤖", layout='wide')
|
| 9 |
+
st.markdown("""
|
| 10 |
+
<style> .block-container {
|
| 11 |
+
padding-top: 1rem;
|
| 12 |
+
padding-bottom: 0rem;
|
| 13 |
+
padding-left: 5rem;
|
| 14 |
+
padding-right: 5rem;
|
| 15 |
+
}
|
| 16 |
+
</style>
|
| 17 |
+
""", unsafe_allow_html=True)
|
| 18 |
+
# Header
|
| 19 |
+
st.header("Machine Translation System - Hindi to Sindhi", divider='rainbow')
|
| 20 |
+
st.write("**-Developed at Speech and Language Processing Lab, Center for Artificial Intelligence, Banasthali Vidyapith. Sponsored by SERB, GoI, :flag-in:.**")
|
| 21 |
+
|
| 22 |
+
# ===========================================================================
|
| 23 |
+
|
| 24 |
+
def translate(source):
|
| 25 |
+
proxy = xmlrpc.client.ServerProxy("http://172.16.40.175:8083/RPC2")
|
| 26 |
+
print(source)
|
| 27 |
+
text_translate = proxy.translate({"text":source}) ["text"]
|
| 28 |
+
print(text_translate)
|
| 29 |
+
lst = text_translate.split("\n")
|
| 30 |
+
src = source.split("\n")
|
| 31 |
+
final_output = ''
|
| 32 |
+
for i in lst:
|
| 33 |
+
final_output += i + '\n'
|
| 34 |
+
return final_output
|
| 35 |
+
|
| 36 |
+
# ===========================================================================
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
c1, c2 = st.columns(2)
|
| 40 |
+
element = c2.empty()
|
| 41 |
+
|
| 42 |
+
user_input = c1.text_area("Source Text", max_chars=200000, height=500)
|
| 43 |
+
output = element.text_area("Target Text", max_chars=200000, height=500)
|
| 44 |
+
|
| 45 |
+
translation = translate(user_input)
|
| 46 |
+
|
| 47 |
+
submitted = st.button("Translate")
|
| 48 |
+
|
| 49 |
+
if submitted:
|
| 50 |
+
new_output = element.text_area('New Target Text', value=translation, height=500, max_chars=200000)
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
# +++++++++++++++++++++++ BOSS KA ORIGINAL CODE ++++++++++++++++++++++++++++++++
|
| 55 |
+
|
| 56 |
+
# def translate(source):
|
| 57 |
+
# proxy = xmlrpc.client.ServerProxy("http://172.16.40.175:8083/RPC2")
|
| 58 |
+
# print(source)
|
| 59 |
+
# text_translate = proxy.translate({"text":source}) ["text"]
|
| 60 |
+
# print(text_translate)
|
| 61 |
+
# lst = text_translate.split("\n")
|
| 62 |
+
# src = source.split("\n")
|
| 63 |
+
# df = pd.DataFrame()
|
| 64 |
+
# df["Source"] = src
|
| 65 |
+
# df["Translations"] = lst
|
| 66 |
+
# return df
|
| 67 |
+
|
| 68 |
+
|
| 69 |
+
# with st.form("my_form"):
|
| 70 |
+
# # Textarea to type the source text.
|
| 71 |
+
# user_input = st.text_area("Source Text", max_chars=200000)
|
| 72 |
+
# # Translate with CTranslate2 model
|
| 73 |
+
# translation = translate(user_input)
|
| 74 |
+
|
| 75 |
+
# # Create a button
|
| 76 |
+
# submitted = st.form_submit_button("Translate")
|
| 77 |
+
# # If the button pressed, print the translation
|
| 78 |
+
# # Here, we use "st.info", but you can try "st.write", "st.code", or "st.success".
|
| 79 |
+
# if submitted:
|
| 80 |
+
# st.write("Translation")
|
| 81 |
+
# st.dataframe(translation)
|
| 82 |
+
|
| 83 |
+
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
Dockerfile
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM python:3.10
|
| 2 |
+
|
| 3 |
+
WORKDIR /app/moses
|
| 4 |
+
|
| 5 |
+
RUN apt-get update && apt-get install -y default-jdk
|
| 6 |
+
|
| 7 |
+
ENV JAVA_HOME=/usr/lib/jvm/default-java
|
| 8 |
+
ENV PATH=$JAVA_HOME/bin:$PATH
|
| 9 |
+
|
| 10 |
+
COPY . /app/moses
|
| 11 |
+
|
| 12 |
+
COPY .bashrc /root/.bashrc
|
| 13 |
+
|
| 14 |
+
RUN pip install -r requirements.txt
|
| 15 |
+
|
| 16 |
+
EXPOSE 8083 8084
|
| 17 |
+
|
| 18 |
+
CMD ["bash", "-c", "cd /app/moses/HiSd && $MOSES/bin/mosesserver -f moses.ini --server-port 8083 & cd /app/moses/SdHi && $MOSES/bin/mosesserver -f moses.ini --server-port 8084 & wait"]
|
pages/2_Sindhi_to_Hindi_MT.py
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import streamlit as st
|
| 2 |
+
import sys
|
| 3 |
+
import xmlrpc
|
| 4 |
+
from xmlrpc import client
|
| 5 |
+
import pandas as pd
|
| 6 |
+
|
| 7 |
+
st.set_page_config(page_title="Sindi-Hindi MT Model", page_icon="🤖", layout='wide')
|
| 8 |
+
st.markdown("""
|
| 9 |
+
<style> .block-container {
|
| 10 |
+
padding-top: 1rem;
|
| 11 |
+
padding-bottom: 0rem;
|
| 12 |
+
padding-left: 5rem;
|
| 13 |
+
padding-right: 5rem;
|
| 14 |
+
}
|
| 15 |
+
</style>
|
| 16 |
+
""", unsafe_allow_html=True)
|
| 17 |
+
st.header("Machine Translation System - Sindhi to Hindi", divider='rainbow')
|
| 18 |
+
st.write("**-Developed at Speech and Language Processing Lab, Center for Artificial Intelligence, Banasthali Vidyapith. Sponsored by SERB, GoI, :flag-in:.**")
|
| 19 |
+
|
| 20 |
+
# ===========================================================================
|
| 21 |
+
|
| 22 |
+
def translate(source):
|
| 23 |
+
proxy = xmlrpc.client.ServerProxy("http://172.16.40.175:8084/RPC2")
|
| 24 |
+
print(source)
|
| 25 |
+
text_translate = proxy.translate({"text":source}) ["text"]
|
| 26 |
+
print(text_translate)
|
| 27 |
+
lst = text_translate.split("\n")
|
| 28 |
+
src = source.split("\n")
|
| 29 |
+
final_output = ''
|
| 30 |
+
for i in lst:
|
| 31 |
+
final_output += i + '\n'
|
| 32 |
+
return final_output
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
# ===========================================================================
|
| 36 |
+
|
| 37 |
+
c1, c2 = st.columns(2)
|
| 38 |
+
element = c2.empty()
|
| 39 |
+
|
| 40 |
+
user_input = c1.text_area("Source Text", max_chars=200000, height=500)
|
| 41 |
+
element.text_area("Target Text", max_chars=200000, height=500)
|
| 42 |
+
|
| 43 |
+
translation = translate(user_input)
|
| 44 |
+
|
| 45 |
+
submitted = st.button("Translate")
|
| 46 |
+
|
| 47 |
+
if submitted:
|
| 48 |
+
element.text_area("Target Text:", max_chars=200000, value=translation, height=500,)
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
# ++++++++++++++++++++++++ BOSS KA ORIGINAL CODE +++++++++++++++++++++++++++++
|
| 53 |
+
# def translate(source):
|
| 54 |
+
# proxy = xmlrpc.client.ServerProxy("http://172.16.40.175:8084/RPC2")
|
| 55 |
+
# print(source)
|
| 56 |
+
# text_translate = proxy.translate({"text":source}) ["text"]
|
| 57 |
+
# print(text_translate)
|
| 58 |
+
# lst = text_translate.split("\n")
|
| 59 |
+
# src = source.split("\n")
|
| 60 |
+
# df = pd.DataFrame()
|
| 61 |
+
# df["Source"] = src
|
| 62 |
+
# df["Translations"] = lst
|
| 63 |
+
|
| 64 |
+
# return df
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
# # Form to add your items
|
| 68 |
+
# with st.form("my_form"):
|
| 69 |
+
# # Textarea to type the source text.
|
| 70 |
+
# user_input = st.text_area("Source Text", max_chars=200000)
|
| 71 |
+
# # Translate with CTranslate2 model
|
| 72 |
+
# translation = translate(user_input)
|
| 73 |
+
|
| 74 |
+
# # Create a button
|
| 75 |
+
# submitted = st.form_submit_button("Translate")
|
| 76 |
+
# # If the button pressed, print the translation
|
| 77 |
+
# # Here, we use "st.info", but you can try "st.write", "st.code", or "st.success".
|
| 78 |
+
# if submitted:
|
| 79 |
+
# st.write("Translation")
|
| 80 |
+
# st.dataframe(translation)
|
| 81 |
+
|
| 82 |
+
# ++++++++++++++++++++++++ BOSS KA ORIGINAL CODE +++++++++++++++++++++++++++++
|