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:
- URL parameter —
?lang=esoverrides everything (useful for testing) - Browser/OS language setting — the user’s configured language in their browser or operating system
- Referrer TLD — if the user came from a
.dedomain, German is used - 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.
| Language | Code |
|---|---|
| Arabic | ar |
| Bengali | bn |
| Chinese (Simplified) | zh |
| Chinese (Traditional) | zh-TW |
| Chinese (Hong Kong) | zh-HK |
| Czech | cs |
| Danish | da |
| Dutch | nl |
| English | en |
| Finnish | fi |
| French | fr |
| French (Canadian) | fr-CA |
| German | de |
| Greek | el |
| Gujarati | gu |
| Hebrew | he |
| Hindi | hi |
| Hungarian | hu |
| Indonesian | id |
| Italian | it |
| Japanese | ja |
| Kannada | kn |
| Korean | ko |
| Malayalam | ml |
| Marathi | mr |
| Norwegian | nb |
| Persian / Farsi | fa |
| Polish | pl |
| Portuguese | pt |
| Portuguese (Brazil) | pt-BR |
| Punjabi | pa |
| Romanian | ro |
| Russian | ru |
| Serbian (Cyrillic) | sr |
| Serbian (Latin) | sr-Latn |
| Slovak | sk |
| Slovenian | sl |
| Spanish | es |
| Spanish (Mexico) | es-MX |
| Swedish | sv |
| Tamil | ta |
| Telugu | te |
| Thai | th |
| Turkish | tr |
| Ukrainian | uk |
| Urdu | ur |
| Vietnamese | vi |
| Welsh | cy |
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
| Key | Default (English) |
|---|---|
captcha-message | Please verify you’re human to continue |
blocked-title | Access Denied |
blocked-description | You’ve been blocked due to suspicious activity. |
room-full-title | Queue Full |
room-full-description | We’re at capacity. You’ll be let in when a spot opens up. |
Countdown
| Key | Default (English) |
|---|---|
countdown-label | Queue opens in |
countdown-hours | hrs |
countdown-minutes | min |
countdown-seconds | sec |
countdown-message | Stay on this page. You’ll get a random position when the queue opens. |
Position & Estimates
| Key | Default (English) |
|---|---|
position-label | Your position |
checking-in | Checking in! |
estimate-almost | Almost there! |
estimate-over-hour | More than an hour |
estimate-minutes | Approximately {n} minutes |
estimate-eta | ETA: {time} |
Priority Code
| Key | Default (English) |
|---|---|
priority-title | Got a priority code? |
priority-placeholder | Enter code |
priority-apply | Apply |
priority-success | Code applied! |
priority-error | Invalid code |
Stock
| Key | Default (English) |
|---|---|
stock-remaining | items remaining |
stock-sold-out | Sold out |
Session Info
| Key | Default (English) |
|---|---|
sessions-expire-message | Keep this window open. You’ll move forward automatically. |
sessions-timeout-message | You’ll be redirected when it’s your turn. You have {n} minutes to complete your transaction. |
Email Notification
| Key | Default (English) |
|---|---|
email-change-title | Change notification email |
email-notify-title | Get notified when it’s your turn |
email-placeholder | your@email.com |
email-notify-btn | Notify me |
email-cancel-btn | Cancel |
email-confirmation | We’ll email {email} |
email-change-btn | Change |
email-terms | Your 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
| Key | Default (English) |
|---|---|
footer-id-label | ID: |
footer-copied | Copied! |
footer-copy-title | Press Enter to copy |
footer-last-request | Last check in: |
footer-powered-by | Powered 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.