Internationnalisation de RebelBB
DideC26-May-2006/12:54:41+2:00
Un mot sympa à écrire "Internationnalisation" !!
Mais là n'est pas le sujet.

RebolBB est sympa, mais en anglais.
Je sais, un beau jour, il va remplacer définitivement le forum Codeur (j'attendrais que son niveau fonctionnel soit approchant ou équivalent, ce qui n'est pas le cas aujourd'hui à mon avis).

Mais alors pourquoi est il en anglais si c'est pour en faire le Forum des utilisateurs "Francophone" ?

Je sais : c'est parcequ'il n'est pas réservé à ça. Que le moteur pourra être utilisé par d'autres et donc, qu'il faut utiliser la langue la plus répandue : celle de Shakespeare.

OK, mais alors, il faut prévoir la localisation, parceque moi, je veux un Forum francophone en français.

D'où ce post !!
DideC26-May-2006/13:19:58+2:00
Il y a 2 chose à considérer : les modèles (markup-*) et les chaines dans le code (chercher les 'print).

Pour les modèles, il y a pleins de façon de faire.
Voici une proposition histoire de lancer le débat.

;*** une fonction utilitaire pour localiser un modèle
localize: func [template [string!] locale [block!]] [
	template: copy template
	foreach [c s] locale [replace/all template mold c s]
	template
]

;*** Un exemple de modèle issu du code actuel
markup-reply: func [/lang lng /local template locales] [
	locales: [
		en [
			#S1# "Reply:"
			#S2# "Enter your name or nickname:"
			#S3# "Enter your password:"
		]
		fr [
			#S1# "R&ecute;ponse ::"
			#S2# "Votre nom ou pseudo :"
			#S3# "Votre mot de passe :"
		]
	]
	template: {
		<br>
		<form method="POST" action=<%this-cgi%>>
		#S1#<br>
		<textarea name="bla" rows="10" cols="60"></textarea>
		<p>
		#S2#<br>
		<input type="TEXT" name="user" size="40">
		<br>
		#S3#<br>
		<input type="PASSWORD" name="pass" size="40">
		<p>
		<input type="SUBMIT" name="submit" value="Submit">
		<input type="HIDDEN" name="tid" value="<%input/thread%>">
		</form>
	}

	lng: any [lng 'en]
	localize template probe locales/:lng
]


Si on met ce code dans le code actuel, ça marche tout pareil sans rien changer.
Pour afficher du Français, il faut appeler "markup-reply/lang 'fr" au lieu de "markup-reply".

Pour éviter ça, il suffit d'utiliser une variable globale 'language, initialisée au début du script et de faire quelques modifs sur le code précédent :

language: 'fr

;*** une fonction utilitaire pour localiser un modèlelocalize: func [template [string!] locales [block!] /local locale] [
	template: copy template
	locale: locales/:language
	foreach [c s] locale [replace/all template mold c s]
	template
]

;*** Un exemple de modèle issu du code actuel
markup-reply: has [template locales] [
	locales: [
		en [
			#S1# "Reply:"
			#S2# "Enter your name or nickname:"
			#S3# "Enter your password:"
		]
		fr [
			#S1# "R&ecute;ponse ::"
			#S2# "Votre nom ou pseudo :"
			#S3# "Votre mot de passe :"
		]
	]
	template: {
		<br>
		<form method="POST" action=<%this-cgi%>>
		#S1#<br>
		<textarea name="bla" rows="10" cols="60"></textarea>
		<p>
		#S2#<br>
		<input type="TEXT" name="user" size="40">
		<br>
		#S3#<br>
		<input type="PASSWORD" name="pass" size="40">
		<p>
		<input type="SUBMIT" name="submit" value="Submit">
		<input type="HIDDEN" name="tid" value="<%input/thread%>">
		</form>
	}
	localize template probe locales
]


Et là on utilise "markup-reply" tel qu'aujourd'hui dans le code.
GreG26-May-2006/21:23:16+2:00
Ca me parait bien.
Une autre facon de faire pourrait etre de definir chaque mot dans le fichier config par exemple. Mais dans ce cas, c'est du static, pas possible de changer de langage a la volee.
N'hesite pas a m'envoyer tes changements si tu te lances la dedans.
DideC27-May-2006/11:36:45+2:00
J'ai installé Xitami sur mon PC et je teste des modifs avec le compte IMAP de test (merci !!).

Pour le moment, je regarde au parseur.

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2