Est-ce que vous connaissez les frameworks des autres Smalltalk que Squeak ? Comment dressent-ils le contour d'une application et de son catalogue de traduction ?
Hilaire
Salut Hilaire,
tu peux contacter Karsten Kusche pour lui poser la question au sujet de visual works: karsten@briksoftware.com. En anglais ou en allemand par contre.
Le 11/05/07, Hilaire Fernandeshilaire@ofset.org a écrit :
Est-ce que vous connaissez les frameworks des autres Smalltalk que Squeak ? Comment dressent-ils le contour d'une application et de son catalogue de traduction ?
Hilaire
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
en VW, il y a un système à double clés:
1 clé pour le catalogue (1 symbol) 1 clé pour le message (1 symbol) un string par défaut (recommandé)
Il y a ensuite un fichier par catalogue et par langue. Les fichiers sont rangés dans un ou plusieurs répertoires (il y a une sorte de CATALOG_PATH). Ces répertoires doivent avoir un sous répertoire par langue (en fr de es etc...)
La clé de catalogue est indiqué en tête de fichier. Le codage des caractères dans le fichier de traduction est indiqué en tête de fichier également (important pour les caractères latins étendus et les langues non latines).
Les fichiers sont une liste de clé=valeur
Il est possible de substituer des arguments dans la valeur: dans 'le fichier <1s> est absent', <1s> est destiné à être remplacé par un string fournit en argument (le 1er argument). <1p> accepte n'importe quel argument (il invoque printString).
Un mécanisme de cache et de binary tree permet un accès rapide sans faire grossir trop l'image (uniquement les catalogues utilisés sont chargés dans le cache). Les fichiers textes sont aussi traduits en version binaire pour un chargement plus rapide.
Les clés sont créées via des messages << et >>. Il est facile d'écrire un utilitaire qui extrait toutes les occurrences de cette construction dans le code (à partir de l'arbre syntaxique du code - AST) et qui génère un moule des catalogues.
On peut même re-générer les fichiers automatiquement pour suivre les évolutions du code.
voilà pour le B.A. BA
Nicolas
Damien Cassou a écrit :
Salut Hilaire,
tu peux contacter Karsten Kusche pour lui poser la question au sujet de visual works: karsten@briksoftware.com. En anglais ou en allemand par contre.
Le 11/05/07, Hilaire Fernandeshilaire@ofset.org a écrit :
Est-ce que vous connaissez les frameworks des autres Smalltalk que Squeak ? Comment dressent-ils le contour d'une application et de son catalogue de traduction ?
Hilaire
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Merci Nicolas,
Est-ce que tu peux me donner un exemple d'utilisation des messages << et
?
Hilaire
nicolas cellier a écrit :
en VW, il y a un système à double clés:
1 clé pour le catalogue (1 symbol) 1 clé pour le message (1 symbol) un string par défaut (recommandé)
Il y a ensuite un fichier par catalogue et par langue. Les fichiers sont rangés dans un ou plusieurs répertoires (il y a une sorte de CATALOG_PATH). Ces répertoires doivent avoir un sous répertoire par langue (en fr de es etc...)
La clé de catalogue est indiqué en tête de fichier. Le codage des caractères dans le fichier de traduction est indiqué en tête de fichier également (important pour les caractères latins étendus et les langues non latines).
Les fichiers sont une liste de clé=valeur
Il est possible de substituer des arguments dans la valeur: dans 'le fichier <1s> est absent', <1s> est destiné à être remplacé par un string fournit en argument (le 1er argument). <1p> accepte n'importe quel argument (il invoque printString).
Un mécanisme de cache et de binary tree permet un accès rapide sans faire grossir trop l'image (uniquement les catalogues utilisés sont chargés dans le cache). Les fichiers textes sont aussi traduits en version binaire pour un chargement plus rapide.
Les clés sont créées via des messages << et >>. Il est facile d'écrire un utilitaire qui extrait toutes les occurrences de cette construction dans le code (à partir de l'arbre syntaxique du code - AST) et qui génère un moule des catalogues.
On peut même re-générer les fichiers automatiquement pour suivre les évolutions du code.
voilà pour le B.A. BA
c'est comme printf %1
Stef
On 12 mai 07, at 08:09, Hilaire Fernandes wrote:
Merci Nicolas,
Est-ce que tu peux me donner un exemple d'utilisation des messages << et >> ?
Hilaire
nicolas cellier a écrit :
en VW, il y a un système à double clés: 1 clé pour le catalogue (1 symbol) 1 clé pour le message (1 symbol) un string par défaut (recommandé) Il y a ensuite un fichier par catalogue et par langue. Les fichiers sont rangés dans un ou plusieurs répertoires (il y a une sorte de CATALOG_PATH). Ces répertoires doivent avoir un sous répertoire par langue (en fr de es etc...) La clé de catalogue est indiqué en tête de fichier. Le codage des caractères dans le fichier de traduction est indiqué en tête de fichier également (important pour les caractères latins étendus et les langues non latines). Les fichiers sont une liste de clé=valeur Il est possible de substituer des arguments dans la valeur: dans 'le fichier <1s> est absent', <1s> est destiné à être remplacé par un string fournit en argument (le 1er argument). <1p> accepte n'importe quel argument (il invoque printString). Un mécanisme de cache et de binary tree permet un accès rapide sans faire grossir trop l'image (uniquement les catalogues utilisés sont chargés dans le cache). Les fichiers textes sont aussi traduits en version binaire pour un chargement plus rapide. Les clés sont créées via des messages << et >>. Il est facile d'écrire un utilitaire qui extrait toutes les occurrences de cette construction dans le code (à partir de l'arbre syntaxique du code
- AST) et qui génère un moule des catalogues.
On peut même re-générer les fichiers automatiquement pour suivre les évolutions du code. voilà pour le B.A. BA
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
#cleDuMessage << #IdDuCatalogue >> 'valeur par défaut'
est à:
(UserMessage key: #cleDuMessage catalogID: #IdDuCatalogue defaultString: 'valeur par défaut')
Ce que:
1@2
est à:
(Point x: 1 y: 2)
Juste un moyen d'écrire en plus court, (rien à voir avec les stream C++)
Nicolas
stephane ducasse a écrit :
c'est comme printf %1
Stef
On 12 mai 07, at 08:09, Hilaire Fernandes wrote:
Merci Nicolas,
Est-ce que tu peux me donner un exemple d'utilisation des messages << et >> ?
Hilaire
Hilaire Fernandes a écrit :
nicolas cellier a écrit :
en VW, il y a un système à double clés:
1 clé pour le catalogue (1 symbol) 1 clé pour le message (1 symbol) un string par défaut (recommandé)
Commment est utilisé la clé catalogue dans le message ?
Hilaire
Un exemple:
Dialog warn: ( (#FileNotFoundError << #MyCatalogID >> 'ERROR: file <1s> not found') expandMacrosWith: file name).
<< crée un UserMessage composé des clés message et catalogue.
remplit la valeur par défaut.
Le mécanisme de substitution n'a plus qu'à aller chercher la clé #FileNotFoundError dans le catalogue d'id #MyCatalogID pour le language courant. Si il ne le trouve pas, alors le message par défaut est utilisé.
Il y a aussi un moyen de spécifier le catalogID pour toute une application (une interface utilisateur), mais là, cela devient très spécifique VW.
Si on crée un UserMessage sans catalogueID (#FileNotFoundError >> 'ERROR: file <1s> not found'), alors il me semble que le premier catalogue trouvé qui contient cette clé est utilisé. A confirmer...
Nicolas
Ok, merci pour les explications. Je me demande pourquoi le message par défaut n'est pas utilisé comme clé de message.
Hilaire
nicolas cellier a écrit :
Hilaire Fernandes a écrit :
nicolas cellier a écrit :
en VW, il y a un système à double clés:
1 clé pour le catalogue (1 symbol) 1 clé pour le message (1 symbol) un string par défaut (recommandé)
Commment est utilisé la clé catalogue dans le message ?
Hilaire
Un exemple:
Dialog warn: ( (#FileNotFoundError << #MyCatalogID >> 'ERROR: file <1s> not found') expandMacrosWith: file name).
<< crée un UserMessage composé des clés message et catalogue.
remplit la valeur par défaut.
Le mécanisme de substitution n'a plus qu'à aller chercher la clé #FileNotFoundError dans le catalogue d'id #MyCatalogID pour le language courant. Si il ne le trouve pas, alors le message par défaut est utilisé.
Il y a aussi un moyen de spécifier le catalogID pour toute une application (une interface utilisateur), mais là, cela devient très spécifique VW.
Si on crée un UserMessage sans catalogueID (#FileNotFoundError >> 'ERROR: file <1s> not found'), alors il me semble que le premier catalogue trouvé qui contient cette clé est utilisé. A confirmer...
Nicolas
Le 13/05/07, Hilaire Fernandeshilaire@ofset.org a écrit :
Ok, merci pour les explications. Je me demande pourquoi le message par défaut n'est pas utilisé comme clé de message.
Peut-être pour garder la même clé si le texte change un peu.
Damien Cassou a écrit :
Le 13/05/07, Hilaire Fernandeshilaire@ofset.org a écrit :
Ok, merci pour les explications. Je me demande pourquoi le message par défaut n'est pas utilisé comme clé de message.
Peut-être pour garder la même clé si le texte change un peu.
Oui, peut-être. Je trouve que les outils Gettext du projet GNU règle le problème de façon plus élégante sans la necessite d'une clé en plus du message. En effet si un message est modifié, celui-ci est marqué fuzzy dans le catalogue de traduction.
Hilaire
Pour éviter les conflits. Il se peut que dans une langue donné, le message soit identique dans deux contextes différents. Mais cela ne sera pas forcément vrai dans une autre langue.
Nicolas
Hilaire Fernandes a écrit :
Ok, merci pour les explications. Je me demande pourquoi le message par défaut n'est pas utilisé comme clé de message.
Hilaire
nicolas cellier a écrit :
Hilaire Fernandes a écrit :
nicolas cellier a écrit :
en VW, il y a un système à double clés:
1 clé pour le catalogue (1 symbol) 1 clé pour le message (1 symbol) un string par défaut (recommandé)
Commment est utilisé la clé catalogue dans le message ?
Hilaire
Un exemple:
Dialog warn: ( (#FileNotFoundError << #MyCatalogID >> 'ERROR: file <1s> not found') expandMacrosWith: file name).
<< crée un UserMessage composé des clés message et catalogue.
remplit la valeur par défaut.
Le mécanisme de substitution n'a plus qu'à aller chercher la clé #FileNotFoundError dans le catalogue d'id #MyCatalogID pour le language courant. Si il ne le trouve pas, alors le message par défaut est utilisé.
Il y a aussi un moyen de spécifier le catalogID pour toute une application (une interface utilisateur), mais là, cela devient très spécifique VW.
Si on crée un UserMessage sans catalogueID (#FileNotFoundError >> 'ERROR: file <1s> not found'), alors il me semble que le premier catalogue trouvé qui contient cette clé est utilisé. A confirmer...
Nicolas
squeak-fr@lists.squeakfoundation.org