Our users come from all over the globe, and so naturally English isn’t necessarily the language used by all of our users.
Seats gives you a flexible way to internationalise (i18n) your floor plan, making it easy to translate a seating chart, and display it to your users in their language.
Note: this article only applies to floor plans embedded using the seats.io renderer, i.e. typically the floor plans you present to your ticket buyers to select their seats.
For more information on how to translate Event Manager, our box office and admin tool, check this article.
Rendering in your language
Seats has built-in support for over 30 languages. To render a floor plan in your language, simply pass in a “language” config parameter, like so:
new seatsio.SeatingChart({
...,
"language": "fr"
}).render();
The currently supported languages are:
“ar”: Arabic
“be”: Belarusian
“bg”: Bulgarian
“ca”: Catalan
“cs”: Czech
"cy": Welsh
“da”: Danish
“de”: German
“el”: Greek
“en”: English
“es”: Spanish
“et”: Estonian
"fa": Persian (Farsi)
“fi”: Finnish
“fr”: French
“hr”: Croatian
“he”: Hebrew
“hu”: Hungarian
“it”: Italian
"ja": Japanese
"ku": Kurdish
“li”: Lithuanian
“lv”: Latvian
“no”: Norwegian
“nl”: Dutch
“pl”: Polish
“pt”: Portuguese
“ro”: Romanian
“ru”: Russian
“sk”: Slovak
“sl”: Slovenian
“sr”: Serbian
“sv”: Swedish
“tr”: Turkish
“uk”: Ukrainian
“zh-Hans”: Simplified Chinese
“zh-Hant”: Traditional Chinese
If your language is not in this list, please feel free to send us translations for the built-in texts mentioned above, we’ll be happy to add them for you.
Built-in texts
Built-in texts are texts that Seats provides by itself. For example texts like the ones in the tooltips that get shown when a ticket buyer hovers over a seat or a section.
You can override individual built-in texts, using the key (e.g. unavailableSeat) with the messages config parameter.
These are the built-in texts, with their translation in English:
'accessible': 'Wheelchair-accessible',
'accessibleSeat': 'Wheelchair-accessible seat',
'accessibleSpace': 'Wheelchair space',
'allFeesIncluded': 'All fees included',
'and': 'and',
'available.places': 'available places',
'available.seats': 'available seats',
'bar': 'Bar',
'bench': 'Bench',
'booth': 'Booth',
'cancel': 'Cancel',
'cartServices': 'CART Services',
'chair': 'Chair',
'choosePriceLevel': 'Please choose',
'choosePriceLevels': 'Please choose a ticket type for your %a places',
'chooseTickets': 'Please choose your tickets',
'clickToDeselect': 'Click to deselect',
'clickToDeselectPlaces': 'Click to deselect %a places',
'clickToFilterCategories': 'Click to filter categories',
'clickToSelect': 'Click to select',
'clickToSelectPlaces': 'Click to select %a places',
'clickToView': 'Click to view',
'close': 'Close',
'closeFullScreen': 'Close full screen',
'companionSeat': 'Companion seat',
'confirm': 'Confirm',
'couch': 'Couch',
'deselectOthersFirst': 'Deselect other places first',
'done': 'Done',
'excludingFees': '+ fees',
'feeExcluded': '+ %a fee',
'feeIncluded': 'incl. %a fee',
'firstSelectAccessibleSeat': 'Please select an adjacent accessible seat first',
'hearingImpaired': 'Hearing impaired',
'holdFailedModalBodyBecauseBadRequest': 'Your selection could not be reserved. Please refresh the page and try again.',
'holdFailedModalBodyBecauseNetworkIssue': 'Your selection could not be reserved because of network issues. Please try again later.',
'holdFailedModalBodyBecauseOther': 'Your selection could not be reserved. Please try again.',
'holdReleaseFailedModalBodyBecauseBadRequest': 'Your reservation could not be cancelled. Please refresh the page and try again.',
'holdReleaseFailedModalBodyBecauseNetworkIssue': 'Could not cancel your reservation because of network issues. Please try again later.',
'holdReleaseFailedModalBodyBecauseOther': 'Your reservation could not be cancelled. Please try again.',
'liftUpArmrests': 'Lift-up armrests',
'maxSelectionReached': 'You can not choose any more places',
'maxSelectionReachedWithNumber': 'You can not choose more than %a places',
'moreExtraCategories': 'and %a more',
'multipleTicketsAvailableInSection': '%a tickets from [b]%b[/b]',
'noLongerAvailable': 'No longer available',
'noOrphanSeats': 'Please leave no empty seats',
'none': 'None',
'notAvailable': 'Not available',
'notEnoughPlacesAvailable': 'Not enough places available',
'notEnoughPlacesToSelectLeft': 'You can only choose %a more places',
'openFullScreen': 'Open full screen',
'pickCategory': 'Choose a category',
'plusSize': 'Plus-size',
'price.per.place': '%a per place',
'readMore': 'Read more',
'renderingFailed': 'The seating chart could not be loaded',
'resale': 'Resale',
'restrictedView': 'Restricted view',
'row': 'Row',
'seat': 'Seat',
'seats': 'Seats',
'section': 'Section',
'sectionAvailability.none': 'No seats available',
'select': 'Select',
'select-lasso': 'Lasso selection',
'select-rectangle': 'Rectangular selection',
'selectMaxXplaces': 'Select up to %a places',
'selectMinXplaces': 'Select at least %a places',
'selectMorePlaces': 'Select %a more',
'selectQuantity': 'Select quantity',
'selectRows': 'Select whole rows',
'selectXplaces': 'Select %a places',
'selectXtoYplaces': 'Select %a to %b places',
'selected': 'Selected',
'selectionToolsHintDeselect': 'Hold %a to deselect.',
'semiAmbulatorySeat': 'Semi-ambulatory seat',
'sessionExpired': 'Your session has expired',
'sessionExpiredAllPlacesReleased': 'All selected places have been released',
'sessionExpiredStartOver': 'Start over',
'signLanguageInterpretation': 'Sign language interpretation',
'singlePlaceToSelectLeft': 'You can only choose 1 more place',
'singleTicketAvailableInSection': '1 ticket at [b]%a[/b]',
'stool': 'Stool',
'table': 'Table',
'tapToFilterCategories': 'Tap to filter categories',
'tapToView': 'Tap to view',
'ticketsAvailableFrom': 'Tickets from [b]%a[/b]',
'unavailablePlace': 'This place is no longer available',
'useMetaKeyToZoom': 'Use %a + scroll to zoom in',
'wheelchairSpaceTypeFixedSeatInPlace': 'Fixed seat in place',
'wheelchairSpaceTypeNoSeatInPlace': 'No seat in place',
'x.places': '%a places',
'x.to.y.places': '%a-%b places',
'xSelected': '%a selected',
'zone': 'Zone',
'zoomOut': 'Zoom out'
Translating dynamic labels and texts
Besides the built-in texts, other texts can be translated as well:
static text you add on your floor plan while you're designing it
category labels
...
To translate these dynamic, you need to pass in a messages config variable, like so:
new seatsio.SeatingChart({
...,
"messages": {
"STAGE": "Podium",
"ORGAN": "Orgue"
}
}).render();
Please note: the keys in the messages object are cAsE sEnSiTivE!
Recap
set the
languageconfig param to translate built-in texts.use a
messagesarray to translate your own labels and texts.
