Skip to main content
New Idea

Multilingual support for Journeys forms (initiator form, phase labels, field labels)

Related products:Freshservice
  • March 26, 2026
  • 0 replies
  • 28 views

Forum|alt.badge.img+4

Problem

Journeys forms — including the initiator form, phase names, task labels, and custom field labels — cannot be translated. There is no YAML export, no translation file, and no native multilingual option for any part of the Journey builder. Organizations running Freshservice in multiple languages have no supported way to present Journeys in their users' language.

This is a known gap that already existed in the legacy Employee Onboarding/Offboarding module, and it has carried over into Journeys unchanged. It is a significant barrier for any organization that is not English-only.

Expected behavior

Admins should be able to translate, at minimum:

  • Journey name and description
  • Phase names
  • Initiator form field labels, helper text, and dropdown choices
  • Stakeholder form field labels and descriptions
  • Email notifications sent to requesters and stakeholders

Ideally this follows the existing YAML translation pattern used for ticket forms, or provides an inline translation UI in the Journey builder — similar to how the Service Catalog handles translations.

Current workaround

The only option suggested in community threads is injecting jQuery to manipulate DOM labels client-side based on browser language. This is fragile, unsupported, and breaks on any platform update. It is not a viable solution for production environments.

Impact

Any organization using Journeys for employee onboarding, offboarding, or cross-department workflows in a bilingual or multilingual environment is affected. This is particularly relevant for organizations in regions with multiple official languages (Canada, Switzerland, Belgium, etc.).

Forum|alt.badge.img+4
  • Author
  • Skilled Expert
  • March 30, 2026

Workaround: Translate the Journey Module for Multilingual Portals

Problem: The Journey module doesn't support the YAML-based multilingual translations available in the rest of Freshservice. If your portal is configured in French (or any other language), anglophone users see untranslated Journey forms.

Solution: A lightweight JavaScript snippet injected via the portal footer that translates Journey UI on-the-fly for English-speaking users.

How It Works

  • Detects the user's browser language (navigator.language / document.documentElement.lang)
  • If English: translates all text nodes, labels, dropdown options, and attributes using a FR-to-EN dictionary
  • If French: exits immediately (zero overhead for native-language users)
  • Uses a MutationObserver to catch dynamically loaded content (dropdown options, SPA navigation)
  • Handles Freshservice's Ember Power Select custom dropdowns (not just native <select>)

Setup (5 min)

  1. Admin > Service Desk Rebranding > Customize Support Portal > Layout & Pages > Footer
  2. Switch to code editor (not WYSIWYG)
  3. Paste between <script> and </script> tags
  4. Build your dictionary: var DICT = { "French label": "English label", ... };

Key Technical Notes

  • All accented characters must be Unicode-escaped (\u00e9 for e-acute) — Freshservice's Liquid template engine parses inside <script> tags and chokes on raw accents
  • < in string values must be escaped as \x3C (same Liquid parser issue)
  • Freshservice uses typographic apostrophes (U+2019) in some labels — normalize to straight apostrophes (U+0027) before dictionary lookup
  • Required field labels have a trailing * — strip before matching
  • For autocomplete/lookup fields (Power Select with remote class), options load via /lookup_choices API on keystroke — the MutationObserver catches them when they appear in the DOM
  • The script covers: text nodes (TreeWalker), element attributes (placeholder, title, aria-label), native <select> options, and custom dropdown items (role="option", .ember-power-select-option)

Limitations

  • Search input remains source-language — autocomplete fields query the API in the original language; users must type French terms, but results display in English
  • Exact-match only — partial matches or fuzzy translations are not supported
  • Maintenance required — any new Journey form fields or options added in Admin must be manually added to the dictionary
  • Not a replacement for native i18n — this is a stopgap until Freshservice adds Journey multilingual support

Performance

Around 20 KB, single if check for francophones (under 1 ms), no external dependencies, no API calls. The MutationObserver uses an 80 ms debounce to batch DOM changes.

Tested on Freshservice with 8 Journey forms (Onboarding, Offboarding, Transfer, Leave) across two business units, approximately 210 dictionary entries covering UI chrome, form labels, dropdown options, and warning text blocks.