Creare un sito multilingua con PHP

Come rendere il proprio sito compatibile per la traduzione in più lingue differenti

Quando cominciamo con lo sviluppo di un nuovo sito internet ci conviene sempre pensare di renderlo multilingue, uno perché scriverlo in multilingue ha praticamente costo zero, secondo perché convertirlo in multilingue diventa molto più esoso in termini di tempo, e quindi di costo.

Cominciamo

Per prima cosa andiamo a creare nella root del nostro sito una cartella chiamandola come vogliamo, generalmente io la chiamo lang/, e all’interno andiamo a creare tanti file php, uno per ogni linguaggio. Cominceremo con l’italiano poi a lavoro finito ci basterà tradurre il singolo file.

Il file per la lingua italiana lo chiamo generalmente it.php perché non ho mai lavorato a siti particolarmente importanti. Voi potete chiamarlo come volete, anche it_IT.php oppure italiano.php, considerando che il formato it_IT è utile per siti di particolare importanza, che categorizzano una lingua anche in base al paese, come per esempio l’inglese che è leggermente differente in America o in Inghilterra, identificati con en_US o en_UK. Volendo con questo formato potete lavorare anche sulle forme dialettali italiane, come it_NA.php per il napoletano, it_RM.php per il romano, oppure it_MI.php per il milanese, e così via. Con una configurazione del genere divertirsi successivamente alla creazione del sito è un attimo.

Creiamo il nostro file dizionario

Come detto, creiamo nella root una cartella chiamanta lang/, e al suo interno alcuni file per lingue, chiamati it.php, en.php, de.php

root/lang/de.php
          en.php
          it.php

Apriamo per esempio, il file it.php e componiamolo più o meno come questo, per fare un esempio

<?php
$dictionary = [];
$dictionary['lang.lingua'] = "Italiano";
$dictionary['txt.header.benvenuto'] = "Benvenuto";
$dictionary['txt.header.modificaprofilo'] = "Modifica profilo";
$dictionary['button.profile.aggiornaprofilo'] = "Aggiorna profilo";
?>

poi facciamo quello inglese en.php

<?php
$dictionary = [];
$dictionary['lang.lingua'] = "English";
$dictionary['txt.header.benvenuto'] = "Welcome";
$dictionary['txt.header.modificaprofilo'] = "Edit profile";
$dictionary['button.profile.aggiornaprofilo'] = "Update profile";
?>

poi facciamo quello tedesco de.php

<?php
$dictionary = [];
$dictionary['lang.lingua'] = "German";
$dictionary['txt.header.benvenuto'] = "Willkommen";
$dictionary['txt.header.modificaprofilo'] = "Profil bearbeiten";
$dictionary['button.profile.aggiornaprofilo'] = "Profil aktualisieren";
?>

Se hai seguito la nostra lezione de Gli array in PHP della nostra guida, saprai già che gli indici di un array possono essere sia numerici, identificandone la posizione nell’array, sia alfanumerici. Noi dobbiamo identificare con dei label parlanti il testo che vogliamo utilizzare. Nel nostro caso il messaggio in italiano Benvenuto è identificato con il label txt.header.benvenuto. Questo label deve coincidere alla parola Benvenuto in tutte le altre lingue, e così per tutte le altre definizioni.

Integriamo le lingue nel sito

Questo lavoro va fatto nell’header. Aggiungere quindi nel file header.php del nostro sito il seguente codice

<?php
// Identifichiamo la lingua, e se non esiste
// impostiamola di default in italiano
$lang = $_GET['lang'];
if (!isset($lang) OR !file_exists("lang/{$lang}.php")) {
    $lang = "it";
}

// Includiamo il file del linguaggio per
// identifare l''array del dizionario
// e stampiamo la lingua selezionata
require("lang/{$lang}.php");
echo $dictionary['lang.lingua']."<br/><br/>";

// Aggiungo i link di cambio lingua
echo "Select your language:<br>";
echo "<a href='" . $_SERVER['PHP_SELF'] . "?lang=it'>Italiano</a> - ";
echo "<a href='" . $_SERVER['PHP_SELF'] . "?lang=en'>Inglese</a> - ";
echo "<a href='" . $_SERVER['PHP_SELF'] . "?lang=de'>Tedesco</a>";
?>

Richiamiamo i valori nel nostro sito

Per rievocare i valori del dizionario del nostro sito dobbiamo fare riferimento ai label che abbiamo impostato nel file dizionario. Per scrivere Benvenuto utilizzeremo $dictionary[‘txt.header.benvenuto’], per scrivere Modifica profilo utilizzeremo $dictionary[‘txt.header.modificaprofilo’], e così via, e il codice si occuperà di tradurre automaticamente il sito a seconda della lingua scelta.

Per aggiungere una nuova lingua ci basterà copiare un file già esistente chiamandolo con il riferimento della nuova lingua, e traducendo tutti i singoli comandi al suo interno, e il sito sarà automaticamente tradotto.

Sia chiaro che se aggiungiamo una nuova definizione di una lingua già esistente, questa va riprodotta in tutte le altre lingue.

Offrimi un caffè su ko-fi.com
Controlliamo randomicamente il funzionamento dei link nei nostri articoli. Nel frattempo, se dei link risultano corrotti segnalacelo tra i commenti, li correggeremo. Grazie.

Francesco

Fondatore e amministratore di Dummy-X dal 2007, condivido interessi, idee, progetti, e soluzioni informatiche. Non vendo prodotti, mi limito a descrivere tecnologie e a mettere a disposizione gli strumenti adatti per poter realizzare idee. Tutto ciò che scrivo è frutto della mia esperienza lavorativa e della mia voglia di imparare. Da sempre studio l'informatica in tutte le sue angolazioni (software, hardware, reti e sicurezza) e negli ultimi anni mi sono specializzato nello sviluppo di web applications. Sono sempre aperto a nuove sfide e alla ricerca e conoscenza delle nuove tecnologie.
 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *