Event Manager supports multiple languages, and the way to translate it is technically the same as you would use to translate seating charts you show to your ticket buyers. 

This means you can use the language parameter to set the overall language, and the messages  parameter to override individual lines of text.

Setting the Overall Language

Event Manager has built-in support for English (en), Spanish (es), Portuguese (pt), German (de) and Dutch (nl). 

To render a floor plan in your language, simply pass in a “language” config parameter, like so:

new seatsio.EventManager({
    ...,    
    "language": "es"
}).render();

Built-in texts

Built-in texts are texts that Seats provides out of the box. For example texts like the ones in the tooltips that get shown when an administrator or box office manager hovers over a seat or a section. 

These are the built-in texts that are available within Event Manager, with their translation in English:

'object': 'object',
'objects': 'objects',
'forSale': 'For Sale',
'notForSale': 'Not For Sale',
'temporarilyHeld': 'Temporarily held',
'booked': 'Booked',
'free': 'Free',
'numObjectsMarkedAs': '%a marked as %b',
'willBeMarkedAs': 'Will be marked as %a',
'numExtraPlacesWillBeBooked': '%a will be booked',
'numPlacesWillBeReleased': '%a will be released',
'objectWillBeBooked': 'Will be booked',
'objectWillBeReleased': 'Will be released',
'cannotBeMarkedAs': 'Cannot be marked as %a',
'markNumObjectsAs': 'Mark %a as %b',
'numWillBeBookableByTable': '%a will be bookable by table',
'numWillBeBookableBySeat': '%a will be bookable by seat',
'willBeBookableByTable': 'Will be bookable by table',
'willBeBookableBySeat': 'Will be bookable by seat',
'bookableByTable': 'Bookable by table',
'bookableBySeat': 'Bookable by seat',
'bookBySeatsOnly': 'Book by seats',
'bookByTablesOnly': 'Book by table',
'confirmAllBookableBySeat': 'Do you want to make all tables bookable by seat immediately?',
'confirmAllBookableByTable': 'Do you want to make all tables bookable by table immediately?',
'clickToMarkAs': 'Click to mark as %a',
'clickToUndo': 'Click to undo',
'clickToRelease': 'Click to release',
'clickToBook': 'Click to book',
'success': 'Success',
'numSavesRemaining': '%a remaining until %b',
'save': 'save',
'saves': 'saves',
'savedTooManyTimes': 'Saved too many times. Please try again later.',
'somethingWentWrong': 'Whoops, something went wrong.',
'clickToChange': 'Click to change',
'place': 'place',
'places': 'places',
'extraPlace': 'extra place',
'extraPlaces': 'extra places',
'bookNumPlaces': 'Book %a',
'releaseNumPlaces': 'Release %a',
'numPlacesBooked': '%a booked',
'close': 'Close',
'table': 'table',
'tables': 'tables',
'markAs': 'Mark as %a',
'undo': 'Undo',
'release': 'Release',
'book': 'Book',
'change': 'Change',
'noChannel': 'No channel',
'manageChannels': 'Manage channels',
'serverFailCheckInternet': 'Failed to contact the server. Please make sure you are conected to the internet and try again.',
'channelName': 'Channel %a',
'confirmUnassignAndRemoveChannel': 'This channel is applied to some objects. Are you sure you wish to unassign and remove this channel?',
'createChannel': 'Create channel',
'applyChanges': 'Apply changes',
'socialDistancingRulesets': 'Social distancing rulesets',
'createRuleset': 'Create ruleset',
'confirmDeleteRuleset': 'Are you sure you wish to delete this ruleset? This action cannot be reverted.',
'rulesetX': 'Ruleset %a',
'rulesetName': 'Ruleset name',
'noChannelsCreated': 'No channels created yet',
'numberOfDisabledSeatsToTheSides': 'Disable seats to the sides',
'numberOfDisabledAisleSeats': 'Disable aisle seats',
'maxGroupSize': 'Maximum group size',
'enableMaxGroupSizeHint': 'Defines how many people booking together can sit together.',
'disableSeatsInFrontAndBehind': 'Disable seats in front and behind',
'selectMode': 'Select mode',
'editRules': 'Edit rules',
'manuallyDisableSeats': 'Manually disable seats',
'manuallyEnableSeats': 'Manually enable seats',
'disableSeats': 'Disable seats',
'disabledByRules': 'Disabled by rules',
'manuallyDisabled': 'Manually disabled',
'manuallyEnabledOverRules': 'Manually enabled over rules',
'enable': 'Enable',
'disable': 'Disable',
'goBack': 'Go back',
'confirmLeaveChangesWillBeLost': 'Are you sure you wish to leave? Changes made will be lost.',
'selectWholeRow': 'Select whole row',
'thisIsAPreview': 'This is a preview.',
'clickToTestRules': 'Click on seats to test your settings',
'clickToDisableSeats': 'Click on seats to disable them',
'clickToEnableSeats': 'Click on seats to enable them above rules',
'cantManuallyEnableAndDisableSameSeat': "You can't manually enable and manually disable the same seat.",
'socialDistancingGroupLayoutType': 'Group layout',
'fixedSocialDistancingGroupLayout': 'Fixed',
'ruleBasedSocialDistancingGroupLayout': 'Rule-based',
'fixedSocialDistancingGroupLayoutHint1': 'You indicate upfront which seats are disabled.',
'fixedSocialDistancingGroupLayoutHint2': 'When the ticket buyer selects a seat, all adjacent seats get selected as well.',
'ruleBasedSocialDistancingGroupLayoutHint': 'Rules dynamically determine which seats will be disabled',
'disabledSeat': 'disabled seat',
'disabledSeats': 'disabled seats',
'manuallyDisabledSeat': 'manually disabled seat',
'manuallyDisabledSeats': 'manually disabled seats',
'manuallyEnabledSeat': 'manually enabled seat',
'manuallyEnabledSeats': 'manually enabled seats'

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.EventManager({
    ...,
    "messages": {
        "STAGE": "Podium",
        "ORGAN": "Orgue"
    }
}).render();

Please note: the keys in the messages object are cAsE sEnSiTivE!

Recap

  1. set the language  config param to translate built-in texts.
  2. use a messages  array to translate your own labels and texts.
Did this answer your question?