Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Gigantesco dilemma su sito multilingua

    Ciao a tutti ragazzi ho un dubbio gigantesco.

    Stamattina ho deciso di rendere "multilingua" uno dei miei siti web.
    Con la malsana idea di non voler visualizzare il classico "&lang=it" o simili,ho ben pensato di fare tutto con i cookie.
    Ora praticamente sia che la lingua sia inglese,sia che sia italiana l'url è lo stesso,uguale identico.
    Ora mi chiedo,se la lingua di default è l'italiano...gli spider non vedranno mai il lato inglese?
    Spero di sbagliare ma io credo proprio che sia cosi'...e che devo ricominciare da capo...vi prego illuminatemi!

  2. #2

    Re: Gigantesco dilemma su sito multilingua

    Originariamente inviato da lucif3r
    devo ricominciare da capo...
    Esatto.

    E quando lo fai, NON usare un parametro nella query string (es. lang=it), utilizza mod_rewrite e crea degli URL nuovi (es. /it/questa-pagina-qui.php) ed ed univoci (magari con canonical URL).

  3. #3
    Grazie per la coltellata al cuore

    Cmq per il mod rewrite non c'e' problema,il problema è farlo senza utilizzare sessioni o cookie...
    come faccio per portarmi dietro sempre la variabile it o en ?
    Mi tocca appenderla a mano a tutti gli url? Mi ci vuole un mese

  4. #4
    Originariamente inviato da lucif3r
    Cmq per il mod rewrite non c'e' problema,il problema è farlo senza utilizzare sessioni o cookie...
    come faccio per portarmi dietro sempre la variabile it o en ?
    Mi tocca appenderla a mano a tutti gli url? Mi ci vuole un mese
    Creati una funzione che, a partire dall'url attuale, ne generi uno con il "parametro" della lingua. All'inizio dello script, esegui il parsing di REQUEST_URI ed estrai la lingua della pagina.

  5. #5
    Ok grazie filippo per le dritte,ora ho rifatto tutto basato solo sulla variabile nell'url...ma ora ho un problema insormontabile
    Ovviamente la variabile che appendo è la solita lang=it lang=en etc.etc.
    Ma ovviamente voglio fare in modo che al posto della variabile ci sia qualcosa del tipo:
    /it/pagina.php
    /en/pagina.php

    Niente di piu' facile,apro .htaccess e me lo sistemo a dovere....e qui nasce il problema....lo apro e.... VVoVe: VVoVe: il file non usa mezza delle regole che conosco...ma solo un maledetto file chiamato loader.php
    Vi posto il codice dell'htaccess:

    codice:
    # Comment the 2 lines below if the server returns 500 errors!
    Options -Indexes
    Options +FollowSymLinks
    
    #Uncomment following lines if you want to use image caching!
    #<IfModule mod_expires.c>
    #  ExpiresActive On
    #  ExpiresDefault A1209600
    #  ExpiresByType text/html A1
    #</IfModule>
    
    # Uncomment following lines if Apache doesnt support MultiViews!
    <IfModule mod_rewrite.c>
        RewriteEngine On
    	
    	# Uncomment the 2 lines below if you are using www.domain.com
    	# as the baseurl for the site and users access your site 
    	# via domain.com (THIS IS REQUIRED FOR JQUERY TO WORK)
    	#RewriteCond %{HTTP_HOST} ^domain.com [NC]
    	#RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 
    
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule .* loader.php [L,QSA]
    </IfModule>
    
    # Edit below lines and set to
    # ErrorDocument CODE /RELATIVE/error.php
    # If the script is installed in the default document
    # root then relative is null.
    #ErrorDocument 401 /error.php
    #ErrorDocument 403 /error.php
    #ErrorDocument 404 /error.php
    Non demordo e apro il file loader.php

    Codice PHP:
    <?php
    //die('Only enable this script if you dont have support for MultiViews');
    $relative '';
    $loaders  = array(
        
    'ajax' => 1,
        
    'album' => 1,
        
    'albums' => 1,
        
    'blog' => 1,
        
    'blogs' => 1,
        
    'captcha' => 1,
        
    'categories' => 1,
        
    'community' => 1,
        
    'confirm' => 1,
        
    'error' => 1,
        
    'feedback' => 1,
        
    'feeds' => 1,
        
    'game' => 1,
        
    'games' => 1,
        
    'index' => 1,
        
    'invite' => 1,
        
    'loader' => 1,
        
    'login' => 1,
        
    'logout' => 1,
        
    'lost' => 1,
        
    'mail' => 1,
        
    'notice' => 1,
        
    'notices' => 1,
        
    'photo' => 1,
        
    'requests' => 1,
        
    'search' => 1,
        
    'signup' => 1,
    );

    $query      = ( isset($_SERVER['QUERY_STRING']) ) ? $_SERVER['QUERY_STRING'] : NULL;
    $request    str_replace($relative''$_SERVER['REQUEST_URI']);
    $request    str_replace('?' .$query''$request);
    $request    explode('/'trim($request'/'));
    if (isset(
    $request['0'])) {
        
    $page   $request['0'];
        if (isset(
    $loaders[$page])) {
            require 
    $page'.php';
        } else {
            
    header('HTTP/1.0 404 Not Found');
              die();
        }
    } else {
        
    header('HTTP/1.0 404 Not Found');
        die();
    }
    ?>
    altro infarto!!! VVoVe:

    Datemi un indizio su quello che devo fare per pietà

  6. #6
    Sono le 3.56 ...ma ce l'ho fattaaaaaaaa!
    Il file loader.php si è rivelato moooolto utile dopo aver compreso che cosa faceva

    Ecco cosa ho fatto:

    Ho modificato il loader.php in questo modo (vi posto solo la parte interessata)
    Codice PHP:
    $query      = ( isset($_SERVER['QUERY_STRING']) ) ? $_SERVER['QUERY_STRING'] : NULL;
    $request    str_replace($relative''$_SERVER['REQUEST_URI']);
    $request    str_replace('?' .$query''$request);
    $request    explode('/'trim($request'/'));
    if (isset(
    $request['0'])) {
        if (
    $request[0] == "en") {
        if (isset(
    $request['1'])) {
        
    $page   $request['1'];
        if (isset(
    $loaders[$page])) {
            require 
    $page'.php';
        } else {
            
    header('HTTP/1.0 404 Not Found');
              die();
        }
        }else{
            require 
    'index.php';
            }
        }else{
        
    $page   $request['0'];
        if (isset(
    $loaders[$page])) {
            require 
    $page'.php';
        } else {
            
    header('HTTP/1.0 404 Not Found');
              die();
        }
        }
    } else {
        
    header('HTTP/1.0 404 Not Found');
        die();

    In questo modo senza bisogno di modificare l'htacces lo script mi accetta il /en/ davanti al resto dell'indirizzo.
    Se la lingua è italiana gli indirizzi rimangono invariati com'erano prima (e ci tenevo a fare questo),se è inglese hanno il formato www.miosito.com/en/categoria/pagina/.

    Poi mi sono creato un config.lang incluso nel config principale in questo modo:
    Codice PHP:
    $indirizzo $_SERVER['REQUEST_URI'];
    $indirizzo str_replace("/","",$indirizzo);
    $indirizzo substr($indirizzo,0,2);
    if (
    $indirizzo == 'en') {
    $lingua 'en';
    include 
    $config['BASE_DIR']. '/lang/english.php';
    }else{
    $lingua '';
    include 
    $config['BASE_DIR']. '/lang/italiano.php';

    Dopo di che,utilizzando smarty come template engine gli ho passato la variabile lingua nel formato {$lg}.
    Mi è bastato aggiungere {$lg} di fronte a tutti i link del mio sito e magiaaaa funziona tutto e dovrebbe anche essere ottimo per i motori

    Sicuramente dovro' aggiungere qualche ulteriore condizione per un controllo maggiore ma alla fine il piu' e' fatto.

    Ah,per redirezionare automaticamente i visitatori in base alla lingua del browser utilizzo il classico header() o meglio qualcosaltro?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.