Zum Inhalt springen
Anjunar/ DOCS

Sprachen und Abfragen

Mit fester Session-Sprache laden, bearbeiten, filtern und paginieren; Fallback gilt pro Feld.

Sprache

Sprache an die Session binden

Die Inhaltssprache ist für eine Session unveränderlich. Verwende für eine andere Sprache eine neue Session und für aktive Schreibzugriffe gewöhnliche verwaltete Properties.

Eine Titeländerung in einer Transaktion

Auf Deutsch laden, das gewöhnliche String-Feld bearbeiten und committen. Fehler zurückrollen und die Session immer schließen.

scala
val session = HibernateI18n.openSession(factory, "de") try val tx = session.beginTransaction() try val page = session.find(classOf[Page], pageId) page.title = "Hallo" tx.commit() catch case error: Throwable => if tx.isActive then tx.rollback() throw error finally session.close()
exact locale → language → fallbackLocale → defaultLocale
Die Suche gilt pro Feld. Ein fehlender Titel kann auf Fallback zurückgreifen, während ein anderes Feld weiterhin die aktive Sprache verwendet.
Eine Überschreibung entfernen

null entfernt die Überschreibung der aktiven Sprache. Refresh oder eine neue Session liest den Fallback; das Leeren des letzten Feldes entfernt die leere Übersetzungszeile.

Abfragen

Nach übersetzten Werten filtern und paginieren

HQL und Criteria arbeiten mit der sprachabhängig aufgelösten Property. Sortierung und Paginierung verwenden daher denselben übersetzten Wert wie das Laden.

Eine sprachgebundene HQL-Seite

Führe die Abfrage in einer sprachgebundenen Session und Transaktion aus. Aktive Sprache und Fallback bestimmen Prädikat und Reihenfolge.

scala
val pages = session.createQuery( "from Page p where p.title like :prefix order by p.title", classOf[Page]) .setParameter("prefix", "H%") .setFirstResult(0) .setMaxResults(10) .getResultList