Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Sito multilingua in php e indicizzazione

    Salve ragazzi. Leggevo su pro.html.it che i siti multilingua devono avere i contenuti nella lingua specificata e tutto il resto che ne consegue. La mia domanda è la seguente. Visto che ho intenzione di creare un sito in php multilingua (inglese ed italiano) avevo pensato di servirmi di una variabile di sessione per indicare la lingua. In pratica non ci sarà una pagina di default per l'italiano ed una di def per l'inglese ma semplicemente una var che specificherà la lingua inserendo i contenuti di conseguenza. Come avverrà il posizionamento? E' sbagliato risolvere il problema multilanguage in questo modo? Se non sono stato chiaro ditemelo che vi spiego meglio il tutto.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  2. #2
    Anche io mi trovo ad usare lo stesso metodo.

    Ho messo come lingua di default l'inglese, ma se lo spider "clicca" l'url per cambiare lingua (tipo index.php?lang=en) si vede cambiare i contenuti? Il sito lo sto costruendo quindi non so cosa fanno i mdr in questo caso.

    L'utente appena clicca la bandierina italiana si ritrova i testi istantaneamente tradotti in italiano.

    Se la variabile è invisibile, lo spider penserà che la stessa pagina ha due contenuti diversi??

  3. #3
    IO ho fatto una cosa un po più fine sempre in php

    uso una classe che ti identifica il linguaggio del browser ed automaticamente si prende la lingua poi se tu la vuoi in inglese o in francese clicchi sul link e ci arrivi però come directory

  4. #4

  5. #5
    NEANCHE MORTO
    Codice PHP:
    class detect_language {
        var 
    $available_languages$accepted_language$detected_language;

        
    // Constructor
        
    function detect_language() {
          
    $this->available_languages = array(
            
    'bg'         => array('bg|bulgarian''bulgarian-win1251'),
            
    'ca'         => array('ca|catalan''catala'),
            
    'cs-iso'     => array('cs|czech''czech-iso'),
            
    'cs-win1250' => array('cs|czech''czech-win1250'),
            
    'da'         => array('da|danish''danish'),
            
    'de'         => array('de([-_][[:alpha:]]{2})?|german''german'),
            
    'en'         => array('en([-_][[:alpha:]]{2})?|english''english'),
            
    'es'         => array('es([-_][[:alpha:]]{2})?|spanish''spanish'),
            
    'fr'         => array('fr([-_][[:alpha:]]{2})?|french''french'),
            
    'it'         => array('it|italian''italian'),
            
    'ja'         => array('ja|japanese''japanese'),
            
    'ko'         => array('ko|korean''korean'),
            
    'nl'         => array('nl([-_][[:alpha:]]{2})?|dutch''dutch'),
            
    'no'         => array('no|norwegian''norwegian'),
            
    'pl'         => array('pl|polish''polish'),
            
    'pt-br'      => array('pt[-_]br|brazilian portuguese''brazilian_portuguese'),
            
    'pt'         => array('pt([-_][[:alpha:]]{2})?|portuguese''portuguese'),
            
    'ru-koi8r'   => array('ru|russian''russian-koi8'),
            
    'ru-win1251' => array('ru|russian''russian-win1251'),
            
    'se'         => array('se|swedish''swedish'),
            
    'sk'         => array('sk|slovak''slovak-iso'),
            
    'th'         => array('th|thai''thai'),
            
    'zh-tw'      => array('zh[-_]tw|chinese traditional''chinese_big5'),
            
    'zh'         => array('zh|chinese simplified''chinese_gb')
          );

          
    $this->accepted_language explode(','getenv('HTTP_ACCEPT_LANGUAGE'));

          
    $this->detected_language $this->getLanguage();
        }

            function 
    getLanguage() {
          if (empty(
    $this->detected_language)) {
            
    $this->detected_language 'en';
            
    $cnt 0;

            while (
    $cnt sizeof($this->accepted_language)) {
              
    reset($this->available_languages);

              while (list(
    $key$value) = each($this->available_languages)) {
                if ((
    eregi('^(' $value[0] . ')(;q=[0-9]\\.[0-9])?$'$this->accepted_language[$cnt]))) {
                  
    $this->detected_language $key;
                  break 
    2;
                }
              }
              
    $cnt++;
            }
          }

          return 
    $this->detected_language;
        }
      } 
    se poi ti serve il costruttore per istanziarla te lo posto

  6. #6
    ehm... si, ti scoccia spiegarmi come funziona?

    Anche in pvt se non interessa a nessun altro (il topic è un altro)

    Grazie

  7. #7
    alla fine della classe scrivi ancora questo e poi guarda la pagina :
    Codice PHP:
    $dl = new detect_language;

    echo 
    $dl->detected_language
    dunque l'oggetto : $dl->detected_language è la lingua del tuo browser

    Dunque supponendo che tu utilizzi un file di testo che chiami :

    testo_it.php per l'italiano
    testo_en.php per l'inglese

    allora fari poi un include "testo_$dl->detected_language.php";
    cosi avrai automaticamente la lingua che + ti interessa .

    Il problema potrebbe sussistere se il navigatore utilizza una lingua per cui tu non hai la traduzione mettiamo l'armeno = AM

    allora cosa farai prima di fare un include il file di testo :
    Codice PHP:
    $dl = new detect_language;

    if(
    $dl->detected_language=="it" or $dl->detected_language=="en" or $dl->detected_language=="de" or
    $dl->detected_language=="fr"){$lingua $dl->detected_language;}
    else
    {
    $lingua "en";}
    include 
    "testo_$lingua.php"
    Non vado oltre altrimenti spostano il 3d in area php

  8. #8
    A parte questa classe (che a me non piace perchè è un metodo troppo complicato da utilizzare, ti complichi la vita inutilmente e rallenti lo script) io avrei voluto sapere come si comporta lo spider se la lingua viene memorizzata in sessione! Certo, se utilizzando la sessione il sito non viene indicizzato allora il tuo metodo è ottimo! Magari se aprissimo un 3d in php potremmo approfondire lì l'uso della classe e le altre tecniche utilizzate dagli altri!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  9. #9
    grazie stefano3804, sei stato chiaro.

    Mi chiedevo però se non fosse una soluzione più elegante tenere un dominio per ogni lingua: .com per l'inglese e .it per ita (dove se la lingua del browser è ita vieni rediretto da .com a .it)

    Così però disperderei gli sforzi su due siti...

    L'altra soluzione sarebbe utilizzare il metodo che mi hai illustrato in coppia con url rewrite:

    sito.com/pagina.htm/en/
    sito.com/pagina.htm/it/

    oppure

    sito.com/en/pagina.htm
    sito.com/it/pagina.htm

    o ancora

    en.sito.com/pagina.htm
    it.sito.com/pagina.htm

    così i link e il pr si riferirebbero tutti allo stesso dominio (o i sottodomini vengono considerati come 2 domini e di fatto 2 siti diversi, e allora tanto vale usare lo stesso dominio con 2 estensioni?)

    Qual è la soluzione migliore secondo voi? Una di queste due, o una terza che non ho considerato?

  10. #10
    Ragazzi io non vorrei rompere ma mi farete chiudere il 3d se continuate così. La domanda non era come fare per ottenere un sito multilingua. Aprite un 3d in php e ne parliamo lì!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.