Fork me on GitHub




(1) 2 »


Site bilingue xlanguage XOOPS_URL
Régulier
Inscrit: 19/01/2007 20:53
Messages: 144
Bonjour à tous.
Pour un futur développement de site internet bilingue, je souhaiterai avoir l'avis de connaisseurs du module Xlanguage et de l'API xoops afin de savoir si ce que j'envisage d'implémenter est possible.

Xlanguage fonctionne à merveille, cependant pour obtenir un référencement dans plusieurs langues du même site, il serai beaucoup plus efficace que l'url reflete la langue.

Ma question est la suivante:

Est il envisageable de modifier le module Xlanguage afin qu'il ne détecte plus la langue à afficher en fonction de l'utilisateur mais de l'url.

Par exemple www.example.com -> affiche l'anglais
et www.example.fr -> affiche le francais

Il me semble que ca serai envisageable en faisant modifier la valeur de XOOPS_URL et en apportant les modification s nécessaires à xlanguage.

Qu'en pensez vous?
Des volontaires pour me donner un coup de main?

Posté le : 06/10/2007 15:32
Partager Twitter Partagez cette article sur GG+
Re: Site bilingue xlanguage XOOPS_URL
Supporter Xoops
Inscrit: 09/01/2005 13:37
De Breizh
Messages: 16972
Bonjour,

Ce module est développé par phppp (également lui en leader pour le core de xoops), tu peux lui soumettre ta suggestion sur xoopsforge.com

@+

ps : tu feras comment ensuite pour les liens internes (ou externes) vers ton site ?

Posté le : 06/10/2007 16:57

La connaissance s'accroît quand on la partage ...
Partager Twitter Partagez cette article sur GG+
Re: Site bilingue xlanguage XOOPS_URL
Xoops accro
Inscrit: 25/02/2004 00:20
De Région parisienne
Messages: 2526
XOOPS_URL est défini dans le fichier mainfile.php et l'initialisation de xlanguage dans le fichier common.php.
Et l'ordre du chargement des fichiers est le suivant (en résumé) :

index.php
    
+---- header.php
    
+---- mainfile.php
        
+---- common.php
        
+---- api.php (xlanguage)
    +---- 
footer.php

Posté le : 06/10/2007 17:09
Partager Twitter Partagez cette article sur GG+
Re: Site bilingue xlanguage XOOPS_URL
Régulier
Inscrit: 19/01/2007 20:53
Messages: 144
Citation :

tu feras comment ensuite pour les liens internes (ou externes) vers ton site ?


J'imagine la chose de cette manière (je ne sais pas si cela peux fontionner ou pas).

Si l'utilisateur est sur une page dont l'url commence par www.example.com, on definit XOPS_URL ainsi:
define(XOOPS_URL, 'http://www.example.com');

Si l'utilisateur est sur une page don l'url commence par http://www.example.fr, on definit XOPS_URL ainsi:
define(XOOPS_URL, 'http://www.example.fr');

Ainsi, les liens fonctionneraient normalement (évidemment si ils utilisent XOOPS_URL pour être définis.

En substance, il y à deux éléments distincts:
1) On definit XOOPS_URL en fonction de l'url de base demandée (ainsi les liens fonctionnent)

2) On modifie xlanguage pour que la traduction se fasse sur la base de l'url. (.com ou.fr,...)

Je vais soumettre cette requete à phppp en espérant qu'il trouve le temps d'y répondre.

Posté le : 06/10/2007 18:22
Partager Twitter Partagez cette article sur GG+
Re: Site bilingue xlanguage XOOPS_URL
Régulier
Inscrit: 19/01/2007 20:53
Messages: 144
Pour le point 1 j'ai testé et cela fonctionne parfaitement.
Notez cependant qu'il faut que php soit installé en tant que module d'apache.

Voici la modification du mainfile.php

// XOOPS Virtual Path (URL)
// Virtual path to your main XOOPS directory WITHOUT trailing slash
// Example: define('XOOPS_URL', 'http://www.example.com');
[color=990000]$user_headers apache_request_headers()[/color];
define('XOOPS_URL', [color=990000]'http://'.$user_headers[Host][/color]);


Avec ce code, si l'on accède au site via l'url www.example.com, tous les liens commencent par www.example.com
et si l'on accède au même site via l'url www.example.fr , tous les liens commencent par www.example.fr

Il me faut maintenant modifier xlanguage pour que le choix de la langue à afficher se fasse en fonction de l'url.

Posté le : 08/10/2007 02:15
Partager Twitter Partagez cette article sur GG+
Re: Site bilingue xlanguage XOOPS_URL
Xoops accro
Inscrit: 25/02/2004 00:20
De Région parisienne
Messages: 2526
Citation :

smart a écrit:
Pour le point 1 j'ai testé et cela fonctionne parfaitement.
Notez cependant qu'il faut que php soit installé en tant que module d'apache.


Il serait peut-être préférable d'utiliser : getenv("HTTP_HOST")

define('XOOPS_URL''http://www.' getenv("HTTP_HOST") );


En suite dans le fichier modules/xlanguage/api.php, tu dois pouvoir ajouter un test

// ligne 58
$host getenv("HTTP_HOST");
if( 
$host "example.com" )    {
    
$xlanguage["lang"] = "english";
}else{
    
$xlanguage["lang"] = "french";
}


Ca ne règle pas le problème général, mais ton cas particulier

Posté le : 08/10/2007 09:31
Partager Twitter Partagez cette article sur GG+
Re: Site bilingue xlanguage XOOPS_URL
Régulier
Inscrit: 19/01/2007 20:53
Messages: 144
Ok ca fonctionne nickel.
Je récapitule le hack avant de tenter une réelle modification du module prenant en compte cette possibilité.

Pour avoir une site web multilingue (avec xlanguage) avec url distinctes pour chaque langue et ainsi être correctement référencé, il vous faut procéder comme suit:

Modifiez votre mainfile.php ainsi:

Ligne 40:
// XOOPS Virtual Path (URL)
// Virtual path to your main XOOPS directory WITHOUT trailing slash
// Example: define('XOOPS_URL', 'http://www.example.com');
$http_host getenv("HTTP_HOST");
define('XOOPS_URL''http://'.$http_host);


Modifiez le fichier /modules/xlanguage/inclule/function.php ainsi:

Ligne 109:
function xlanguage_detectLang()
{
    global 
$available_languages,$_SERVER;

    
// if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
        // $HTTP_ACCEPT_LANGUAGE = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    // }

    // if (!empty($_SERVER['HTTP_USER_AGENT'])) {
        // $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
    // }

    
$lang '';
    
$xoops_lang ='';
    
// 1. try to findout user's language by checking its HTTP_ACCEPT_LANGUAGE
    // variable
    // if (empty($lang) && !empty($HTTP_ACCEPT_LANGUAGE)) {
        // $accepted = explode(',', $HTTP_ACCEPT_LANGUAGE);
        // $acceptedCnt = count($accepted);
        // reset($accepted);
        // for ($i = 0; $i < $acceptedCnt; $i++) {
            // $lang = xlanguage_lang_detect($accepted[$i], 1);
            // if(strncasecmp($lang,'en',2)){
                // break;
            // }
        // }
    // }
    // 2. try to findout user's language by checking its HTTP_USER_AGENT variable
    // if (empty($lang) && !empty($HTTP_USER_AGENT)) {
        // $lang = xlanguage_lang_detect($HTTP_USER_AGENT, 2);
    // }
    // 3. If we catch a valid language, configure it
    // if (!empty($lang)) {
        // $xoops_lang = $available_languages[$lang][1];
    // }

    //Hack by smart
    
$http_host getenv("HTTP_HOST");
    if (
$http_host=='www.example.com'){ //your english url
    
$xoops_lang 'english';
    }
    elseif (
$http_host=='www.example.fr'){  //your french url
    
$xoops_lang 'french';
    }
    else {
    
$xoops_lang 'english';
    }


    return 
$xoops_lang;
}


Merci Dugris

J'espère que cette modification vous sera utile.

Posté le : 08/10/2007 12:28
Partager Twitter Partagez cette article sur GG+
Re: Site bilingue xlanguage XOOPS_URL
Régulier
Inscrit: 19/01/2007 20:53
Messages: 144
Merci également à Phppp contacté par msn qui m'a donné un rapide coup de main.

Posté le : 08/10/2007 12:31
Partager Twitter Partagez cette article sur GG+
Re: Site bilingue xlanguage XOOPS_URL
Xoops accro
Inscrit: 25/02/2004 00:20
De Région parisienne
Messages: 2526
une solution plus générique pourrait être :

1/ ajouter un champs (contenant getenv("HTTP_HOST") )dans la table xlanguage_base
2/ écrire le fichier admin/xlanguage.php avec cette nouvelle valeur.
3/ retourner la langue en fonction de la valeur du nouveau champs (si il existe ou n'ext pas vide)

A sugérer à PHPPP

Posté le : 08/10/2007 12:47
Partager Twitter Partagez cette article sur GG+
Re: Site bilingue xlanguage XOOPS_URL
Régulier
Inscrit: 19/01/2007 20:53
Messages: 144
Je pensait réaliser la chose de cette manière:

Rajouter une option dans les préférences pour choisir le mode de détection de la langue:

- traditionnel
- basé sur l'url

Rajouter un onglet et une table pour gérer les correspondances langue <-> url

Posté le : 08/10/2007 13:07
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

61 Personne(s) en ligne (44 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 61 | Plus ...