Skip to content

Translations

Translations let you customize the text labels and messages shown in the CityCity booking frontend, the admin panel and platform emails. This is useful for branding, localization adjustments, or clarifying terminology for your users.

Translations can be customized at two levels:

Level Where to find it Applies to
Agency Translations in the agency menu All companies of the agency
Company Company → Translations Users of that company only

Both levels override the default text that ships with the platform. A company-level translation takes precedence over an agency-level one.

How translations are resolved

For every piece of text, the platform picks the first match in this order:

  1. Company translation for the user's current language
  2. Agency translation for the user's current language
  3. The platform's default text

Things to be aware of:

  • Translations are language specific. An override saved for Swedish is not used when the user views the site in English, and there is no fallback between languages. Add an override for each language you want to change.
  • An empty value is ignored, so the default text is shown. To remove an override, delete it.
  • Companies only affect their own users. Agency translations are used for everything else, including users whose company has no override for that text.

Who can edit translations

Page Who has access
Agency → Translations Agency superusers
Company → Translations Agency superusers, agency administrators, and the company's own administrators (their own company only)

Managing translations

Accessing the page

  • Agency level: open Translations in the agency menu.
  • Company level: open the company in the admin panel and choose Translations.

Both pages work the same way. The company page describes itself as overriding the agency and default translations.

Finding the text to change

The page lists every text that can be customized (the catalog), together with its default text. You cannot invent new keys; only texts that exist in the product can be overridden.

  • Search: type part of a key or of the default text. Search ignores case and accents.
  • App filter: narrow the list to Frontend (booking site), Admin (admin panel) or Backend (emails and other server-generated text).
  • Language: choose which language you are viewing and editing. This also decides which language an edit applies to.
  • Customized badge: a green badge marks keys that already have an override in at least one language.
  • Expand a row (chevron) to see the default text in all languages. If an app words the same key differently, the variants are listed per app.

Adding or editing a translation

  1. Find the key and select the language you want to change.
  2. Click Create override (or Edit if one already exists).
  3. Enter the new text and click Save.

To remove an override and return to the default text, click Delete in the same editor.

Existing overrides

The Existing overrides table lists everything that has been customized, as key-language with its value. You can sort by key or value, jump to the key in the catalog with Edit, or Delete an override after confirming.

If an override is marked key no longer exists in the product, the text was removed or renamed in a newer release, or the language is no longer supported. It has no effect and can only be deleted.

Translation key format

Overrides are stored as {key}-{language}:

Key Language Stored as
verification code sv verification code-sv
verification code en verification code-en

Keys are the plain-text identifiers used by the product (they often read like English phrases) and are matched exactly.

Placeholders

Some texts contain placeholders, for example We have sent a one-time code to {{email}}. Keep the placeholders in your override so the value is filled in.

  • Write placeholders without spaces inside the braces: {{email}}. Placeholders written as {{ email }} are not replaced in overrides and will appear literally.
  • Placeholder names must match the original text exactly.
  • Backend texts (emails) currently do not substitute placeholders in overrides, so avoid replacing texts that depend on them.

Formatting

Override values are plain text. Markdown is not applied to translations. HTML is only rendered in the few places where the original text already contains formatting; elsewhere it is shown as plain text. Keep values simple unless you have confirmed how the original text is displayed.

Where translations apply

  • Booking frontend: agency and company translations.
  • Admin panel: agency and company translations.
  • Emails and PDFs generated by the platform: agency translations only. Company translations are not used here.

Not every screen supports overrides. A small number of components use the default text only, so a customized label may not change everywhere you expect. Use the debug mode below to check.

When changes appear

Changes are saved immediately, but the booking frontend caches translations in the browser and refreshes them when the app starts and when a user logs in. Ask users to reload the page or log in again to see a change.

Debugging translation keys

To identify which key is used for a piece of text, enable debug mode, which shows the raw keys instead of translated text.

Add the showTranslationKeys query parameter to any frontend URL:

https://your-domain.com/?showTranslationKeys=true
Value Result
true Shows translation keys
anything else Disables (shows normal text)

Debug mode is remembered in the browser. It stays on until you open the site once with ?showTranslationKeys=false.

Debug mode only affects texts that support overrides. Texts that are not shown as keys cannot be customized from this page.

Supported languages

Overrides can be created for the languages the product is translated into:

Code Language
sv Swedish
en English
da Danish
fi Finnish
nb-NO Norwegian
es Spanish
ar Arabic

German (de) is not supported. Any de overrides created earlier are marked as no longer existing and can be deleted.

Note: Norwegian is listed under more than one language code in the platform. If a Norwegian override does not appear in the booking frontend, contact support.

Best practices

  1. Find the exact key first: use search, or debug mode in the frontend, before creating an override.
  2. Cover every language you use: there is no fallback between languages.
  3. Prefer agency level for shared wording and use company level only for company-specific differences.
  4. Keep values concise: UI labels should be short and clear to avoid layout issues.
  5. Keep placeholders intact and without spaces.
  6. Clean up stale overrides after product updates.

Support

For assistance with translations, or if a text you need to change is not available in the catalog, contact your travel agency administrator or CityCity support.