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.

Controlliamo ciclicamente il funzionamento dei link nei nostri articoli. Se noti dei link che non funzionano segnalacelo tra i commenti. Se hai apprezzato l'articolo considera l'idea di sostenere il blog anche con una piccola donazione. Grazie. Patreon / Ko-fi / Liberapay / Paypal

Lascia un commento

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