Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
24 avril 2013 3 24 /04 /avril /2013 17:33

tradef.pngQui a dit qu'informatique et plaisir des lettres ne faisaient pas bon ménage ? Je vais vous livrer trois contre exemples.
Il s'agit de scripts réalisés par un usager d'ubuntu.fr et par votre serviteur.
Le premier conçu par Ph3nix_ vous permet de trouver les synonymes d'un mot, par exemple tapez dans le terminal : syno étoile
et vous obtiendrez :
synonyme (27) :
acteur, artiste, as, astérisque, astre, ballerine, carrefour, chance, crédit, croisée, croisement, danseuse, décoration, destin, destinée, échangeur, fortune, hasard, patte-d'oie, pelote, planète, puissance, rond-point, sort, star, trèfle, vedette            


Classement synonyme :
astre, carrefour, destin, destinée, rond-point, star, vedette, acteur, artiste, as,

Pour de plus amples explications rendez-vous au lien suivant :

http://forum.ubuntu-fr.org/viewtopic.php?id=1183731
Le second est un traducteur multilingue inspiré de Ph3nix_ que j'ai "personnalisé à outrance" et le code n'est pas des plus optimisés.
Dans un premier temps copiez le code ci-dessous dans un fichier que vous pourriez appeller trad.sh et le placer dans un répertoire bien identifiable comme /home/utilisateur/scripts/trad/

#!/bin/bash
RAZ="\e[m"
JAUNE="\033[1;33m"
BLEUCLAIR="\033[1;36m"
ROUGE="\033[1;31m"
FUSHIA="\033[1;35m"
VERT="\033[1;32m"    #GREEN
BLANC="\033[1;37m"    #WHITE

echo -e "${BLEUCLAIR}================================================================================${RAZ}"
wget -q -U "Mozilla/5.0" "http://traduction.sensagent.com/$1/$2-$3/"
html2text index.html > trad.txt
mot=$1
chaine1="\*\*\*\*\*\ "
chaine="$chaine1$mot\ ($1"
chaine2="$mot\_("
# le /f/ aurait pu être /h/ ou autre en attendant vérif
sed -n -e "/^\*\*\*\*\*/,/f/p"  trad.txt > trad1.txt
sed -n -e "/^[^*/,/\]/p" trad1.txt > trad2.txt

#on remplace les _ par un espace
chaine_a=$(sed -n '1p' trad2.txt)
chaine_a=`echo $chaine_a | sed "s/[_?]/ /g"`
chaine_b=$(sed -n '2p' trad2.txt)
chaine_b=`echo $chaine_b | sed "s/[_?]/ /g"`
chaine_c=$(sed -n '3p' trad2.txt)
chaine_c=`echo $chaine_c| sed "s/[_?]/ /g"`
car_control=${chaine_b:0:1}
car_control_chaine_c=${chaine_c:5:1}

if [ "$car_control" == "=" ] || [ "$chaine_b" == "" ]
then
echo -e "${VERT}Ce mot n'a pu être extrait ou n'existe pas ${RAZ}"
    #on regarde si mot inexistant
else
#on vérifie si doublon entre b et c
if [ "$chaine_b" == "$chaine_c" ]
then
chaine_c=""
fi
#on vérifie doublon entre chaine a et chaine b"
if [ "$chaine_a" == "$chaine_b" ]
then
chaine_b=""
chaine_c=""
fi

#on vérifie que la cahine c ne retourne une "francophonie --nom de pays Italie (n.)
chaine_franco="$mot (n.)"
if [ "$chaine_c" == "$chaine_franco" ]
then
chaine_b=""
chaine_c=""
fi

#on regargde si chaine_c commence par "↗" ou "↘"  "[" ou contient "voir aussi" ou vide
car_control=${chaine_c:0:1}
chaine_c="$chaine_c"
if [ "$car_control" == "↗" ]|| [ "$car_control" == "↘" ]|| [ "$chaine_c" == "voir aussi" ]|| [ "$car_control" == "[" ]|| [ "$chaine_c" == "dictionnaire analogique" ]|| [ "$car_control" == "" ]|| [ "$car_control" == "≠" ]|| [ "$car_control" == "[" ]|| [ "$car_control_chaine_c" == "=" ]
then
chaine_c=""

#sinon chaine c peut être intéressante et o ajoute un\n à la FIN de chaine b, on marque cette chaine avec un flag
else
flag="vrai"
fi

#on regarde si la chaine_b est "inintéressante", si oui on reset chaine à chaine_a
car_control=${chaine_b:0:1}
if [ "$chaine_b" == "voir aussi" ]|| [ "$car_control" == "↘" ]||[ "$car_control" == "↗" ]|| [ "$chaine_b" == "dictionnaire analogique" ]|| [ "$car_control" == "≠" ]|| [ "$car_control" == "[" ]|| [ "$chaine_b" == "" ]
#echo "             >$chaine_b<             "
then
chaine=$chaine_a
chaine_b=""
chaine_c=""


#si chaine b intéressante alors on ajoute un anti slash n
else
chaine_b="\n$chaine_b"
fi
if [ "$flag" == "vrai" ]
then
chaine_b="$chaine_b\n"
fi
echo -e "${BLEUCLAIR}${mot} : ${JAUNE}${chaine_a}${chaine_b}${chaine_c}.${RAZ}"
fi
echo -e "${BLEUCLAIR}================================================================================${RAZ}"
echo
rm -f index.html
rm trad*.txt
#------------------- fin du script trad.sh -------------------------

Dans une deuxième étape, on va créer un lien symbolique qui rendra ce script accessible depuis n'importe quel répertoire où le terminal est ouvert. Pour ce faire on affiche les fichiers cachés du répertoire /home. Ouvrez le fichier .bashrc (attention bien mettre le ".") et ajouter la ligne suivante : alias trad="bash /home/utilisateur/scripts/trad/trad.sh" [voir Note 1.]
Pour que l'alias prenne effet, déconnectez-vous puis reconnectez vous. Dans le terminal entrez : trad amour fr en et vous obtiendrez :
================================================================================
amour : love, lovemaking, poppet, lamb, darling, flame, baby, pet, sweetie, beloved,
love
love, enjoy.
================================================================================
Les traductions proviennent du site http://traduction.sensagent.com, utile pour connaitre les codes langues. Ils sont visibles dans la barre d'adresse.
Petite astuce tapez trad amour fr fr :-) Cela fonctionne aussi avec le code langue en, trad love en en. A tester pour les autres langues.

[Note 1] Il est plus aisé d'avoir à taper un lien symbolique que de faire dans un terminal : bash /home/utilisateur/scripts/trad/trad.sh, surtout si l'on s'en sert régulièrement.
Et pour finir, un script qui vous traduit en trois clic+entrée de l'anglais vers le français. Il s'agit quasiment du même script que précédemment mais avec l'anglais comme langue de départ et le français comme langue d'arrivée. Ainsi au lieu de taper trad mot en fr, on collera juste le mot à traduire dans le terminal suivi de "Entrée" Pour ce faire vous allez créer une entrée via alacarte à laquelle vous associerez l'icône de votre choix (sudo apt-get install alacarte).
D'abord copiez-collez le script suivant et enregistrez-le sous tradef.sh (par exemple).
#!/bin/bash
#rm index.html
RAZ="\e[m"
JAUNE="\033[1;33m"
BLEUCLAIR="\033[1;36m"
ROUGE="\033[1;31m"
FUSHIA="\033[1;35m"
VERT="\033[1;32m"    #GREEN

function trad {
echo -e "${BLEUCLAIR}================================================================================${RAZ}"
wget -q -U "Mozilla/5.0" "http://traduction.sensagent.com/$mot/en-fr/"
html2text index.html > trad.txt

#mot=$1 reliquat e la commande de trad.sh adaptation pour trad en vers fr
chaine1="\*\*\*\*\*\ "
chaine1="$chaine1$mot\ ($mot"
chaine2="$mot\_("

# le /f/ aurait pu être /h/ ou autre en attendant verif
sed -n -e "/^\*\*\*\*\*/,/f/p"  trad.txt > trad1.txt
sed -n -e "/^[^*/,/\]/p" trad1.txt > trad2.txt

#on rempkace les _ par un espace
chaine_a=$(sed -n '1p' trad2.txt)
chaine_a=`echo $chaine_a | sed "s/[_?]/ /g"`
chaine_b=$(sed -n '2p' trad2.txt)
chaine_b=`echo $chaine_b | sed "s/[_?]/ /g"`
chaine_c=$(sed -n '3p' trad2.txt)
chaine_c=`echo $chaine_c| sed "s/[_?]/ /g"`
car_control=${chaine_b:0:1}
car_control_chaine_c=${chaine_c:5:1}

if [ "$car_control" == "=" ] || [ "$chaine_b" == "" ]
then

echo -e "${VERT}Ce mot n'a pu être extrait ou n'existe pas ${RAZ}"
    #on regarde si mot inexistant
else
#on vérifie si doublon entre b et c
if [ "$chaine_b" == "$chaine_c" ]
then
chaine_c=""
fi
#on vérifie doublon entre chaine a et chaine b"
if [ "$chaine_a" == "$chaine_b" ]
then
chaine_b=""
chaine_c=""
fi


#on vérifie que la cahine c ne retourne une "francophonie --nom de pays Italie (n.)
chaine_franco="$mot (n.)"
if [ "$chaine_c" == "$chaine_franco" ]
then
chaine_b=""
chaine_c=""
fi



#on regargde si chaine_c commence par "↗" ou "↘"  "[" ou contient "voir aussi" ou vide
car_control=${chaine_c:0:1}
chaine_c="$chaine_c"

if [ "$car_control" == "↗" ]|| [ "$car_control" == "↘" ]|| [ "$chaine_c" == "voir aussi" ]|| [ "$car_control" == "[" ]|| [ "$chaine_c" == "dictionnaire analogique" ]|| [ "$car_control" == "" ]|| [ "$car_control" == "≠" ]|| [ "$car_control" == "[" ]|| [ "$car_control_chaine_c" == "=" ]
then
chaine_c=""

#sinon chaine c peut être intéressante et o ajoute un\n à la FIN de chaine b, on marque cette chaine avec un flag
else
flag="vrai"
#chaine_b="$chaine_b"

fi

#on regarde si la chaine_b est "inintéressante", si oui on reset chaine à chaine_a
car_control=${chaine_b:0:1}
if [ "$chaine_b" == "voir aussi" ]|| [ "$car_control" == "↘" ]||[ "$car_control" == "↗" ]|| [ "$chaine_b" == "dictionnaire analogique" ]|| [ "$car_control" == "≠" ]|| [ "$car_control" == "[" ]|| [ "$chaine_b" == "" ]

then
chaine=$chaine_a
chaine_b=""
chaine_c=""


#si chaine b intéressante alors on ajoute un anti slash n
else
chaine_b="\n$chaine_b"
fi
if [ "$flag" == "vrai" ]
then
chaine_b="$chaine_b\n"
fi
echo -e "${BLEUCLAIR}${mot} : ${JAUNE}${chaine_a}${chaine_b}${chaine_c}.${RAZ}"
fi
echo -e "${BLEUCLAIR}================================================================================${RAZ}"
echo

}
echo -e "${VERT}TRADUCTEUR ANGLO-FRANÇAIS${RAZ}"
#on appelle 1000 fois la fonction !!!
for i in `seq 1 1000`;
 do
  read -p ">>> entrez le mot : " mot
trad $mot
rm -f index.html*
rm trad*.txt
done
#------------------ fin du script --------------------------
Maintenant, lancez alacarte. Ajoutez une entrée dans la catégorie de votre choix (par exemple "Autre"). Dans la rubrique "Nom" entrez (toujours par exemple) Traducteur Anglais-Français et dans la rubrique commande renseignez : gnome-terminal -e  "bash /home/utilisateur/scripts/trad/tradef.sh"
Associez-lui l'icône de votre choix. Fermez le tout. Dans le dash de unity tapez Traducteur (sans préciser la suite). L'icône associée au script apparaît.
Glissez-la maintenant dans la barre des lanceurs. Cliquez sur celle-ci, un terminal s'ouvre et attend le mot anglais à traduire. Une façon très pratique de l'utiliser est de double-cliquer gauche sur un mot d'un document en anglais et cliquer-mollette dans le terminal suivi de "entrée".
Utilité ? Futilité ? A vous de voir...


Partager cet article

Repost 0
Published by neo-joko - dans scripts
commenter cet article

commentaires

Présentation

  • : Le blog de neo-joko - linux
  • Le blog de neo-joko - linux
  • : blog consacré au système d'exploitation linux (essentiellement ubuntu et l'environnement du bureau gnome/unity)
  • Contact

Recherche