The Standard Template Multi Language template automatically detects the user’s browser language and displays the waiting room in that language. No configuration is needed for default behaviour.

How Language Detection Works

The template detects the user’s language in this order:

  1. URL parameter?lang=es overrides everything (useful for testing)
  2. Browser/OS language setting — the user’s configured language in their browser or operating system
  3. Referrer TLD — if the user came from a .de domain, German is used
  4. English default — if no match is found

Regional variants are supported. A user with their browser set to pt-BR (Brazilian Portuguese) will see Brazilian Portuguese if available, falling back to standard Portuguese, then English.

Supported Languages

Over 60 languages are supported, including regional variants. Right-to-left languages (Arabic, Hebrew, Persian, Urdu) are fully supported — the layout automatically flips when an RTL language is detected.

LanguageCode
Arabicar
Bengalibn
Chinese (Simplified)zh
Chinese (Traditional)zh-TW
Chinese (Hong Kong)zh-HK
Czechcs
Danishda
Dutchnl
Englishen
Finnishfi
Frenchfr
French (Canadian)fr-CA
Germande
Greekel
Gujaratigu
Hebrewhe
Hindihi
Hungarianhu
Indonesianid
Italianit
Japaneseja
Kannadakn
Koreanko
Malayalamml
Marathimr
Norwegiannb
Persian / Farsifa
Polishpl
Portuguesept
Portuguese (Brazil)pt-BR
Punjabipa
Romanianro
Russianru
Serbian (Cyrillic)sr
Serbian (Latin)sr-Latn
Slovaksk
Sloveniansl
Spanishes
Spanish (Mexico)es-MX
Swedishsv
Tamilta
Telugute
Thaith
Turkishtr
Ukrainianuk
Urduur
Vietnamesevi
Welshcy

Overriding Strings

If your plan supports Custom Templates you can customise any translation string by adding a CH_languages script block to your template. This lets you change the wording for any language, including English.

Place this script block before the CrowdHandler wait script:

<script>
  window.CH_languages = {
    "en": {
      "position-label": "You are number",
      "estimate-minutes": "About {n} mins to go"
    },
    "fr": {
      "position-label": "Vous êtes numéro"
    }
  };
</script>

Your overrides always take priority over the built-in translations. You only need to include the keys you want to change — everything else falls back to the default.

Available String Keys

Queue Status

KeyDefault (English)
captcha-messagePlease verify you’re human to continue
blocked-titleAccess Denied
blocked-descriptionYou’ve been blocked due to suspicious activity.
room-full-titleQueue Full
room-full-descriptionWe’re at capacity. You’ll be let in when a spot opens up.

Countdown

KeyDefault (English)
countdown-labelQueue opens in
countdown-hourshrs
countdown-minutesmin
countdown-secondssec
countdown-messageStay on this page. You’ll get a random position when the queue opens.

Position & Estimates

KeyDefault (English)
position-labelYour position
checking-inChecking in!
estimate-almostAlmost there!
estimate-over-hourMore than an hour
estimate-minutesApproximately {n} minutes
estimate-etaETA: {time}

Priority Code

KeyDefault (English)
priority-titleGot a priority code?
priority-placeholderEnter code
priority-applyApply
priority-successCode applied!
priority-errorInvalid code

Stock

KeyDefault (English)
stock-remainingitems remaining
stock-sold-outSold out

Session Info

KeyDefault (English)
sessions-expire-messageKeep this window open. You’ll move forward automatically.
sessions-timeout-messageYou’ll be redirected when it’s your turn. You have {n} minutes to complete your transaction.

Email Notification

KeyDefault (English)
email-change-titleChange notification email
email-notify-titleGet notified when it’s your turn
email-placeholderyour@email.com
email-notify-btnNotify me
email-cancel-btnCancel
email-confirmationWe’ll email {email}
email-change-btnChange
email-termsYour email address will be stored temporarily to notify you when your queue session ends. It will only be used for this purpose and deleted immediately after.

Footer

KeyDefault (English)
footer-id-labelID:
footer-copiedCopied!
footer-copy-titlePress Enter to copy
footer-last-requestLast check in:
footer-powered-byPowered by

Placeholders

Some strings contain placeholders in curly braces:

  • {n} — replaced with a number (e.g., minutes, timeout value)
  • {time} — replaced with a formatted time
  • {email} — replaced with the user’s email address
  • {position} — replaced with queue position
  • {estimate} — replaced with estimated wait time

Keep these placeholders in your overrides. For example:

<script>
  window.CH_languages = {
    "en": {
      "estimate-minutes": "Roughly {n} minutes remaining",
      "sessions-timeout-message": "You'll have {n} minutes once you're in."
    }
  };
</script>

Testing

See Preview Mode Setup for help with testing templates

You can download the Multi Language Template and open it in a web browser to see  

Add ?lang=xx to any waiting room URL to preview a specific language:

https://wait.example.com/my-event?lang=de
https://wait.example.com/my-event?lang=pt-BR
https://wait.example.com/my-event?lang=ar

This overrides the browser detection and is useful for verifying translations before going live.