FareHarbor and Language Translation
Last updated: December 15, 2022
This is the main internal resource for all things regarding the translation of FareHarbor into other languages.
FareHarbor UI vs. company content translation
Why is this important? The distinction between these two types of translatable content is essential for understanding how we determine what languages to show to online customers. It can also help us troubleshoot when clients have questions about how something is translated.
FareHarbor content translation
When you hear the Product Team talk about translating “the FareHarbor application,” “FareHarbor content,” or “UI copy,” they’re referring to the translation of any hard-coded text that appears in FareHarbor, such as menu text, help text, error messages, email templates, etc. For example, all of the text below is FareHarbor content:

FareHarbor content appears in the online book form as well. Examples include button text, month names, days of the week, and checkout labels:

The translation of this content is managed by the FH Product Team, and is currently available in Catalan, Chinese (Simplified), Czech, Danish, Dutch, German, Greek, English, Finnish, French, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, Portuguese, Russian, Slovenian, Spanish, Swedish, Welsh.
Company content translation
“Company content” refers to the content that clients can input themselves, such as item names and descriptions, confirmation notes, canned messages, etc. We rely on our clients to provide translations of their own content, to ensure that they have complete control over how their information appears to customers.
In the screenshot below, “Whale Watching,” “Whale,” and “It’s a whale of a time!” are all examples of company content. However, the labels in front of these fields and the help text below are considered FareHarbor content.

Translation of this content is managed by each individual company. This client-facing help doc explains how to add translations for company content.
Enabling translations for a company
Enabling translations for a company is what allows them to add and manage their own translated company content. This does not automatically translate any content; it just adds the Translations section to the company’s Dashboard settings.
1. Enable Translations
From the company’s Dashboard, go to advanced company settings (shortcut: Shift + ,) and check the box “Allow adding translations for company content” (located under Bookings).
Note: If the feature is disabled in the future, translated content will be kept, but all languages will be set to inactive.
2. Optional: Allow online booking in FareHarbor-supported languages
Optionally, check the box “Allow online customers to book in any language FareHarbor supports” to allow translation of FareHarbor’s content into other languages besides those that the company has added.
Keep in mind that when this setting is enabled, online customers may end up seeing book forms and emails that are partially translated, since the setting does not apply to the company’s own content.
3. Enable permissions
These options are located on the Setup tab when viewing a specific permission group (see video above).
- Make sure any user that will be sending translated emails to customers has the “View translations” permission enabled in their permission group.
- Any user that will be adding or editing translations in the Dashboard should have the “Edit translations” permission enabled.
- Anyone adding or removing languages must also have the permission “Add and remove languages for translation.” You may want to limit who has this permission to prevent other users from accidentally (or maliciously) deleting an entire language.
Note: Users with permission to view or edit translations may be able to see content that they wouldn’t otherwise have access to. For example, if a user doesn’t have permission to edit canned messages or custom fields, they can still view (but not edit) the original content when sending emails or working with translations.
Setting Company’s Dashboard language
When choosing a language for a Dashboard, choose the language the actual content will be in. It is critical that content added matches the language where it is added. Any discrepancies between language and content can cause issues with language display for online customers as well as issues with Dashboard use in the future if additional languages need to be added.
It should look like this:
- English content under the English and Spanish Content under the Spanish
Changing a company’s Dashboard language
Note: Before changing a company’s Dashboard language, make sure that the change will not affect the company’s specific setup.
A company’s Dashboard language should be set when first creating the Dashboard. However, if you need to change the language after the Dashboard has already been created, you can do so by following the steps below.
- Navigate to advanced company settings (shortcut:
Shift+,) from the company’s Dashboard. - Go to the General section and choose a language from the Language dropdown.
- Click Save.

When a company’s Dashboard language is changed, all company users of that Dashboard will start seeing the Dashboard in the new language. If a user is logged in, they will see the new language as soon as they refresh the page.
Note: When logged in as a FH Admin, you will always see the Dashboard in the admin company language (English). See the FH Admin experience section below for more info.
Company user experience
When a company user logs into FareHarbor, we use their company’s language setting to determine what language to display the Dashboard in. At this time, we do not support language settings per user (all users of a Dashboard will see the same language).
Assuming that company content has been added in the company’s own language, this should allow for a fully translated Dashboard experience. However, if the company’s content (item names, custom fields, policies, etc.) was originally added in a different language than the company’s Dashboard language, then this content will be displayed in that original language.
See Translating your FareHarbor content into other languages for detailed steps on how to manage translations for company content.
FH Admin experience
When logged in as a FH Admin, you will always see the Dashboard in the FH Admin company language (English). So even if a company’s language is German, you will still see their Dashboard in English as long as you’re logged in as a FH Admin.
- If you want to test hard-coded FareHarbor translations, you’ll have to log in as a company user for that Dashboard.
- If you want to test company content translations on the frontend, open a browser that you don’t normally use and use the language picker at the bottom of the book form to set the language.
- If you want to ensure that FareHarbor is correctly auto-detecting languages based on user browser settings, close any tabs you have open, clear your cookies, and set your browser’s language preferences to the desired language (how to locate or change your language preferences, per browser: Chrome, Firefox, Safari). Then go to the company’s online book form. Note: If you’re not seeing translated content, you may need to restart the browser.
Online booking experience
This section refers to what our clients’ end customers (a.k.a. online customers or anonymous users) see.
How the language picker works
For a basic overview of how we determine what languages to show in the online language picker, see the “How it works” section on the client-facing page. Then, read below for additional information.

When an online customer opens the language menu at the bottom of the book form, supported languages are separated into two groups: fully understood languages at the top, and partially understood languages below (the “More options” link at the bottom takes the user to a complete list of languages powered by Google Translate).
- A language is fully understood if both FareHarbor’s content AND the company’s content have been translated into that language, and the language in the company’s settings has been set to active.
A language is partially understood if either one of the following is true (but not both):
- FareHarbor’s content has been translated into the language and the company has enabled “Allow online customers to book in any language FareHarbor supports”
- The company’s content has been translated into that language and the language in the company’s settings has been set to active
More info on partially understood languages is detailed in the last section on this page.
How we pick a user’s default language
When an online user opens the book form, FareHarbor uses the language preferences in their browser settings to determine what default language to translate the book form into.
Read below to learn the parameters we check and the order in which we check them to make sure we are displaying and pinning the correct language for an end customer:
- First, we check if there is a language query parameter defined in the embed book button (for example,
&language=es). If one is present, then the Lightframe will default to that language. - If no language query parameter is present, then we check if a language has been “pinned” (meaning “preference saved locally”). A language can be pinned either when a customer manually selects a language from the language picker, or a language was stored locally from a previous visit to the site.
- If there is no existing pinned language, then we look at the first language listed in the user’s browser settings. If that language is fully understood (meaning both FareHarbor’s content and the company’s content have been translated into that language), we will display and pin that language.
- If there is not a fully understood language available for the user’s first choice, we continue down the list of their preferred languages until we find a match that is fully understood. Then, that language is displayed and pinned.
- If there is no language with a fully understood match, we go back to the top of the list and start over, checking for a partially understood match. The first language in the list that has a partially understood match will be displayed and pinned.
- If there are no fully understood or partially understood matches, we will default to the default language used on the company’s Dashboard and pin that language for the customer.
The goal is to always give the user the most complete translation experience possible, but keep in mind that if we’re showing the user a partially understood language, the book form may only be partially translated.
Additional notes
Language pinning is stored for each shortname separately, meaning that you can always navigate across tabs for separate companies and use different languages.
When an anonymous user selects a language, the page is refreshed, setting the user’s language cookie. This allows the language to “follow” the user throughout their booking session.
When a user switches languages, it may take a few seconds for the new language to load. During that time, the user may see a “loading” spinner on the page.
When a language is removed from the Translations section of the Dashboard, all of its translations are hidden but not actually deleted. So in emergencies, the Product Team can revive languages if needed.
In some cases, company content and FareHarbor content might be translated into different variants of a root language. For example, es-mx (Mexican Spanish) and es-ar (Argentinian Spanish) are variants of es (Spanish). When there’s not a direct match but two languages share the same root language, we will display the company content language and consider it fully understood.
Sending translated emails
How it works
When creating a direct booking, company users have the option to change the customer’s language (the default will be the company’s language). The dropdown list of languages is organized by how “fully” languages are understood, based on the company’s active languages and FareHarbor’s supported languages.

On a completed booking, the customer’s language will be displayed right above their contact information (if the customer’s language is the same as the company’s language, this will be hidden). Users can change the language associated with a customer’s booking by editing their contact info.

When sending an email, the subject line and email body will be automatically translated into the customer’s language. If the user inserts a canned message, and the canned message has a translation available, that will be automatically translated too. When previewing translated emails, the email subject and body content will be translated to reflect exactly what the recipient will see.

When sending emails in multiple languages from the availability overview, each language will have its own subject and message box. The user can add/clear canned messages and file uploads to all emails/languages at once, using the “Add to all” toolbar.

Keep in mind that translations must exist for both FareHarbor’s content and the company’s content for emails to be fully translated. See below for more info and troubleshooting.
FAQs
Why is a customer seeing a partially translated email?
There may be several reasons for this:
- FareHarbor’s content has not yet been translated into that language
- The company has not added translations for that language
- The company has added translations for that language, but not for the specific text that appears in emails (item names, canned messages, company and/or item-level confirmation notes, cancellation notes, location headings, self-transportation notes)
- The language is “inactive” in the company’s Dashboard
- The customer’s booking was made directly in the Dashboard. Emails for direct bookings will always be sent in the company’s Dashboard language unless a FH Admin goes in and changes the customer’s preferred localization language.
What if there’s only one sentence/part of the email that’s not translated?
First, check to see if the text in question is company content or FareHarbor content (read more about the difference here). If it’s company content (for example, a location heading), then it’s just a matter of the company adding the correct translation for that language.
If it’s FareHarbor content (for example, “All prices in US dollars” at the bottom of the email), chances are it’s been logged as a missed translation and the Product Team has already put out a fix. That said, all “new” translatable strings need to be sent to a team of translators and then added back into FareHarbor, so it may be several weeks before the string is actually translated in the email.
Troubleshooting
There are a few useful tools for troubleshooting the online user experience with FareHarbor translation. It’s important to remember that the online booking experience should always display in the default browser language, provided that language is supported by FareHarbor. For example, if you visit the French portion of a multi language site, the book form will be displayed in English provided that is the default browser language. Should a French speaker visit the page, they will see the French book form.
Viewing the translated book form
Even though the booking experience displays in the browser languages, there will be times when a translation needs to be viewed for quality assurance. In this case, there’s a link in the Dashboard to view the translation for a specific language.
- From the company’s Dashboard, go to Settings > Translations.
- Navigate to the desired language and click Edit.
- Click the Settings tab and copy the preview link.
- Paste the link into an incognito window or other private browsing mode.

While the front end of a website can be integrated using language queries to force a specific language, this is not supported at this time. The book form will always use the browser language to set the language shown to the customer on a website. Forcing a specific language changes the language cookie on the customer’s browser and can cause a host of issues.
Reasons for partially-translated booking experiences
In some cases, it’s possible for online users to see partially-translated content when making an online booking. Here are some scenarios that could cause this:
An online customer’s browser blocks third-party cookies. If third-party cookies are disabled in a customer’s browser, FareHarbor will not be able to display translated company content in the Lightframe. FareHarbor content will be translated properly. FareHarbor’s translations rely on browsers allowing third-party cookies. This approach worked for quite some time, but now certain new browser versions have started blocking our translation cookies along with third-party cookies, meaning they will not see client-translated content. We plan to fix this in 2021.
Company content exists in a language that FareHarbor content is not supported in yet. Since the number of available languages for company content (80+) is much more than the number of available languages for hard-coded FareHarbor content (10), it’s possible for a company’s item names, descriptions, etc. to be translated into one language (e.g. Romanian) while the hard-coded parts of the book form are in another language.
Note that a language must be marked “Active” in the company’s Dashboard for it to be available in the online book form.
FareHarbor content exists in a language that company content has not been translated into yet. This is essentially the opposite of the above. This should only happen if the setting “Allow online customers to book in any language FareHarbor supports” is checked in the company’s advanced settings.
Here’s an example of what an online customer might see if they’ve selected a partially understood language (in this example, company content has been translated into Romanian, but FareHarbor’s content has not):
