# Changelog: 1.29.0

Rentals and search items state their counts as numbers, so a website no longer reads them out
of translated text. The v10 texts read correctly in English and German: counts in their plural
form, rating words with one meaning per band in both languages, labels instead of key names, a
translated property type and "no insurance" option. A text missing in the requested language
comes back in German and is marked as German.

## Added

- `capacity` on `RentalGetRentalsOutputItem` and `SearchSearchOutputItem` (v10): `maxGuests`,
  `maxAdults`, `bedrooms`, `bathrooms`, `rooms` and `livingAreaSqm`, as numbers. They come from
  the room summary and `attributes.squareMeters` and do not depend on the locale or on
  translations. A count the backend does not state, or states as 0, is omitted; `capacity` is
  omitted when no count is stated.
- The type `RentalCapacity`, the schema `RentalCapacitySchema` and the helper
  `toRentalCapacity`, which builds `capacity` from raw counts for an adapter.
- `toCountLabelKey(labelKey, count)`: the key of a count's label in its plural form
  (`<base>.count.one` for 1, `<base>.count.other` otherwise).
- `toReviewClassification(rating)`: the rating band (`excellent` … `poor`) of an average rating.
- `toNoInsuranceOption({ translations, locale, offered })` and
  `toNotOfferedInsurance({ translations, locale })`: the translated `none` insurance choice, next
  to offers or without them.
- A test that fails when a label or option the v10 metadata renders has no text in de-DE or
  en-US, or its text is the key or the key name.
- `descriptionFallbacks` on rentals and their `property`: the description fields served in
  another language than requested, with that language (`{ "description": "de-DE" }`). Omitted
  when every text is in the requested locale. The type `RentalOrPropertyDescriptionFallbacks`.

## Changed

- v10: a description field without a text in the requested locale takes its German text and
  is listed in `descriptionFallbacks`. Before, the field was omitted, so an English rental
  without English texts had no description at all. This applies to every reader of v10 rentals,
  the owner portal included: an English owner page shows the German texts where no English
  ones exist.
- v10 counts render in the plural form of their number: "1 guest", "2 bedrooms", "1 Gast",
  "4 Gäste", in `roomSummary` and `highlights`. A label without `.count.one` / `.count.other`
  keys keeps its plain label.
- v10 `property.propertyType` is translated through `Property.propertyType.option.*`
  ("Apartment complex", "Apartmentanlage") instead of the enum (`APARTMENT_COMPLEX`).
- v10 `valleyViewType` uses its own label key, `RentalAttributes.valleyViewType.label`, in
  attributes, highlights and filters, instead of the valley view label.
- The review summary reads `reviews.summary.count.one` for one rating ("1 review"), falling
  back to `reviews.summary.count`.
- v10 quotes: the `none` insurance option reads "Keine Versicherung" for de-DE and "No
  insurance" for en-US, from the new key `insurance.notOffered.label`, in `quote`,
  `selectInsurance`, `createInsurancePreContract` and `selectInsurancePayment`. It was the
  English "No insurance" in every locale. `translationOverrides` can change it.
- Changed and new texts (a site that overrides one of these keys with `translationOverrides`
  keeps its override):

| Key                                                                                                                          | Locale        | Before                                               | Now                                                                                                                |
| ---------------------------------------------------------------------------------------------------------------------------- | ------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `RoomSummary.<field>.count.one` / `.other` (new; `maxPersons`, `maxAdults`, `bedrooms`, `bathrooms`, `rooms`, `livingrooms`) | de-DE         | —                                                    | Gast / Gäste, Erwachsener / Erwachsene, Schlafzimmer, Badezimmer, Zimmer, Wohnzimmer                               |
| same                                                                                                                         | en-US         | —                                                    | guest / guests, adult / adults, bedroom / bedrooms, bathroom / bathrooms, room / rooms, living room / living rooms |
| `insurance.notOffered.label` (new)                                                                                           | de-DE / en-US | — (hard-coded "No insurance" on v10 in every locale) | Keine Versicherung / No insurance                                                                                  |
| `reviews.summary.classification.excellent`                                                                                   | de-DE         | Sehr gut                                             | Hervorragend                                                                                                       |
| `reviews.summary.classification.very-good`                                                                                   | de-DE         | Gut                                                  | Sehr gut                                                                                                           |
| `reviews.summary.classification.good`                                                                                        | de-DE         | Ansprechend                                          | Gut                                                                                                                |
| `reviews.summary.classification.fair`                                                                                        | de-DE         | Mittelmäßig                                          | Ordentlich                                                                                                         |
| `reviews.summary.classification.poor`                                                                                        | de-DE         | Ausreichend                                          | Ausreichend (unchanged)                                                                                            |
| `reviews.summary.classification.excellent`                                                                                   | en-US         | Excellent                                            | Exceptional                                                                                                        |
| `reviews.summary.classification.fair`                                                                                        | en-US         | Fair                                                 | Decent                                                                                                             |
| `reviews.summary.classification.poor`                                                                                        | en-US         | Poor                                                 | Adequate                                                                                                           |
| `reviews.summary.count.one` (new)                                                                                            | de-DE / en-US | —                                                    | {count} Bewertung / {count} review                                                                                 |
| `reviews.item.authorWithDate`                                                                                                | en-US         | {author}, visited on {date}                          | {author}, stayed in {date}                                                                                         |
| `Property.propertyType.option.APARTMENT_COMPLEX`                                                                             | de-DE         | Appartement Komplex                                  | Apartmentanlage                                                                                                    |
| `Property.propertyType.option.HOLIDAY_HOME_COMPLEX`                                                                          | en-US         | Holiday Home Complex                                 | Holiday home complex                                                                                               |
| `RentalAttributes.valleyViewType.label` (new)                                                                                | de-DE / en-US | — (used the valley view label)                       | Art des Talblicks / Valley view type                                                                               |
| `RentalAttributes.lakeviewType.option.EXCEPTIONALLY_GOOD`                                                                    | de-DE         | außergewöhnlich gut                                  | Außergewöhnlich gut                                                                                                |
| `RentalAttributes.seaviewType.option.EXCEPTIONALLY_GOOD`                                                                     | de-DE         | außergewöhnlich gut                                  | Außergewöhnlich gut                                                                                                |
| `RentalAttributes.seaviewType.option.LIMITED`                                                                                | de-DE         | eingeschränkt                                        | Eingeschränkt                                                                                                      |
| `RentalAttributes.beachview.label`                                                                                           | en-US         | Beachview                                            | Beach view                                                                                                         |
| `RentalAttributes.cityView.label`                                                                                            | en-US         | City View                                            | City view                                                                                                          |
| `RentalAttributes.countrysideView.label`                                                                                     | en-US         | Countryside View                                     | Countryside view                                                                                                   |
| `RentalAttributes.countrysideViewType.label`                                                                                 | en-US         | Countryside View Type                                | Countryside view type                                                                                              |
| `RentalAttributes.gardenView.label`                                                                                          | en-US         | Garden View                                          | Garden view                                                                                                        |
| `RentalAttributes.innerCourtView.label`                                                                                      | en-US         | Inner Court View                                     | Courtyard view                                                                                                     |
| `RentalAttributes.mountainview.label`                                                                                        | en-US         | Mountainview                                         | Mountain view                                                                                                      |
| `RentalAttributes.mountainviewType.label`                                                                                    | en-US         | Mountainview Type                                    | Mountain view type                                                                                                 |
| `RentalAttributes.poolView.label`                                                                                            | en-US         | Pool View                                            | Pool view                                                                                                          |
| `RentalAttributes.quietStreetView.label`                                                                                     | en-US         | Quiet Street View                                    | Quiet street view                                                                                                  |
| `RentalAttributes.riverView.label`                                                                                           | en-US         | River View                                           | River view                                                                                                         |
| `RentalAttributes.valleyView.label`                                                                                          | en-US         | valleyView                                           | Valley view                                                                                                        |
| `RentalAttributes.lakeviewType.label`                                                                                        | en-US         | lakeviewType                                         | Lake view type                                                                                                     |
| `RentalAttributes.seaviewType.label`                                                                                         | en-US         | seaviewType                                          | Sea view type                                                                                                      |
| `RentalAttributes.lakeviewType.option.*`, `seaviewType.option.*`                                                             | en-US         | the key                                              | Exceptionally good, Good, Limited                                                                                  |
| `RentalAttributes.heatingSystem.option.*`                                                                                    | en-US         | the key                                              | Central heating, Electric, Gas bottle, Gas tank, Oil, Stove (`OVEN`), Solar, Air conditioning (`VIA_AC`)           |
| `RentalAttributes.stoveType.option.*`                                                                                        | en-US         | the key                                              | Ceramic hob, Gas, Induction, 3-burner stove, 4-burner stove                                                        |
| `RentalAttributes.kitchenType.option.CLOSED`                                                                                 | en-US         | the key                                              | Closed                                                                                                             |
| `RentalAttributes.dryerAccess.option.EXKLUSIVE`, `washerAccess.option.EXKLUSIVE`                                             | en-US         | the key                                              | Exclusive use                                                                                                      |
| `RentalAttributes.relaxationRoom.label`                                                                                      | en-US         | relaxationRoom                                       | Relaxation room                                                                                                    |
| `RentalAttributes.saunaIsPrivate.label`                                                                                      | en-US         | saunaIsPrivate                                       | Private sauna                                                                                                      |
| `RentalAttributes.fitnessroom.label`                                                                                         | en-US         | fitnessroom                                          | Fitness room                                                                                                       |

- `highlights` and `roomSummary` still hold text; read counts from `capacity`.
