Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832

    Creare un sito multilanguage

    ciao gente.
    mi servirebbe un consiglio.
    devo creare un sito multilanguage e vorrei capire come fare usando le variabili.

    volevo fare una cosa tipo
    index.php
    Codice PHP:
    ...
    <?php
    echo $TESTO_INDEX
    ?>
    e poi da qualche parte fare:

    ita.inc.php
    Codice PHP:
    non_so_come_scrivere
    ...
    $TESTO_INDEX "ciao mondo" 
    [/php]

    eng.inc.php
    Codice PHP:
    non_so_come_scrivere
    ...
    $TESTO_INDEX "hello world" 
    grazie e

  2. #2
    Una cosa tipo
    codice:
    include($lingua.inc.php)
    Dopo aver controllato la lingua...
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  3. #3
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Puo' creare i file per le lingue da includere in cima a tutto a seconda della ligua selezionata dall'utente. Quindi ovviamente tutto dinamico e nulla di statico.
    poi vedi te che tipo di file usare per le lingue(php con define o su xml).

  4. #4
    una buona idea sarebbe di usare GETTEXT

    http://it2.php.net/manual/it/book.gettext.php

    Ma se vuoi qualcosa di meno elaborato, puoi usare la sessione per salvare la lingua in uso, fai così:

    cd Cartella principale

    Crei cartella Resources

    Crei 2 cartelle it ed en

    Crei un file lang.inc.php che importerai all'inizio di ogni file PHP

    il file farà:
    Codice PHP:
    session_start();

    if(!isset(
    $_SESSION['lang'])
        
    $_SESSION['lang'] = 'it';

    $lang $_SESSION['lang'];

    include(
    "Resourses/$lang/file.lang.php"); 
    Poi crei due file chiamati file.lang.php, uno nella cartella it ed uno nella en, dove semplicemente definisci delle variabili da richiamare con le echo.

    Per cambiare la lingua, crei il file actor.lang.php (magari in una sottocartella scripts) che non fa altro:

    Codice PHP:
    session_start();

    if(isset(
    $_GET['lang']) && $_GET['lang'] != '')
    {
       
    //Assicuriamoci che non possano fare injection di path
       
    $_SESSION['lang'] = str_replace("/""",  str_replace(".."""$_GET['lang']));
    }

    header("Location: /index.php"); 

  5. #5
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    ahahahaha
    ma allora caro atrorius questo è amore!

    mi segui eh!
    dovrò metterti nei ringraziamenti del sito!

    ad ogni modo come mi conviene scrivere la parte testuale, però?

    voglio dire, nei file "lang"

    come scrivo e dichiaro ogni stringa di testo?

  6. #6
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ecco come mi strutturerei io la gestione delle lingue.
    In pratica hai diversi file lingua tipo lang.it,lang.fr,lang.es.

    supponiamo che la mia pagina sia pippo.php

    Codice PHP:
    <?php
    // se è stata richiesta una lingua diversa imposta la sessione lang, sennò tiene la precedente 
    $lang=(isset($_GET['lang']))?$_GET['lang']:$_SESSION['lang'];
    $_SESSION['lang']=$lang;

    //carico il mio file di lingua in un array mutidimensionale
    $def_array=parse_ini_file("languages/lang.{$_SESSION['lang']}",true);

    // cerco l' indice dell' array uguale al nome della pagina attuale
    $my_page_ref=basename($_SERVER["PHP_SELF"],'.php');

    // ciclo le definizioni e creo delle costanti con i contenuti tradotti
    foreach($my_page_ref[$my_page_ref] as $key=>$traddefine($key,$trad);
    ?>
    un prospetto del file lang.en
    codice:
    [chisiamo]
    azienda   ="
    
    from 20 years of experience in the marketing, we offer uor products bla bla bla</p>";
    contattaci="<div>contact us! please fill in the form ad ask us every information you need</div>"
    
    
    [dovesiamo]
    mappa     ="
    
    you can find us in front of the Supermarket on the 7th Road</p>";
    contattaci="<div>contact us! please fill in the form ad ask us every information you need</div>"

    e nel codice della pagina chisiamo.php(per esempio)
    Codice PHP:
    echo "<div>".azienda."</div>" 
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  7. #7
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    ah ok quindi in ogni pagina devo ricaricare il vettore con solo le parti affini alla pagina in questione.
    devo però chiamare le pagine in modo che siano compatibili con le definizioni che do nelle "aree" della pagina lang.

    ok, proverò, grazie

  8. #8
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    perfetto!
    il sistema funziona.
    solo che avevi sbagliato qui:
    Codice PHP:
    // ciclo le definizioni e creo delle costanti con i contenuti tradotti
    foreach($my_page_ref[$my_page_ref] as $key=>$traddefine($key,$trad); 
    così funge:
    Codice PHP:
    foreach($def_array[$my_page_ref] as $key=>$traddefine($key,$trad); 


    grazie.

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ottimo

    è stato un ctrl+c e ctrl+v truffaldino

    ma il concetto era quello
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  10. #10
    interessante la proposta di dottwatson, al quale però faccio una domanda...

    Parsare un ini ogni volta, non comporta un carico eccessivo?
    Con un file di 4 righe ovvio che no, ma tipo avendo un file da 400 righe?

    Mi interessa perchè la tua soluzione sarebbe molto ordinata.

    Io attualmente uso un file, contenuto in una cartella:

    locale/it/locale.php
    locale/en/locale.php
    locale/de/locale.php

    In ogni local, ho una dichiarazione:

    $_LOCALE["nome_variabile"] = "Testo in lingua";

    Poi li recupero nelle varie funzioni (solo in quelle dove mi serve), usando un global $_LOCALE

    Come dicevo, sono quasi 400 righe
    ...::: DESIDERARE E' UMANO :::...
    ...::: POSSEDERE E' DIVINO :::...
    ...::: HAVE A NICE DAY :::...
    (¯`·.¸¸.->ĐĮ ĦΞŁŁ<-.¸¸.·`¯)
    http://www.djhellclub.com

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.