PHP Portal » PHP Forum » Entwicklung » MySQL, PostgreSQL und SQL-konforme Datenbanken » Mehrsprachigkeit - Fallback

[MySQL] Mehrsprachigkeit - Fallback 

von
Besucher
Zitat
Hi,

kann mir jemand bei einer SQL-Abfrage helfen?
Ich möchte ein Projekt mehrsprachig machen, und habe mir dafür Tabellen angelegt

sprache (id, sprachname) - enthält (1,'deutsch'), (2, 'englisch')
texte (id, name, memo) - die verschiedenen Texte für das System (über den unique "name" abrufbar)
texte_sprache (sprache_id, texte_id, inhalt)

Wie muss dafür die SQL Anweisung aussehen, dass er automatisch den deutschen Text anzeigt,
wenn kein englischer Text vorhanden ist?
Meine aktuelle Anweisung sieht so aus:

Code
1
2
3
4
5
6
select t.name, ts.inhalt from texte t inner join text_sprache ts on ( it.id = ts.texte_id ) inner join sprache s on ( ts.sprache_id = s.id ) where t.name = 'gesuchter Wert' and s.sprachname = 'deutsch'

Wie bekomme ich da jetzt das Englisch mit rein???

:help:

Werbung

Re: Mehrsprachigkeit - Fallback 

von
Member
Zitat
sollte es nicht andersherum heißen? also erst die sprachversion nutzen, welche der user gewählt hat und erst dann auf den "default"-wert englisch wechseln?

wie auch immer ... versuche doch die sprach-tabelle mit sich selber zu join'en.

in der ersten spalte soll die wunsch-sprachversion des users hinterlegt werden, in der zweiten spalte die alternative. ist in der ersten spalte kein wert (evtl NULL), kannst du die alternative nutzen.

Re: Mehrsprachigkeit - Fallback 

von
the Boss
Zitat

Code
1
2
3
4
5
6
7
select t.name, IF( ISNULL( ts.inhalt ), ts2.inhalt, ts.inhalt ) AS inhalt from texte t left join text_sprache ts on ( it.id = ts.texte_id AND ts.sprache_id = 'Nummer gesuchte Sprache' ) inner join text_sprache ts2 on ( it.id = ts2.texte_id AND ts2.sprache_id = 'Nummer Fallbacksprache' ) where t.name = 'gesuchter Wert'

sollte funktionieren

Re: Mehrsprachigkeit - Fallback 

von
Besucher
Zitat
wow, danach habe ich schon lange gesucht. Hast Du vielleicht auch noch eine Möglichkeit mit mehreren Alternativen.

if wert1 isnull dann wert2 wenn auch der isnull dann wert3 und wenn der isnull dann wert4

Besten Gruß

Schnellantwort

ähnliche Themen