Site MultiLangue

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Site MultiLangue

Re: Site MultiLangue

par Ilan » 29 déc. 2009, 12:32

GetText ne m'attire pas trop. C'est un site plutôt simple et la solution des define me convient bien :)

Pour le session_start, j'ai vraiment fait le boulet ! Pour l'instant, le site fonctionne bien et grâce à vous ;)

Si j'ai d'autres questions, je vous le ferai savoir ;)

Re: Site MultiLangue

par stealth35 » 28 déc. 2009, 17:18

pourquoi ne pas utilisé gettext c'est fait pour...
http://www.php.net/manual/fr/book.gettext.php

Re: Site MultiLangue

par macgawel » 28 déc. 2009, 15:33

:google:
Ou fais une recherche ici, il y a 332 réponses !

Le session_start() doit être la première chose que tu envoies.
Si tu as déjà commencé à envoyer quelque chose au serveur (par echo ou header, par exemple), ça te donnera ce message d'erreur.

Re: Site MultiLangue

par Ilan » 28 déc. 2009, 15:10

Bon alors j'ai essayé de suivre le tuto du dernier lien que j'ai posté.

L'arborescence de mon site :

/racine/
  • language/
    • lang.en.php
      lang.fr.php
      common.php
    index.php

Lorsque je vais sur mon site je vois cette erreur en header :arrow:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /monsite/index.php:3) in /monsite/language/common.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /monsite/index.php:3) in /monsite/language/common.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at /monsite/index.php:3) in /monsite/language/common.php on line 3
Pas compris :oops: :oops:

Merci encore d'avance pour votre aide ;)

Re: Site MultiLangue

par Ilan » 28 déc. 2009, 12:00

Merci pour ta réponse rapide et très bien expliqué !!

Oui, le tuto que j'ai trouvé est un peu léger. J'ai en trouvé un autre qui a l'air plus optimisé :arrow: http://www.bitrepository.com/php-how-to ... bsite.html

Qu'en penses-tu ? Pourrais-je ensuite simplement comme tu l'as expliqué, faire une gestion d'images en utilisant le code :
echo "<img src=\"monchemin/$lang/monument.jpg\" ...>";

Re: Site MultiLangue

par macgawel » 28 déc. 2009, 11:50

Bonjour.

Le tuto est pas mal, mais un peu limité. Comment vas-tu gérer les articles/news/... (le gros du contenu, quoi) ? Certainement pas avec des DEFINE !
Pour ça il y a plusieurs méthodes suivant la façon dont tu les stockes, mais en gros le principe est toujours le même : rajouter le paramètre de langue aux requêtes/chemins...

Pour les images, tu peux créer un répertoire par langue. Ensuite il suffit de faire un
echo "<img src=\"monchemin/$lang/monument.jpg\" ...>";
Dans ce cas, il faut prévoir :
1. Le cas où l'utilisateur ne demande pas de langue => donner une valeur par défaut à $lang.
2. Le cas où tu as des images communes (ou des images qui n'existent pas pour une langue donnée) => vérifier l'existence du fichier. Si le fichier n'existe pas, se rabattre sur un répertoire par défaut.
Autre solution (moins bonne) : donner le chemin de l'image du monument dans le fichier de langue :
define ('IMG_MONUMENT', 'chemin/Vers/Image.jpg');
Quelques remarques (quand-même) sur le tuto :
1. Sécuriser les données récupérées par GET
2. Ca peut aller pour deux ou trois langues, mais s'il faut en rajouter une ça peut vite devenir ingérable.
Il faudrait généraliser le code pour éviter d'avoir une ribambelle de IF... Pas très compliqué, il "suffit" d'utiliser la paramètre de langue pour construire (dans l'exemple donné) l'include :
$langue = 'fr'; // valeur par défaut
if ( !empty ( $_GET['lang'] ) ) {
   $langue = $_GET['lang'];
}
$file_lang = 'lang/fr-lang.php'; // valeur par défaut
/*
On teste l'existence du fichier, histoire d'éviter le cas où un petit malin
modifie l'URL pour demander à avoir du CZ (tchèque).
Plutôt que le is_file, on pourrait aussi utilise un Array $Alangues contenant les langues acceptées
et tester le in_array( $langue, $Alangues )...
Cette methode permet de gérer sans problème du multi-langue, et d'en rajouter/enlever facilement...
*/
if ( is_file ( 'lang/'.$langue.'-lang.php' ) ) { // si le fichier existe
   $file_lang =  'lang/'.$langue.'-lang.php'; 
}
include ( $file_lang );

Site MultiLangue

par Ilan » 28 déc. 2009, 10:59

Bonjour à tous,

Je suis en plein développement d'un site plutôt simple mais que j'aimerai organiser comme il faut. J'aimerai aussi qu'il soit multilangue. J'ai trouvé sur le net un tuto clair et simple qui répond parfaitement à mes recherches :arrow: http://www.phpdebutant.org/article107.php

Par contre, j'aimerai aussi savoir comment faire pour intégrer une gestion d'images multilangues ! (Exemple : Monument qui change en fonction de la langue choisi ; Français : Tour Eiffel ; Anglais : Statue de la Liberté, Etc...)

Avez-vous une idée de comment pourrais-je procéder ?


Merci à vous


Amicalement,
Ilan