Source: Scratch Wiki en français


Créer des traductions sans utiliser l'extension traduire


Ce tutoriel permet de réaliser des traductions sans utiliser un bloc de l'extension traduire, permettant à votre projet de fonctionner, même sans connexion à Internet.

Idée

Info
 Info :
Il est recommandé de lire les bases la page Faire un code de sauvegarde (tutoriel) avant de s'attaquer à ce tutoriel.

L'extension traduire est très utile, mais les traductions ne sont pas fiables et nécessitent une connexion réseau. L'idée ce tutoriel, c'est de permettre à un projet de fonctionner sans connexion et avec des traductions parfaites.

Le fonctionnement est simple : nous allons créer un code de sauvegarde permettant de « sauvegarder un mot ou expression dans plusieurs langues ». Tous les différents codes seront stockés dans une liste, et pourront être appelés avec une deuxième liste identifiante. C'est, à la base, le principe d'une variable.

De plus, en suivant cette méthode, l'utilisateur est libre de rajouter ses propres traductions, d'en modifier et d'en supprimer.

Réalisation

Matériel nécessaire

Variables

  • ( | T | IDX::variables)
  • ( | T | Valeur 1::variables)
  • ( | T | Valeur 2::variables)
  • ( | T | Peut sortir::variables)

Listes

  • (| T | ID::list)
  • (| T | Codes::list)
  • (| Feuille | Langues | Langue::list)
  • (| Feuille | Langues | Raccourci::list)

Sprite

  • Un seul sprite est nécessaire.
Attention
 Attention :
Si vous utilisez plusieurs sprites, les blocs personnalisés devront être ajoutés à chaque sprite.

Mise en place

Lancement du projet

Créez ce bloc personnalisé, sans rafraîchissement d'écran :

définir | Lancement |
Créer une feuille de « langues »

Créez ce bloc personnalisé, sans rafraîchissement d'écran :

définir | Feuille | Langues
supprimer tous les éléments de la liste (| Feuille | Langues | Langue v)
supprimer tous les éléments de la liste (| Feuille | Langues | Raccourci v)
ajouter [Français] à [| Feuille | Langues | Langue v]::list
ajouter [fr] à [| Feuille | Langues | Raccourci v]::list
ajouter [English] à [| Feuille | Langues | Langue v]::list
ajouter [en] à [| Feuille | Langues | Raccourci v]::list
Les langues suivantes sont facultatives::#bfbfbf // pas un bloc, vous l'aurez deviné
ajouter [Deutsch] à [| Feuille | Langues | Langue v]::list
ajouter [de] à [| Feuille | Langues | Raccourci v]::list
ajouter [Italiano] à [| Feuille | Langues | Langue v]::list
ajouter [it] à [| Feuille | Langues | Raccourci v]::list
…
Bloc de lancement

Ajoutez le nouveau bloc au bloc de lancement de votre projet.

définir | Lancement |
| Feuille | Langues::custom

Code de sauvegarde

Le « code de sauvegarde » utilisé par le wiki est le suivant :

{langue ou raccourci}mot ou expression {autre langue ou raccourci}même mot ou expression dans autre langue {…}…

Ainsi, on peut obtenir, par exemple :

{en}hi {fr}salut {de}hallo

Maintenant, le but est de pouvoir extraire ces données du code de sauvegarde.

Lire un code de sauvegarde et en extraire une langue

Créez ce bloc personnalisé, sans rafraîchissement d'écran :

définir | Traduction | Obtenir (ID) en (LANGUE)
si <non <[T | ID v] contient (ID)>> alors
mettre [| T | Valeur 1 v] à [Erreur]
mettre [| T | Valeur 2 v] à [Erreur : ID pas trouvée]
stop [ce script v]
fin
mettre [| T | IDX v] à [1]
répéter jusqu'à ce que <(| T | IDX) > (longueur de (élément (position de (ID) dans [T | ID v]) de [T | Codes v]))>
si <(lettre (| T | IDX) de (élément (position de (ID) dans [T | ID v]) de [T | Codes v])) = [{] > alors
si <(| T | Valeur 1) = (LANGUE)> alors
stop [ce script v] // si le script s'arrête là, c'est bon signe !
fin

mettre [| T | Valeur 1 v] à []
mettre [| T | Valeur 2 v] à []
répéter jusqu'à ce que <<(lettre (| T | IDX) de (élément (position de (ID) dans [T | ID v]) de [T | Codes v])) = [}]> ou <(| T | IDX) > (longueur de (élément (position de (ID) dans [T | ID v]) de [T | Codes v]))>>
mettre [| T | Valeur 1 v] à (regrouper (| T | Valeur 1) et (lettre (| T | IDX) de (élément (position de (ID) dans [T | ID v]) de [T | Codes v])))
ajouter [1] à [| T | IDX v]
fin
si <[| Feuille | Langues | Raccourci v] contient (| T | Valeur 1)> alors
mettre [| T | Valeur 1 v] à (élément (position de (| T | Valeur 1) dans [| Feuille | Langues | Raccourci v]) de [| Feuille | Langues | Langue v])
fin
ajouter [1] à [| T | IDX v]

fin
mettre [| T | Valeur 2 v] à (regrouper (| T | Valeur 2) et (lettre (| T | IDX) de (élément (position de (ID) dans [T | ID v]) de [T | Codes v])))
ajouter [1] à [| T | IDX v]
fin
si <non <(| T | Valeur 1) = (LANGUE)>> alors
mettre [| T | Valeur 1 v] à [Erreur]
mettre [| T | Valeur 2 v] à [Erreur : Langue pas trouvée]
stop [ce script v]
fin

Finitions

Info
 Info :
Le mot / expression voulu(e) est placé(e) dans la variable (| T | Valeur 2).
Info
 Info :
La langue est accessible dans la variable (| T | Valeur 1).

Exemples de code

| Traduction | Obtenir [word.bye] en [français]::custom
dire (| T | Valeur 2) // le mot - expression voulu est stocké dans cette variable
| Traduction | Obtenir [expression.hello world] en [français]::custom
dire (| T | Valeur 2) // le mot - expression voulu est stocké dans cette variable

Ajouter des mots et expressions

Revoyons le bloc de départ.

définir | Lancement |
| Feuille | Langues::custom

Créons ce bloc personnalisé, sans rafraîchissement d'écran :

définir | Feuille | Mots & Expressions

Ajoutons-le au bloc de départ :

définir | Lancement |
| Feuille | Langues::custom
| Feuille | Mots & Expressions::custom

Puis, ce bloc personnalisé, sans rafraîchissement d'écran :

définir | Traduction | Créer sauvegarde (ID) (CODE)
ajouter (ID) à [| T | ID v]::list
ajouter (CODE) à [| T | Codes v]::list
Info
 Info :
Vous pouvez désormais créer des mots et expressions avec le bloc | Traduction | Créer sauvegarde [] []::custom. L'idéal est de les ajouter dans | Feuille | Mots & Expressions::custom :

définir | Feuille | Mots & Expressions
Créer sauvegarde [word.bye] [{en}good bye{fr}au revoir]::custom
Créer sauvegarde [expression.hello word] [{en}hello, world{fr}salut, monde]::custom

Ajouter de nouvelles langues

Il vous suffit, dans le bloc | Feuille | Langues::custom, de respecter ce modèle pour pouvoir ajouter des nouvelles langues :

ajouter [une langue] à [| Feuille | Langues | Langue v]::list
ajouter [son raccourci] à [| Feuille | Langues | Raccourci v]::list
Info
 Info :
Notez que l'utilisation de raccourcis n'est pas nécessaire, ces derniers sont justes utilisés afin de rendre les codes de sauvegarde plus petits.

Créer un bouton « langue »

Il ne vous reste plus qu'à créer un costume de bouton dans votre sprite et de le montrer quand le voulez.

Ensuite, insérez ce code dans votre sprite :

quand ce sprite est cliqué
| Traduction | Obtenir [expression.new language] en (ma langue)::custom // nécessite d'avoir créé l'expression avec l'ID "expression.new language"
demander (regrouper (| T | Valeur 2) et [ ?]) et attendre
mettre [ma langue v] à (réponse)
Idée
 Idée :
Ce fonctionnement permet de créer des langues personnelles ! Et pourquoi pas une langue Scratch Cat ?
Idée
 Idée :
Vous pouvez crée une liste des langues valides pour éviter ce fonctionnement.

Jouer avec la casse des mots

└─ Article principal : Majuscules et minuscules (tutoriel)

Il est possible de faire que les traductions (qui sont actuellement en minuscules) soient, par exemple, titrées (« un titre exemplaire » devient « Un Titre Exemplaire »), en lisant cette page du wiki.

Voir aussi

Cet article fait partie de la catégorie des tutos
Tous les articles de cette catégorie :