|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : juillet 2004 Messages : 231 ![]() |
Bonjour,
Je voudrais faire un site multilingue, j'ai déjà tout en place et ça marche. J'ai opté pour la solution de 1 fichier par langue que j'appelle selon ce que l'utilisateur veut. Supposons que j'ai le texte suivant : "Bienvenue sur ce forum" Dans fichier lang_fr.php : $lang['bienvenue'] = 'Bienvenue sur ce forum'; Dans fichier lang_en.php : $lang['bienvenue'] = 'Welcome on this forum'; Ok pas de problème jusque là... Mais si je veux mettre dans ce texte un lien vers le site developpez.com sur la partie du texte "ce forum" (ou 'this forum' en anglais) comment je dois procéder ? 1. Je fais ça comme un cochon et je fais une clé de traduction pour "Bienvenue sur" et une autre clé pour "ce forum" ? J'aime pas trop cette solution qui me fait découper mon texte et nuie à la lisibilité je trouve de mon fichier de langue (pas facile quand on veut passer le fichier de langue à qq'un de non informaticien pour qu'il le traduise) 2. Je mets ma balise <a href> dans mon fichier de langue mais là ça fait cochon aussi, surtout si comme dit précédement je passe le fichier à quelqu'un... Comment vous procéderiez vous ? |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Analyste - Programmeur Inscription : mai 2006 Messages : 712 ![]() |
Je crois que tu devrais couper ta phrase en deux. la clé "ce forum" pourait être utilisé plus tard dans ton site non?
__________________
Aucune aide par MP, utilisez le forum. |
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : juillet 2004 Messages : 231 ![]() |
Non pas bon.
Le lien ne change pas mais c'est où que je vais mettre ma balise <a href> ? J'aimerai éviter de le mettre dans mon fichier de langue pour qu'il soit le plus facilement lisible possible pour un non informaticien. Si je le mets dans ma page php d'affichage je suis obligé de scindé mon echo du style : <? echo $bienvenue; ?><a href="www.developpez.com"><? echo $forum; ?></a> <? echo $suite_du_bienvenu; ?> où dans les 3 variables de langues n'ont pas la même valeur dans chacune des langues par exemple. J'aimerai éviter de scinder ma phrase en 3 parties juste à cause d'un lien dans ce texte |
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Tu pourrais voir du côté de str_replace()
Tu fais donc une fonction avec tous les mots que tu souhaites remplacer (un peu comme du BBcode) et tu remplaces les mots du style Developpez.net par <a href="www.developpez.net">Developpez.net</a> de cette manière : Code :
$tavariable = str_replace('Developpez.net','<a href="www.developpez.net">Developpez.net</a>', $tavariable); |
|
|
00
|
|
|
#5 | |
|
Membre habitué
![]() Inscription : juillet 2004 Messages : 231 ![]() |
Citation:
Ah oui je n'avais pas pensé à cela Mais est ce vraiment possible dans mon cas sachant que developpez.net c'était un exemple, que dans mon cas le texte ne sera pas identique en francais et anglais (ex : 'formulaire d'inscription' qui m'emmène vers le formulaire d'inscription où le texte est différent en anglais) |
|
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Pour ton formulaire d'inscription je vois pas vraiment le problème, c'est un lien définit, il suffit de faire ton lien en HTML puis de préciser le texte à mettre entre les balises avec ton script de langage ...
|
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : juillet 2004 Messages : 231 ![]() |
Désolé je ne suis pas assez clair, je vais détailler
Mon texte à traduire est : "pour vous inscrire, veuillez remplir le formulaire d'inscription et nous retourner les éléments nécessaire pour valider votre inscription" J'aurai aimé que cela se trouve dans une et une seule variable dans un soucis de facilité de compréhension de la phrase dans mon fichier de langue. Dans ce texte sur "formulaire" je voudrais mettre un lien vers par exemple http://www.monsite.com/formulaire.html Je vais avoir dans mon fichier de langue fr Code :
$lang['texte'] = "pour vous inscrire, veuillez remplir le <a href='http://www.monsite.com/formulaire.html'>formulaire </a>d'inscription et nous retourner les éléments nécessaire pour valider votre inscription"; Dans mon fichier php qui affiche l'info Cette solution ne me plait pas pcq j'ai mon tag html dans mon fichier de langue |
|
|
00
|
|
|
#8 | ||
|
Membre actif
![]() OLE MAIN()Développeur Web Inscription : octobre 2002 Messages : 296 ![]() |
je crois que tu te prends trop la tête. Moi je mettrais le <a href> direct dans le fichier de langue...
Sinon tu as aussi sprintf ! Code :
|
||
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Inscription : juillet 2004 Messages : 231 ![]() |
Salut,
Oui en fait je vais m'orienter vers la solution de mettre directement mes tags html dans mon fichier de langue En revanche, certaines personnes choisissent de mettre les traductions directement dans une table où une clé définit la traduction et un champ = une langue. J'ai choisis la méthode par fichier afin de limiter les accès à la base de données... Mais sinon, quel est l'avantage de l'un ou de l'autre ? |
|
|
00
|
|
|
#10 |
|
Membre actif
![]() OLE MAIN()Développeur Web Inscription : octobre 2002 Messages : 296 ![]() |
j'ai suivi le même résonnement que toi. Un accès en BD pour chaque traduc c'est lourd à gérer et plus lent : aucun intérêt, à part éventuellement pour des gros textes ou articles... et encore ça dépend : si tu en as quelques-uns sur ton site un bon switch(LANG) suffira, par contre si tu en as beaucoup (blog, journal etc...) et donc à priori beaucoup de page... la BD peut être intéressante... Il y a aussi la solution gettext. Si c'est pratique à priori ça implique de recompiler ton fichier de langue à chaque mise à jour d'un seul texte... bref pas gérable.
Si tu trouve la BD plus pratique mais plus lente... tu peux utiliser BD + un système de cache comme ça tu as tous les avantages |
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Inscription : juillet 2004 Messages : 231 ![]() |
ok merci
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com