Entity mapping
Declare translated fields and converted values while keeping their ordinary domain types.
Annotate the owning entity
@Localized declares the fallback policy; @Translation marks each property whose value belongs to a locale row. The parent has no column for that translated value.
A translated String
Use a UUID ID and consistent field access. A named translation column uses @Translation(column = ...).
JavaBean getter access is supported too. Keep the ID and translated members on the same access path; mixed access and @Column directly on @Translation fail at bootstrap.
Keep a typed value
A converted translated property must use a String database representation. Its TranslationField encoder and decoder must match the JPA converter.
A converted Markdown field
Add this member to Page with your Markdown type and converter, then install both fields together.