Free Core stores sparse translations in the shared content translation registry. The source Room, Amenity and Additional Service rows remain authoritative for IDs, slugs, prices, capacity, inventory, status and pricing types. Pro registers Additional Services and Room Policies only while the entitled module is active.
Add a translation
- Open Hotel Booking → Content Translations.
- Choose the entity type, item and target locale.
- Compare the source content and enter only the fields that need translation: Room name, type and description; Amenity name; or Service and Policy text when the corresponding Pro module is active.
- Save the sparse row and preview availability, Room Detail and Book Now in a private window.
Each field resolves independently: exact locale, language root, then source content. Empty translations therefore fall back safely instead of hiding a room. Rich text is sanitized with the same rules as source content. A resolved model is a presentation clone; the stored source model is not mutated.
At booking creation, the booking locale and localized policy or service lines are captured in immutable snapshots where applicable. Editing a translation later does not rewrite confirmation, email or invoice history. Deactivating Pro preserves saved rows but removes the Pro entity from the active editor.
Do not translate price values, dates, room IDs or external protocol keys. If a localized field is missing, record the locale and entity rather than duplicating the source record.