multi-langues
Publié : 21.04.2005 - 14h41 par Krynn
Bonjour,
C'est pas pour tout de suite, mais je me demande si certain d'entre vous ont deja fait leur application en plusieurs langue (interface) et si oui, comment avez-vous procédé pour vous facilité la vie?
Merci
Re: multi-langues
Publié : 21.04.2005 - 20h26 par Jérôme Rosat
Krynn a écrit :C'est pas pour tout de suite, mais je me demande si certain d'entre vous ont deja fait leur application en plusieurs langue (interface) et si oui, comment avez-vous procédé pour vous facilité la vie?
Bonjour,
Je n'ai jamais développé une application en plusieurs langues mais on peut imaginer la solution suivante:
Un dossier "langage" avec des sous dossiers pour chaque langue contenant un fichier texte pour chaque "stack". Dans les fichiers on trouve le texte des étiquettes, boutons et menus entre des tags qui font référence au numéro d'ID de l'objet. Par exemple, si l'ID de mon champ "Label" est 1004, alors le texte est ainsi: <1004>Texte de l'étiquette</1004>. Avec cette méthode il est possible de prévoir du texte sur plusieurs lignes pour les menus par exemple.
Ainsi, lorsqu'un utilisateur choisit une langue, on définit une variable globale qui sera utilisée pour identifier le dossier correspondant dans une procédure preOpenCard. Dans la même procédure on définit le texte des objets en faisant référence à l'ID de l'objet et donc du tag.
J'espère que c'est pas trop confus.
Publié : 22.04.2005 - 13h39 par Krynn
Bonne l'idée, j'imagine comment ca fonctionne. Je n'ai pus qu'a reussir a coder.
Il faudra peut-etre aussi faire un fichier avec les texte qui ne sont pas dans des objets (comme le fenetre de dialogue, ...)
Merci
Publié : 22.04.2005 - 19h59 par Jérôme Rosat
Krynn a écrit :Il faudra peut-etre aussi faire un fichier avec les texte qui ne sont pas dans des objets (comme le fenetre de dialogue, ...)
Où alors utiliser des "cartes" comme fenêtres de dialogue !
Publié : 11.05.2005 - 1h20 par Krynn
Merci pour l'astuce, j'ai un peu changer, mais l'idée est toujours la:
- un fichier par langue
- comme je recrée des boutons lorsque je change de grandeur, j'ai un problème avec les ID, alors j'utilise les "custom propriété" avec un numéro que je peux retrouvé ailleurs.
Voila un peu le look:
Code : Tout sélectionner
On MouseUP
lock screen
put the label of btn Langue into VarLangue
set the itemDelimiter to tab
repeat with VarX = 1 to the number of fields of this card
if the Numero of field VarX is not empty then
put the Numero of field VarX into VarText
repeat with VarY = 1 to the number of lines of fld VarLangue
if the item 1 of line VarY of fld VarLangue = VarText then
put item 2 of line VarY of fld VarLangue into field VarX
end if
end repeat
end if
end repeat
unlock screen
end MouseUP
ca c'est pour les camps, j'en ai un autre pour les btn et un dernier pour le texte qui change dans les champs suivant ce que je survole.
J'ai pas encore sorti ça dans un fichier, mais ce n'est pas très compliqué.
C'est sûrement pas très optimiser comme code, mais j'ai fait avec ce que je connais.
Publié : 19.08.2006 - 7h18 par Jürg Studer
Bonjour Krynn
J'ai fait deux logiciels multilangues qui ont des structures différentes:
- Geld herausgeben CH.rev (chaque langue a sa propre carte)
- Uhrzeit_l'heure.rev (le contenu change d'après la langue choisie)
Tu trouves ces piles ici:
http://web.mac.com/juerg.studer/iWeb/We ... ommen.html
puis cliquer sur «Lernprogramme Rechnen"
Salutations et excuse les fautes orthographiques
Jürg, de langue maternelle allemande
![Wink ;-)](icon_wink.gif)
Publié : 20.11.2006 - 14h33 par legallou
J'ai, sous Hypercard, fait, à l'époque 1982, un environnement complet d'administration du multi-langue.
1 - Fichiers indépendants par langue pour les messages d'erreur, et bulle d'aide.
2 - Utilitaire qui change dynamiquement les noms de bouton, et champs.
Et d'autres outils, du genre liste des routines utilisant une routine.
A voir, si cela, vaut la peine de convertir en Revolution. Je peux mettre le code à votre disposition. Pour ma part, j'ai abandonné l'idée de passer à Revolution. Je passe à AppleScript Studio. Là, le multi-langue est géré di-facto.
Publié : 11.02.2007 - 13h56 par xApple
Faire un fichier avec les infos dedans c'est fastidieux !
Le plus simple c'est d'utiliser le fait que les objets peuvent avoir des customs propriétés.
Puis il suffit de cycler tous les objets lorsque l'on change.
Voici le script à mettre dans le stack:
Code : Tout sélectionner
on changeLanguage theLanguage
put "loc" & theLanguage into theCustomProp
repeat with x = 1 to the number of cards of this stack
put the objects of card x into cardObjects
repeat with y = 1 to the number of lines of cardObjects
put line y of cardObjects into currentObject
do merge("put the [[theCustomProp]] of currentObject into myText")
if myText is empty then next repeat
put replaceText(myText,return,quote & " & return & " & quote) into myText
put word 1 of the name of currentObject into objectType
-----------
switch objectType
case "field"
do format("put (\"%s\") into %s",myText,currentObject)
break
case "button"
do format("set the label of %s to (\"%s\")",currentObject,myText)
break
default
answer error "Unknown object type while appliying a localized translation." & \
return & return & "Object type:" && objectType &\
return & "Obeject Name:" && currentObject
end switch
end repeat
end repeat
end changeLanguage
getProp objects
repeat with x = 1 to number of controls of the target
put the long name of control x of the target & return after myList
end repeat
sort myList
return myList
end objects
Puis il suffit d'appeler "changeLanguage French" depuis la message box par exemple. Et tous les objects qui doivent changer leur texte doivent avoir une custom prop nommée "locFrench" ou "locEnglish" contenant le nouveau texte.
Je pense que c'est vraiment la meilleur facon de faire. Que pensez-vous ?