Skip to content

Languages

Rails
Status 🟡
Code config/application.rb, app/controllers/application_controller.rb (set_locale, default_url_options), config/locales/

Verified against code: 2026-10-20

Purpose

The public site speaks seven languages so sailors find SailEver in their own language. The signed-in logbook and the admin area are English for now. Emails follow the user's preferred language where texts exist.

Locales

en (default), de, fr, it, es, el, pt. A missing key falls back to English.

Which language a page uses

Area Language
/admin… Always English, no prefix in URLs
Signed in (any page, also public pages) Always English
Signed out The URL prefix (/de/watchapp); no prefix = English
Emails to users users.locale, else English (emails.md)
Watch apps English only (not part of the server)
  • Every generated link keeps the current locale as a prefix, except in /admin.
  • The footer has language links (EN DE FR IT ES EL PT) to the same page in each language.
  • Every public page lists hreflang alternates for all seven locales.
  • Films show German overlays on de and English on every other locale (public-site.md).
  • The preferred language on the account page only affects emails.

Locale files

File Holds Translated
web.<locale>.yml Public site copy (web.*) All 7. The other six lack 38 newer keys (home carousel web.home.slides.*, "My Logbook" and others), which show in English.
app.<locale>.yml Signed-in UI (app.*) English complete (210 keys); the other six have 39
logbook.<locale>.yml Trip, day and track screens (logbook.*) All 7 complete (not shown, since signed-in pages are English)
sharing.<locale>.yml Share popover, crew section, public trip page, crew link pages, the account setting (sharing.*) English complete; German has the public page and crew link texts (the pages signed-out visitors see); the others show English
rich_text.<locale>.yml Sailor bio and trip description: field labels, the model error, the "Last edited by" line (rich_text.*) English complete; German has the "Last edited" line (the public page); the others show English
<locale>.yml Older shared keys (nav, auth, trips, boats, tracks, mailers, home.disclaimer …) English has all mailer texts; German has the magic-link, new-trip, account-deleted and support texts but not the email-change texts; the others have only the support texts

Legal pages (imprint, privacy, terms) are English prose in the templates on every locale.

Rules

  1. New UI text goes into the English file first; other languages follow later and fall back to English until then.
  2. Counts in copy come from interpolation (%{count}), never typed in.
  3. Use the terms from glossary.md in every language (German uses "Track", not "Etappe").

Known deviations

  • en.yml holds many keys from the old site that no page uses any more (home.features.*, home.faq.*, support_request.*, trips.dropzone.*, auth.sign_in_title …), and mailers.common, mailers.reply_sent and mailers.support_request_created are defined twice in it (so are admin and time).
  • French, Italian, Spanish, Greek and Portuguese have no magic-link or new-trip texts, and no language but English has the email-change texts; those emails fall back to English.