cameleon-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [cameleon-dev] un outil de localisation


From: Sylvain LE GALL
Subject: Re: [cameleon-dev] un outil de localisation
Date: Fri, 4 Apr 2003 18:27:12 +0200
User-agent: Mutt/1.5.4i

On Fri, Apr 04, 2003 at 03:28:02PM +0200, Maxence Guesdon wrote:
> Re-salut,
> 
> profitons du fait qu'il n'y a que des français sur cette liste :-)
> J'ai pensé à faire un outil de localisation il y a longtemps.
> Ca marcherait comme ça:
> - on définirait une arboresence de langues
>   (avec typiquement l'anglais en racine).
>   Le but est d'avoir un fallback : quand il manque une traduction
>   (traduction complète ou partielle dans une langue), on retombe
>   sur la langue "mere"
> - une interface graphique pour définir l'arborescence des langues
> - les langues possibles sont d'apres les locales (fr, en, fr_FR, ...)
> - tous les messages seraient définis dans un ou plusieurs fichiers,
>   modifié(s) par l'interface graphique
> - on génère du code à partir de ce(s) fichier(s), du style:
>   type t = {
>     message1 : string ;
>     la_version : string ;
>     mon_message : string -> string ;
>     .....
> 
>   }
> 
>   let en = {
>     message1 = "my first message" ;
>     la_version = "1.0" ;
>     mon_message = (fun s -> "this is the message "^s);
>    ....
> 
>   }
>  
>   let fr = {
>     message1 = "Mon premier message" ;
>     la_version = en.la_version ; (** not translated *) 
>     mon_message = en.mon_message ; (** not translated *)
>    ....
>    }
> 
> let lang = match Sys.getenv "LANG" with
>    "en" -> en
>  | "fr" -> fr
>  |  ...
>  |  _ -> en
> 
> let message1 = lang.message1
> let la_version = lang.la_version
> let mon_message = lang.mon_message
> ...
> 
> 
> - on pourrait aussi, au lieu de créer les records ici, les charger par dynlink
>   mais ça ne marche pour le bytecode.
> 
> Qu'en pensez-vous ?
> 
 
Je suis assez d'accord avec l'idée, mais comme je suis un ch.. je vais
faire plein de remarque.

On pourrait utiliser gettext. C'est un outil bien fait, stable et
courrament utiliser. En plus il y a plein d'interface pour faire des
traductions. Je pense que c'est mieux que de redevelopper toute une
librairie de fonction. Bon bien sur, aprés deux choix s'offre à nous
faire un stubs de gettex ou réécrire gettext en entier. Je pense qu'on
peut faire intermédiaire. Commencer par un stubs et ensuite le réecrire
en ocaml ( ou d'autre pourront le faire ). Le link ne pose aucun
probleme, la transition serait transparente. 

Ensuite pour la gestion du bazar ( ou trouver le fichier mo et tout et
tout ), je pense qu'on pourrait faire un truc pas mal et qui manque :
un gestionnaire de ressource.

C'est un truc que j'ai découvert il y a bien longtemps ( quand je
travaillais sous Turbo C++ 5.0 ). Tu encapsule plein de ressource dans
un fichier que tu compile ensuite. Ca peut aussi servir pour localiser
les images et tout et tout. Par exemple j'ai besoin d'un fichier french.po 
et d'un fichier french.xpm. Mais comment saurais quelle path rentrer
pour qu'il soit charger : ca dépend d'ou le paquet ou l'application
mettre le fichier. Ben il suffit de crééer un fichier provenant de la
définition de nos modules : 

le fichier ressource.res :
french.xpm = Image
french.po = Lang(fr)

que l'on compile :
ocamlres -c -destdir /usr/local -share /usr/local/share -ressource_name
my_program
=> ressource.ml
let french_xpm = "/usr/local/share/my_program/pixmap/"
let french_po = Domain("/usr/share/locale/fr")

( bon en fait je connais pas trés bien gettext mais je sais que c'est
pas mal ).

Et dans le programme on utilise :
display_image Ressource.french_xpm


( je me rends compte que la dernière partie n'as pas grand chose a voir
)

Bon sinon pour en revenir a la translation, je suis assez contre du code
ocaml directe parceque :
- pour une grosse app (pleine de message )ca alourdit le code de facon 
  importante.
- si on veut que des gens extérieur aide à faire de la traduction c'est
  plus pratique
- gettext me semble quelques choses de pas mal ( mais bon je suis
  débutant ).
- il y a plein d'outils matures qui existent pour aider à la traduction avec
  ce genre de fichier

Voila ma modeste contribution

Sylvain LE GALL




reply via email to

[Prev in Thread] Current Thread [Next in Thread]