begin process at 2012 05 31 05:59:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Plusieurs langues pour un site


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Plusieurs langues pour un site

mardi 8 août 2006 à 15:36:27 | Plusieurs langues pour un site

depression

Salut tout le monde!

Voila, pour un site, je cherche à mettre un choix de langues : Français et Anglais pour l'instant.

Bien évidemment, je ne compte pas tout coder deux fois.

Comment puis-je faire?

La solution que j'ai trouvé pour l'instant est de mettre toutes les chaînes de caractères dans une classe ou une interface de langue, mais n'existerait-il pas mieux?

Merci d'avance!

mardi 8 août 2006 à 15:48:26 | Re : Plusieurs langues pour un site

sim51

Membre Club
Salut,
Le mieux il me semble pour ton problème est de mettre toutes les phrases, les mots dans une table contenant 3 champs un identifiant, le français et l'anglais.
Pour ma part je ne vois pas d'autre possibilités.
Bonne continuation.

N'oubliez d'aller voir le règlement de C-S ici
N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
mardi 8 août 2006 à 15:53:17 | ...

depression

Mouais.

A la réflexion, je préfère rester sur mon idée de classe et d'interface, c'est beaucoup moins lourd qu'un SGBDR.

Sinon, je viens d'y penser: autant utiliser un fichier XML!

Bon, je teste ce soir!

mardi 8 août 2006 à 16:01:00 | Re : Plusieurs langues pour un site

FhX

"Sinon, je viens d'y penser: autant utiliser un fichier XML!"
Tu vas faire sourire Mala avec un truc comme ca :p
mardi 8 août 2006 à 16:05:32 | Re : Plusieurs langues pour un site

depression

Gne???

Pour quelle raison?

Ce n'est pas une bonne idée?

mardi 8 août 2006 à 17:51:44 | Re : Plusieurs langues pour un site

FhX

Mala est un fervant défenseur du XML :p
mardi 8 août 2006 à 18:18:23 | Re : Plusieurs langues pour un site

malalam

Administrateur CodeS-SourceS
Hello,
héhé...

cherche dans mes codes, tu verras que ça marche pas mal :
- j'ai un code exemple très basique : exemple de site multilingue avec xml...un truc dans le genre
- et j'ai un code localisé (un peu plus complexe) basé sur le même principe : classdoc, documentation automatique de classes et de fonctions.
mercredi 9 août 2006 à 21:12:19 | Re : Plusieurs langues pour un site

franco_se

Membre Club
pq ne pas simplement faire 2 fichiers french.php et english.php contenant toutes les phrases sous forme d'un tableau ( par ex $lang['hello'] = "Bonjour" ) ou de constantes ( define("_HELLO", "Bonjour").

Pour selectionner la langue, il suffit de creer un cookie ac le nom de la langue choisi.
Pour appeller le bon fichier, il suffit de d'un code du type

$settings['default_langue'] = "french";
if (isset($_COOKIE['perso_langue']) and $_COOKIE['perso_langue'] != $settings['langue'] and file_exists("language/".$_COOKIE['perso_langue'].".php") )

{ include("language/".$_COOKIE['perso_langue'].".php");
}else{
include("language/".$settings['default_langue'].".php");
}

c'est sur, ça vaut pas de XML ms ça marche, et c'est simple ..........

jeudi 10 août 2006 à 09:13:42 | Re : Plusieurs langues pour un site

malalam

Administrateur CodeS-SourceS

Crois-le ou non, mais c'est beaucoup plus simple avec du xml : tu crées une classe qui gère la localisation, et après, c'est fini. Pour ajouter une langue, il suffit de copier un fichier xml de localisation, et de changer les traductions. C'est nettement plus simple à utiliser qu'une localisation à base de variables. Et quelqu'un ne connaissant rien au php peut le faire.
Mon package de documentation automatique de classes et de fonctions utilise cette classe : (personnalisée, là) :

<?php
class olocale {

 private $aMessages = array ();

 private $locale = '';

 public function __construct ($loc) {
  $this -> locale = $loc;
  $this -> setaMessages ();
 }

 private function  setaMessages () {
  $aFiles = scandir ('locales/'.$this -> locale);
  $aForbid = array ('.', '..');
  $aFiles = array_diff ($aFiles, $aForbid);
  foreach ($aFiles as $file) {
   $cat = substr ($file, 0, strlen ($file) -4);
   $xml = simplexml_load_file('locales/'.$this -> locale.'/'.$file);
   foreach ($xml  as $clef => $val) {
    $this -> aMessages[$cat][$clef] = $val;
   }
  }
 }

 public function getMsg ($cat, $clef) {
  return (string)$this -> aMessages[$cat][$clef];
 }

 public function getLoc () {
  return (string)$this -> locale;
 }
}
?>

Mes fichiers xml sont placés ainsi :
locales/english/fichiers.xml
locales/french/fichiers.xml

Dans mon cas, j'ai 3 fichiers par langue, chacun étant dédié à un type de message (erreurs, UI, doc).
Un exemple de fichier (error.xml) :
<?xml version='1.0' encoding="ISO-8859-1"?>
<errors>
 <doc_optional>Optional</doc_optional>
 <doc_mandatory>Mandatory</doc_mandatory>
 <doc_yes>Yes</doc_yes>
 <doc_no>No</doc_no>
 <doc_methods>Methods</doc_methods>
 <doc_properties>Properties</doc_properties>
 <doc_functions>Functions</doc_functions>
 <doc_parameters>Parameters</doc_parameters>
 <doc_seecode>See code</doc_seecode>
 <doc_filesize>Filesize</doc_filesize>
 <doc_filelines>Nb lines</doc_filelines>
 <doc_file_def1>defined in</doc_file_def1>
 <doc_file_def2>from line</doc_file_def2>
 <doc_file_def3>to line</doc_file_def3>
 <doc_returns_ref>Returns reference</doc_returns_ref>
 <doc_comments>Author's comments</doc_comments>
 <doc_owner>Owner</doc_owner>
 <doc_modifiers>Modifiers</doc_modifiers>
 <doc_default_value>Defauls value</doc_default_value>
 <doc_returns>Documented return value</doc_returns>
 <doc_params>Documented parameters value</doc_params>
 <doc_constants>Constants</doc_constants>
</errors>

Puis j'appelle un message comme ça (j'ai un formulaire présent partout de choix de la langue):
// initalisation de la langue
if (!isset ($_SESSION['locale']) || empty ($_SESSION['locale'])) {
 $_SESSION['locale'] = 'francais';
}

// instanciation de ma classe
$oloc = new olocale ($_SESSION['locale']);

// appel d'un message :
$sError = $oloc -> getMsg ('errors', 'failed_upload');

Changer une localisatioon est simple (ou en ajouter une plutôt ) :
on crée le dossier : locales/ouzbeque
On y copie les 3 fichiers xml , et on modifie les valeurs :

<doc_constants>Constants</doc_constants>
=>
<doc_constants>ktabebkgalkl</doc_constants>
(désolé, mon ouzbèque n'est pas terrible...)

Et on ajoute la le choix de l'ouzbeque dans le formulaire. C'est tout. Le package est localisé en ouzbeque.

lundi 14 août 2006 à 18:51:14 | Re : Plusieurs langues pour un site

YEBOKOLO

bonjour
tu peux aussi tiliser un fichier langue du genre ci-après :

code :
<?php
$lang = array();
$lang[0]['fr'] = 'Nom du Serveur*';
$lang[0]['en'] = 'Name of the server*';
$lang[1]['fr'] = 'Nom de l\'utilisateur*';
$lang[1]['en'] = 'Name of user*';
$lang[2]['fr'] = 'Mot de passe';
$lang[2]['en'] = 'Password';
?>

ensuite dans ton fichier index : tu inclus le code suivant :

<?php
session_start();
include('inc/langues.php');
include('inc/fonctions.php');
// gestion basique des langues
// basic management of the languages
// création de la variable de langue (1er chargement de la page)
// creation of the variable of language (1st loading of the page)
if(!isset($_SESSION['lg'])){
     //création et = à 'fr'
     $_SESSION['lg'] = 'fr';
}
else{
     if(!empty($_GET['lang'])){
       //switch
       switch($_GET['lang']){
         case 'fr':
              $_SESSION['lg'] = 'fr';
         break;
         case 'en':
         $_SESSION['lg'] = 'en';
         break;
       }
     }
}
// fin de la gestion des langues

en ensuite dans le même fichier tu mets deux liens pour changer de langue :

<!-- liens pour changer de langue -->
<!-- bonds to change language -->
<a href="index.php?lang=fr"><img height="20" width="25" border="0" src="drapeau francais.gif"></a>&nbsp;<b>FRANCAIS</b>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="index.php?lang=en"><img height="20" width="25" border="0" src="drapeau anglais.gif"></a>&nbsp;<b>ENGLISH</b>

et toujours dans le même fichier voici une utilisation des variables "langues" :

<!-- formulaire de connection -->
<!-- form of connection -->
<form name="connect" method="post" action="trait_connect.php">
<!-- champ concernant le serveur -->
<!-- field concerning the SGDB -->
    <input type="text" name="server" size="30">&nbsp;&nbsp;<b><?php echo $lang[0][$_SESSION['lg']]; ?></b>
<br><br>

bien entendu il faut ouvrir session_start() pour chaque fichier.
J'espère que c'est sufisemment clair et que cela pourra te servir.


Cette discussion est classée dans : site, langues, instant


Répondre à ce message

Sujets en rapport avec ce message

site multilangues [ par deric83 ] bonjour,je suis sur un site à faire en 4 langues.j'ai une page index avec le choix de la langue via clic sur un drapeau.(passage de lang via url).puis micropaiement et systéme d'instant gagnant. [ par naruto_harem ] Salut à tous et merci pour ce fabuleux site qui m'aide depuis des années dans mes petits scripts. Aujourd'hui j'ai décidé de vous écrire car je suis f modifier script instant gagnant 50euro a150euro urgent [ par anthony010 ] bonjour je cherche qlq1 capable de modifier un script instant gagnant voila je vous dit se que je veux j'ai un script instant gagnant prêt sauf que je envoyer un courriel en php [ par proluxon ] Bonjour, Je suis vraiment un débutant en PHP. Je voulais que mon site web envoie un mail directement, sans que Outlook ouvre automatiquement pour l'ut comment savoir les outils et les langages utilisés pour un site web donné? [ par sabrineisimm ] bonjour à tous, Ma question est peut être est un peu général et elle est n'est pas en relation direct avec le PHP [^^happy8] Mais je souhaite bien s Timeout sur inactivité [ par clementga ] Bonjour, J'ai un site fait en php, avec un système de login classique utilisant les variables de session. Mais je voudrais mettre un timeout sur l'i creer une boite mail [ par jbtv ] Bonjours a Tous, J'aurai voulu créer un boite mail personnel sur mon site dans la partie admin afin de pouvoir lire les message que l'on ma envoyer est ce que je peut utiliser 2 base de donnée au sein de meme site [ par moez17 ] la recherche est trés difficile au sein de site lorsque je lance la recherche trés longue et ce site est orienté au "agence de voyage" est ce que je p besoin d'un code html ou php pour mon site [ par hitchbal ] Bonjour à tous, désolé de vous déranger mais j'ai besoin d'un code pour mon site web. En effet j'aimerais que lorsque quelqu'un rempli un formulaire Création du site d'hébergement d'image avec acces membres [ par jbtv ] Bonjour à tous !!!! je suis simple amateur en php/sql et je souhaiterai créer un site d'hébergement d'image (gratuitement) quande je dit je souhai


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales