Creare un sito multilingua con PHP

In questo articolo imparerai a creare un sito multilingua con il linguaggio PHP integrato manualmente in una pagina web, con un selettore di lingua dinamico e senza cambiamenti nell’URL del sito web e senza la creazione di più pagine HTML.

Sito multilingua PHP con selettore delle lingua

Gestire un sito web multilingua porta molti vantaggi in termini di traffico e utenti. Molti siti web creano contenuti in differenti lingua così da raggiungere il maggior numero di visitatori. Ti basti pensare ad un negozio e-commerce: uno con descrizioni in inglese, italiano e tedesco venderà sicuramente di più che con una sola lingua.

Convertire un sito e renderlo multilingua però non è semplice. Molti CMS come WordPress permettono di effettuare questa conversione tramite appositi plugin, che semplificano tutta la procedura e rendono tutto più facile, senza sapere come programmare.

Per altri invece, più tradizionalisti, questo passaggio è sicuramente più complesso e articolato, e necessitano conoscenze minime dei linguaggi di programmazione come PHP, oltre che a una buona dose di HTML.

Per tua fortuna, se sei arrivato in questa pagina ti aiuterò a convertire il tuo sito web in un sito multilingua in maniera più semplice e rapida, seguendo quelle poche istruzioni che ti descriverò qui di seguito.

Tengo inoltre a precisare che per seguire la guida non devi conoscere il linguaggio PHP, in quanto è già tutto pronto nel codice riportato (basta fare un copia e incolla o scaricare il file qui in basso).

Descrizione

Abbiamo adottato questo sistema di lingua nel nostro editor di codice online codewith.it, ti consiglio di dare un’occhiata per capire meglio il funzionamento.

selettore lingua

In breve, per creare un sito con differenti lingue selezionabili, senza creare numerose pagine HTML per ciascuna di esse, adopereremo un selettore HTML semplice che al click cambierà il file della lingua in quella scelta.

Per capire meglio, facciamo un esempio:

Immagina una pagina web o un articolo. Ogni parola/paragrafo è contenuta in una variabile PHP.
Il sito è tradotto in 3 lingue differenti (italiano, inglese e francese; italiano di default), quindi il sito avrà 3 differenti file PHP in cui sono contenute le traduzioni e le variabili.

Nel selettore HTML contenuto nella pagina saranno presenti 3 pulsanti, uno per ogni lingua.
Al click di uno di essi, il file PHP della lingua verrà cambiato con quello desiderato, sostituendo le variabili del file di default (italiano) con quelle desiderate.

Qui in esempio dinamico per visualizzare effetti simili:

Questo è un testo in italiano

Questo esempio è stato creato in JavaScript. Il risultato è molto simile ma ad ogni cambiamento avviene un refresh della pagina e non istantaneo.

SCARICA QUI la demo per il sito multilingua – DOWNLOAD

Procedura

Presta attenzione ad ogni passaggio o potresti imbatterti in errori e problemi.

Effettua un backup del tuo sito prima di procedere alle modifiche e adopera un web server locale con XAMPP per testare l’effettivo funzionamento.

Per procedere alla conversione semplice della pagina, inizia a tradurre i testi all’interno di appositi file .php con l’uso delle variabili. (scarica il file di dimostrazione per capire meglio).

Le variabili PHP dovranno essere ripetute per ogni file di lingua, con le rispettive traduzioni.

Ad esempio:

$TESTO = "Questo è un sito multilingua";
$TESTO = "This is a multilingual site";
demo sito multilingua

Crea tutte le variabili di cui avrai bisogno, traducendo ogni singola parola in tutte le lingue che vorrai integrare nel tuo sito.

Salva i file PHP delle lingue in una cartella /lang e rinominali in questo modo:

  • it.php
  • en.php
  • fr.php
  • ….

Crea una cartella specifica con tutti i file di lingua del sito (…/lang/it.php). Ricordati di aggiungere l’estensione .php ai file e non .html.

Nel secondo passaggio, aggiungi il codice PHP per il cambio dei file di lingua, prima del tag HTML <!DOCTYPE>.

<?php 
session_start();
if($_GET['lang']){
	$_SESSION['lang'] = $_GET['lang'];
	header('Location:'.$_SERVER['PHP_SELF']);
	exit();
}
switch($_SESSION['lang']){
  case "it":
        require('lang/it.php');		
    break;
 	case "en":
		require('lang/en.php');		
	break;
	case "fr":
		require('lang/fr.php');		
	break;		
	default: 
		require('lang/it.php');		
	}
?>

<!DOCTYPE html>
 <html>
	<head>
...

Modifica i percorsi dei file di lingua con quelli contenuti nel tuo sito.

Per il terzo passaggio, aggiungi ora i pulsanti per il cambio della traduzione. Puoi usare dei semplici button HTML o dei collegamenti <a>, in questo modo:

<a href="?lang=it">Seleziona lingua italiana</a>
<a href="?lang=en">Select English language</a>
<a href="?lang=fr">Sélectionnez la langue française</a>

Ora l’ultimo passaggio opzionale. Creiamo o modifichiamo il file .htaccess del sito aggiungendo delle specifiche istruzioni per la riscrittura degli URL.

Questo perché, seguendo la procedura descritta precedentemente, al cambio dal linguaggio nella pagina verrà aggiunta un’estensione index.php all’URL.

Possiamo evitarlo con il file .htaccess, aggiungendo queste poche righe in una posizione qualsiasi:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC]
RewriteRule ^ %1 [R=301,L]

Salva il file e carica tutto sul tuo server, locale o non. Ora gli URL dovrebbero rimanere invariati e senza alcuna estensione.

Fai dei test, aggiungi ulteriori traduzioni o ottimizza il selettore della lingua a tuo piacimento.

Scarica il file di dimostrazione che ti ho messo a disposizione in questa pagina. Potrai capire meglio il funzionamento del sito multilingua. Nel file compresso portai trovare anche delle icone/immagini aggiuntive, per rendere più gradevole l’estetica del menu della lingua.

SCARICA QUI la demo per il sito multilingua – DOWNLOAD

Leggi anche: Come bloccare l’accesso ad un file con htaccess

Iscriviti alla nostra Newsletter qui e seguici su Facebook per aggiornamenti!


Articoli recenti:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

CAPTCHA