Gambas France BETA


Pas de compte ? Incription

probleme avec l'option traduction GB3...

Ce sujet est résolu.

12
AuteurMessages
spheris#1 Posté le 11/5/2014 à 22:01:39
Bonjour,
dans un de mes projets en GB3, j'ai choisi de traduire mon appli en Anglais.
Dans le menu je choisi Traduire puis choisi anglais commun.
Je traduis toutes mes chaines de caracteres et cree le fichier EN.po .
Voulant l'essayer, je n'arrive pas a utiliser la langue Anglaise par defaut dans mon linux Francisé.
Quelqu'un a deja eu le probleme ?

voici le message d'erreur :

Impossible de lire le fichier de traduction pour la langue « Anglais (commun) »

File already exists

/home/ordinateur/monprojet/.lang/en.po:467:67: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:467:71: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:112: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:154: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:188: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:226: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:257: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:261: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:287: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:312: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:340: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:375: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:379: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:422: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:457: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:486: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:490: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:520: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:524: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:531: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:535: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:567: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:593: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:630: Séquence de contrôle invalide
/home/ordinateur/monprojet/.lang/en.po:675:642: Séquence de contrôle invalide
msgmerge: 25 erreurs fatales trouvées

Merci pour vos réponses.
;)
didier18#2 Posté le 12/5/2014 à 15:23:36
Bonjour spheris
Je viens d'essayer une traduction et ça fonctionne.
Voici ce que j'ai fait :
Projet/Traduire...
choisir la langue de ton choix et touts les fichiers (ainsi toutes les chaînes pourront être traduites)
Revenir sur le bouton de traduction (en haut à gauche sous l'onglet Traduction) et choisir Exporter.
Gambas va exporter un fichier texte type monprojet-en-0.0.1.po (monprojet-Anglais-version0.0.1.po)
Ensuite tu peux fermer Gambas et travailler directement sur ta traduction en remplissant les chaînes idoines (moi je préfère fermer les applis dont je ne me sert pas car je dispose de peu de mémoire sur mon PC).
Ouvrir ton fichier texte avec Gedit par exemple puis remplir ta traduction...
Par l'exemple extrait ci-dessous...

#: FMain.class:1961
msgid "Les alignements augmentent aussi le nombre de mouvements."
msgstr "The alignments also increase the number of movements."

#: FMain.class:1962
msgid "3 images aucun mouvement"
msgstr ""

Tu peux voir ou mettre la traduction (entre les guillemets après msgstr "" (Reverso fonctionne pas mal avec le copier/coller).
Une fois que la traduction est terminée, lorsque j'ouvre mon projet, je vais dans Projet/Propriété/Options Langage par défaut Anglais commun puis OK.
Ensuite touche 'F5' et mon prog apparaît en Anglais.
Voilà si ça peu te servir...
Bonne continuation.

spheris#3 Posté le 20/5/2014 à 21:05:36
J'ai fait exactement ce que tu dis et j'ai enregistré et exporté mon fichier.
voici mon message d'erreur :

didier18#4 Posté le 21/5/2014 à 10:08:14
J'ai relu l'aide (même si il manque une zone de recherche, on fini par trouver)... Dans la partie traduction il est écrit :

Si l’ IDE se plaint à propos de msgmerge, assurez vous que vous avez l’outil GNU gettext installé sur votre ordinateur.

Ce qui semble être le cas ici... ;-)
spheris#5 Posté le 22/5/2014 à 13:17:21
Merci pour ton aide mais ce n'est pas ça.
J'ai tenté une réinstallation de gettext car il était déjà present.

Je continu mes recherches et j'ai pu déceler une ou deux petites choses :

1
2
3
#: fmaform.form:219
msgid "essai"
msgstr "try"


IL NE FAUT JAMAIS mettre de HTML, ou guillemet dans le msgid ou msgstr sinon cela plante la traduction.

Malgrès cela je n'ai plus d'erreur mais cela ne fonctionne toujours pas.
Je ne veux pas m'attirer les foudres des autres gambasiens en disant cela, mais GB3 n'est pas encore bien au point. C'est bien ce que je pensais...
;)


spheris#6 Posté le 22/5/2014 à 16:44:05
Alors,ça y est j'ai finalement trouvé :

Je change le langage complet de mon linux et bascule en anglais.
Je crée mon fichier de traduction en Anglais.
Je redemarre.
une fois loggué tout en anglais, je vais dans les propriétés de mon projet et décoche l'option projet traduisible.
Je le lance et là ç'est enfin en Anglais.

Par contre, un gros soucis. Toutes les chaines de caractères (entre guillemets en rose) dans le code ne sont pas traduites... Why?
;)
didier18#7 Posté le 22/5/2014 à 17:41:39

"bla bla bla" peut être traduit car il y a guillemet en début et fin de chaîne.
"bla "BLA-BLA" bla" la chaîne "BLA-BLA" ne sera pas traduite car le 2ème guillemet indique que seulement le 1er "bla " et le 2ème " bla" doivent être traduits.
Pour éviter ce genre de problème j'utilise le simple '
"bla 'BLA-BLA' bla" le BLA-BLA a bien été traduit...
spheris#8 Posté le 23/5/2014 à 10:17:42
didier18,
Merci pour ton aide. en Effet, c'est bien ce que tu dis qui fonctionne.
Par contre, pourquoi les chaines dans le code ne sont elles pas traduite?
didier18#9 Posté le 23/5/2014 à 14:29:25
C'est normal et je dirai que la réponse est dans ta question...

"pourquoi les chaines dans le code ne sont elles pas traduite?"

Les chaînes sont DANS le code. Elles ne seront donc pas traduites.
Exemple traduis moi s'il te plais "11100010" en Anglais.
Pas facile hein ?
Si tu veux vraiment traduire les chaînes, il faut faire la traduction en amont...
Par exemple pour mettre ces éléments dans une Liste:

'ça fonctionne mais ce n'est pas traduit
ZList.List = Split("Salade,La pomme,Fraise,Les cerises")

Mais si tu fais :

Dim msg1, msg2, msg3, msg4 As String
msg1 = ("Salade")
msg2 = ("La pomme")
msg3 = ("Fraise")
msg4 = ("Les cerises")

puis...

With ZList
.Add(msg1)
.Add(msg2)
.Add(msg3)
.Add(msg4)
End With

ça fonctionne et ça sera traduit puisque la traduction interviendra sur les msg...

Je suis en train de faire un p'tit tuto sur le sujet.
A voir bientôt sur la forge.
spheris#10 Posté le 23/5/2014 à 15:25:30
didier18,

si tu poses un bouton bbutton1 sur une form et que le text est :

J'aime le chocolat

et que tu traduis ton projet, tu auras sur le bouton le texte suivant :

I like chocolate.

Mais, je te disais que le texte dans le code n'est pas traduit, c'est cet exemple là :

1
2
3
4
5
6
7
8
9
PUBLIC SUB bbutton1_click()
SELECT CASE toto
CASE FALSE
bbutton1.text = "J'aime le chocolat"
CASE TRUE
bbuton1.text = "je n'aime pas le chocolat"
END SELECT
toto = NOT toto
END



Si tu traduis ce projet avec ce code, tu ne verra pas "J'aime le chocolat" ou "je n'aime pas le chocolat" présent dans la traduction.
C'est ce que j'ai appelé avec mes mots : traduction dans le code.
;)
didier18#11 Posté le 23/5/2014 à 21:27:19
Bonsoir spheris

Tel que, ton exemple ne serai pas traduit...
Il manque les parenthèses.

Mais si je comprend bien, ce que tu voudrais, avant traduction c'est...

bbutton1.text = ("J'aime le chocolat")

et après la traduction.

bbutton1.text = ("I like chocolate")

Hormis de le faire à la main, je crois que ce n'est pas possible dans la version actuelle de Gambas3. Il faudrait un interpréteur qui interprète le code et traduise automatiquement TOUTES chaînes entre guillemets dans le langage de ton choix... Grosse usine à gaz ! D'abord pour les langues, ensuite sur le fonctionnement. Comment faire la différence entre les chaînes à traduire ou pas ?
Par exemple que deviendrait une commande du style 'FichIni = Open Application.Path & "/MonFichier.ini" For Input' Il faut traduire le MonFichier.ini ou pas ? En entier ou pas ?
Autre exemple, il m'arrive de regrouper des valeurs booléennes dans une chaîne string convertie, ça donne à peu près ça :
VBooAvantAction = "11000110" ou chaque 0 et 1 représente en réalité 1 variable vraie ou fausse qui est modifiée pendant Action...
Lorsque je récupère ma string Après action, je peux facilement comparer l'état de mes 8 variables.
Donc là impossible à traduire (et heureusement d'ailleurs;-) d'ou aussi mon exemple dans le post #9.
Et puis si ça traduisait le code, tant qu'à faire autant tout le convertir y compris les commandes... 'For i' deviendrai 'Pour i' (en 2 mots je précise ;-) etc...
A ce prix là il faut carrément ré-écrire Gambas non ? Enfin Gambas, se re-coderai tout seul...
Ce qui serait bien déjà, concernant la traduction, -puisque c'est le sujet- ce serai que Gambas version xxx soit équipé d'un traducteur ou l'on est pas obligé de manipuler les chaînes de caractères pour fabriquer sa traduction. 1 appui sur 1 bouton et 'zou' Gambas fait le reste.
ça se serait cool.
Donc ma réponse, mais elle n'engage que moi, est que ce n'est pas possible...

...Pour l'instant.
didier18#12 Posté le 23/5/2014 à 21:57:29
Bouhhh trop dégouté je suis !
Je viens de consulter l'aide et je vois un super tuto concernant la traduction.
Y'a rien à ajouter ! Tout y est, images, explications claires...
Ma contribution n'apporterai rien de plus si ce n'est encombrer le site.
Me suis vengé. J'ai tout killer !...
Il est quand même bien fait ce Gambas !
didier18#13 Posté le 24/5/2014 à 16:31:35
Bonjour spheris

Par contre moi j'ai encore 1 p'tite question (c'est probablement tout bête mais bon...). J'ai fait MonSuperProg. Que j'ai traduit en plusieurs langues (Russe, Anglais etc...) Donc je me retrouve avec des fichiers (ru, en etc...) dans le répertoire .lang.
Comment faire apparaître dans un menu langues les langues disponibles pour l'utilisateur ?
Le sujet étant en 'Résolu', si tu repasse par là ou si un lecteur a l'info Merci d'avance...
spheris#14 Posté le 26/5/2014 à 21:24:17
Didier18,
Il te suffit de lister tous les fichiers .po dans ton répertoire .lang qui est caché dans le répertoire de l'application comme ceci:

http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=2103

Bonne soirée.
;)
didier18#15 Posté le 27/5/2014 à 00:23:05
Merci spheris...
12