Traduire et lire

Durée estimée: 15 minutes

mnActivité/applicationNotions abordéessupports
15 Hello world 2 (traduction)
quand clic sur le bouton :
  • traduire le texte en anglais
  • puis afficher la traduction
  • et la lire à haute voix
Design
  • media : traducteur /translator
  • Disposition : arrangement horizontal
  • Interface : 2° zone de texte
Blocs/programmation
  • initialisation variable 'langueOut'
  • quand clic sur bouton : appeler la traduction avec la langue et le texte
  • quand la traduction revient : afficher le texte traduit et appeler la lecture.
Notions abordées
  • variables (initialisation, lecture, écriture)
  • chaines de caractères
  • propriétés d‘un composant et leur modification par programme

Ce que vous allez faire :

helloV2/assets/img/DesignHelloV2.png

Dans cette 2° version de l'application, le smartphone va traduire le texte affiché, avant de le lire. Pour ça on ajoute un composant de traduction de la catégorie des Media.
On reprend ensuite la lecture du texte traduit, en veillant à préciser que la langue de celui qui parle est bien celle dans laquelle on a traduit.

Design :

helloV2/assets/img/hello2DesignComponents.png
  • ajouter un composant de traduction :
    glisser le composant "Translator" de la catégorie "media" sur l'écran (ce composant apparait en dessous),
    nota : il y a une erreur de traduction en français dans le nom d'une propriété, lire "hauteur" au lieu de"tangage"
  • changer le nom et le texte du bouton à "traduire et lire",
  • ajouter une 2° zone de texte "Zone_de_texte_Out"
  • renommer la 1° zone de texte "Zone_de_texte_In"
  • créer un arrangement horizontal en pleine largeur (disposition)
  • placer les 2 zones de texte dans l'arrangement horizontal, pour les afficher cote à cote,

Composants sélectionnés dans le design
(les valeurs modifiées ou ajoutées sont en bleu)
type catégorie Nom rôle propriété valeur
Screen1 racine alignt horiz
alignt vertical
couleur fond
orient.écran
titre visible
centré
centré
rose
portrait
Non
Arrangement horizontal Disposition Arrangt_horiz1 couleur fond
largeur
aucun
remplir parent
zone de texte interface utilisateur Zone_de_texte_In texte en entrée couleur fond
taille police
largeur
alignt texte
texte
transparent
24
remplir parent
centre
Bonjour le monde
zone de texte interface utilisateur Zone_de_texte_Out texte traduit couleur fond
taille police
largeur
alignt texte
texte
transparent
24
remplir parent
centre
Bonjour le monde
bouton interface utilisateur BoutonTraduireEtLire lecture texte couleur fond
gras
taille police
texte
alignt texte
gris clair
oui
24
traduire et lire
centre
notificateur interface utilisateur Notificateur1 afficher messages
texte a parole media Texte_à_parole1 lire texte
translator media Translator1 traduire
helloV2/assets/img/helloV2design.png

Codage (blocs)

On passe ensuite au codage par blocs en cliquant en haut à droite sur le bouton "blocs".
On aura deux évènements à prendre en compte :
* le premier reste le même "quand l'utilisateur clique sur le bouton",
* le deuxième correspond à la réception de la traduction demandée.
En effet, la procédure qui traduit, utilise un service Web et ne renvoie pas le résultat immédiatement. Donc on n'attend pas la réponse dans ce même script.
L'arrivée de la traduction donne lieu à un nouvel évènement "quand Traduction reçue" et un script séparé pour exploiter cette traduction. C'est ce qu'on appelle une procédure "asynchrone" la réponse est traitée dans un 2° script.
  • Commencer par déclarer comme variable, la langue dans laquelle on traduit : "langue_out",
    on initialise cette variable, avec la valeur "en"   helloV2/assets/img/BlocsLangueOut.png
    et on l'utilisera dans le programme avec un bloc de lecture   helloV2/assets/img/langueOut.png

  • Notez cette première utilisation d'une variable :
    Plutôt que d'utiliser la chaine de caractères "en" dans la suite du programme, on définit la variable langue_Out en précisant la valeur qu'elle porte :"en". Ensuite on pourra utiliser le bloc de lecture de cette variable, en lieu et place de la chaine de caractères. Il y a de gros avantages dans ce remplacement : on peut modifier la langue par programme et le faire à un seul endroit.

  • dans le script de l'évènement "quand BoutonTraduireLire.clic"
    • en lieu et place de l'appel à la procédure "Texte_a_parole.parler"
    • appeler "Translator1.demander traduction", avec "Zone_de_texte_In.texte" en paramètre.
      helloV2/assets/img/BlocsBoutonClic.png
  • ajouter lévènement "quand Translator1.traduction.reçue" et placer dans cet évènement
      helloV2/assets/img/BlocsTraductionRecue.png
    • un bloc qui met à jour "Zone_de_texte_out.Texte" avec le résultat (texte traduit)
    • et avant d'appeler à la lecture du texte traduit, il ne faut pas oublier de préciser la "langue" qui est une propriété du composant "Texte_a_parole1". Ce n'est plus la langue par défaut (le français), mais celle définie dans la variable "langue_out".
    • enfin, reprendre l'appel précédent à la fonction de lecture "Texte_a_paorle.parler", mais avec le texte "Zone_de_texte_out.Texte"

helloV2/assets/img/helloV2blocs.png

Transfert de l'application au smartphone :

helloV2/assets/img/helloV2Screenshot.png Transférez le résultat au smartphone via un flashcode, via l'onglet "construire" (ou "connecte"), puis testez en changeant le texte en entrée :
le téléphone traduit, affiche et lit le texte affiché, quand vous cliquez sur le bouton,

Envoyer un commentaire