Salve a tutti,
sto realizzando un applicazione multilingua e sto adottando la struttura DB di seguito:
codice:
CREATE TABLE article (
id INT UNSIGNED AUTO_INCREMENT NOT NULL,
last_update INT UNSIGNED NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE article_data (
article_id INT UNSIGNED NOT NULL,
language_id INT UNSIGNED NOT NULL,
description TEXT NOT NULL,
name VARCHAR(128) NOT NULL,
INDEX(article_id, language_id)
);
CREATE TABLE languages (
id INT UNSIGNED AUTO_INCREMENT NOT NULL,
language CHAR(2) NOT NULL,
country CHAR(2) NOT NULL,
INDEX (language, country),
PRIMARY KEY(id)
);
Questo modello l'ho trovato proprio qui sul forum e continuando le ricerche sul web ho visto che si tratta comunque di una soluzione ormai ampiamente applicata e logicamente ben fatta.
Il mio dubbio riguarda la fase di estrazione dei dati.
Non so come scrivere la query per ottenere i dati degli articoli in una lingua di default (es. italiano) se non sono presenti nella lingua con cui l'utente sta visualizzando il sito.
Parto da questa query base:
codice:
SELECT ....
FROM article_data data, languages lang, article art
WHERE art.id = [$article_id]
AND lang.id = [$lang]
AND data.article_id = art.id
AND data.language_id = lang.id
Con questa query se l'articolo richiesto non è presente nella lingua selezionata la query restituisce un insieme vuoto. Secondo voi come posso manipolarla per restituire comunque il risultato in una lingua che definisco di default?