Ich muss i18n Text aus einer Datenbank abrufen. Die Standardsprache ist Englisch, es hat Text für alles. Aber die nicht-englischen Sprachen haben nicht unbedingt alle gewünschten Übersetzungen. Wenn eine nicht englische Übersetzung für eine bestimmte Entität/einen bestimmten Schlüssel nicht in der DB verfügbar ist, möchte ich, dass stattdessen der englische Text zurückgegeben wird. Also, Englisch ist die Fallback Sprache hier.Abrufen von i18n-Daten mit Fallback-Sprache
aussehen Die i18n Texttabelle wie so (PostgreSQL Dialekt):
CREATE TABLE translation (
id SERIAL PRIMARY KEY,
language_code CHAR(2) NOT NULL,
key VARCHAR(20) NOT NULL,
value TEXT NOT NULL,
CONSTRAINT translation_unique UNIQUE (language_code, key)
)
Die Daten dieser wie folgt aussehen:
INSERT INTO translation
(language_code, key, value)
VALUES
('en', 'foo', 'foo in English'),
('nl', 'foo', 'foo in Nederlands (Dutch)'),
('en', 'bar', 'bar in English')
Ich mag würde im Grunde die folgenden Pseudo-SQL-Abfrage tun:
(tatsächlich ist der 'nl'
Wert zu parametrieren)
Damit es gibt die folgenden:
+-----+---------------------------+ | key | value | +-----+---------------------------+ | foo | foo in Nederlands (Dutch) | | bar | bar in English | +-----+---------------------------+
Wie kann ich dies in einer einzigen SQL-Abfrage erreichen?
Die DB in Frage ist PostgreSQL, aber eine RDMBS-agnostische Art wäre nett.
Arbeiten auch in Oracle. Vielen Dank! –