2017-09-06 1 views
0

Salut tout le monde et tks à l'avance pour votre aide! J'ai un site multilenguel fait d'une manière similaire à this example. Tout fonctionne très bien, mais maintenant je veux que l'URL change en fonction de la langue sélectionnée. Par exemple, si ma page est appelée perfil.php lorsque je sélectionne languague anglais, devrait être profile.php, et tous les liens sur le web devrait se traduire en anglais aussi. Je surfais sur d'autres questions mais la majorité offre une solution via htaccess. Cela devrait fonctionner, mais j'ai besoin de stocker cette configuration (ou traductions) dans ma base de données afin que l'utilisateur puisse la changer quand il le souhaite.PHP Dynamic URL dans Multilengual Web

Des idées? Merci encore!

+0

vous devriez enregistrer ces noms et utiliser quand lang est changé –

Répondre

1

Vous pouvez utiliser des constantes dans certains fichiers appelés fichiers de langue, puis besoin/les inclure par langue sélectionnée:

english.php

const PROFILE = "profile"; 

spanish.php

const PROFILE = "perfil"; 

fichier principal :

require $language_selected . ".php"; 
echo '<a href="' . PROFILE . '.php">'; 
+0

Merci Amir. Cette solution fonctionnera pour les liens. Mais quelque chose m'a manqué d'expliquer dans ma question est la suivante: la seule page qui existe vraiment est "profile.php", donc, quand je mets l'URL ou le lien "perfil.php" doit me montrer le contenu profile.php (sans utiliser htaccess). Existe-t-il un moyen que vous connaissez pour accomplir cela? –

+0

Si vous ne pouvez pas modifier htaccess, vous devez créer perfil.php et exiger/include le contenu de profile.php! –

+1

vous pouvez utiliser des routeurs pour le faire aussi! j'aime: altorouter.com –

1

Cette partie devrait être un commentaire (mais c'est un peu long)

La méthode décrite dans le lien que vous avez fourni est un moyen raisonnable d'implémenter le choix du langage, mais une mauvaise façon de détecter le choix.

Votre navigateur indique déjà aux serveurs la ou les langues qu'ils pensent should respond in. Et la plupart des serveurs Web ont un mécanisme pour multiplexing different language content. Cependant, ce dernier moyen de câblage hard-le choix du navigateur sans fournir un moyen facile de contourner le comportement.

L'approche que je l'ai utilisé avant est quelque chose comme ceci:

$use_lang='en-GB'; 
if (isset($_COOKIE['userlang']) 
    && is_language_supported($_COOKIE['userlang'])) { 
    $use_lang=$_COOKIE['userlang']; 
} else if ($proposedlang=supported_lang_in($_SERVER['Accept-Language'])) { 
    $use_lang=$proposedlang; 
} 

function supported_lang_in($str) 
{ 
    $l=array(); 
    $opts=explode(',', $str); 
    foreach ($opts as $v) { 
     list($p, $weight)=explode(';', $v); 
     if ($weight) { 
      list($dummy, $weight)=explode('=', $weight); 
      $weight=float($weight); 
     } 
     if (!$weight) { 
      $weight=1.0; 
     } 
     if (isset($l[$weight])) { 
      $weight-=0.001; 
     } 
     $l[$weight]=$p; 
    } 
    krsort($p); // preferred first 
    foreach ($p as $proposed) { 
     if ('*'==$proposed) { 
      return false; 
     } 
     if (is_language_supported($proposed)) { 
      return $lang; 
     } 
    } 
    return false; 
    } 

Passons maintenant au problème que vous avez parlé ....

Le maintien des URL différentes pour référencer le même contenu puis déréférencer la langue dans le contenu semble une solution très byzantine au problème. Non seulement vous devez mapper l'entrée à l'URL, mais vous devez réécrire toutes les URL dans la sortie à la représentation appropriée.

Tout en ayant sémantiquement URL significatives est un atout supplémentaire, allant à la grande longueur pour adapter ces dynamiquement peut-être pas pas la meilleure utilisation de votre temps.

+0

"Tout en ayant des URL sémantiquement significatives est un bonus certain, aller beaucoup de temps pour les adapter dynamiquement n'est peut-être pas la meilleure utilisation de votre temps." >> Je suis d'accord avec ça mais ... quelle est l'alternative pour résoudre mon problème? Tks! –

+1

Je laisserais les URL dans la langue par défaut - à quand remonte la dernière fois que vous avez navigué autour d'un site en tapant des URL? Ils ne sont même pas visibles sur la plupart des clients mobiles. – symcbean

+0

Bon point à ce sujet, mais qu'en est-il du référencement du site? –