Articles on: Appointment Bookings

🌍 Appointment Bookings — Translation

Hoppy Appointments lets you translate the customer-facing text that appears throughout the booking experience. This includes button labels, form fields, calendar text, success messages, waitlist wording, and even built-in email block labels.


If your store sells in multiple languages, translations help customers book in the language they’re already browsing in. If you sell in one language, translations still let you customize the default wording to match your brand — like changing “Book Now” to “Reserve My Spot” 🎯


This guide explains how the translation system works, where to configure it, and what each group of settings controls.



⚠️ Before You Begin


Translations are managed from:


Hoppy Appointments → Settings → Translations


Before translating anything, make sure:


  • The Hoppy Appointments app is installed
  • You have at least one service created
  • The languages you want to use are already added in your Shopify store


ℹ️ Languages must be added in Shopify first before they appear inside Hoppy Appointments.


To add or manage store languages, go to:


Shopify Admin → Settings → Languages


💡 If a language is not configured in Shopify, it will not be available in the translation dropdowns.



🌐 Multi-Language Settings


At the top of the Translations page, the Multi-language settings card controls which languages the booking widget uses.



Default Language


This is the language used when:


  • Multiple languages are turned off
  • A customer visits in a language you have not enabled


Think of it as your fallback language. The app will always fall back to this language when something can’t be displayed in the customer’s language.



Enable Multiple Languages


Turn this on to support more than one language on your storefront.


When enabled, two additional settings appear:


Language Detection Mode


Choose how the app decides which language to show:


  • Store language → Uses the active Shopify storefront locale from the customer’s browsing session
  • Browser language → Uses the customer’s browser language setting


Most merchants use Store language because it matches Shopify’s own language switching.



Enabled Languages


Select which languages the booking widget should support. Only languages added in Shopify appear in this list.


⚠️ Important:


  • The default language is automatically included in the enabled list
  • If you remove the language currently selected in the editor, the preview automatically switches back to the default language



📝 The Translation Editor


Below the multi-language settings, the translation editor is split into two tabs:


  • Calendar Translations → Global text used across all services
  • Service Translations → Per-service overrides for services with advanced configuration enabled


A language switcher appears above the tabs when multiple languages are enabled. Use it to translate one language at a time.


The Calendar Translations tab also includes a live preview panel, so you can see how changes look on desktop and mobile while you edit.



📅 Calendar Translations Tab


This tab controls the default text shown throughout the booking widget, reschedule page, cancel page, and email block labels.


Text is organized into groups. Here is what each group controls.



Product Page


  • Product page button label → The text on the button that replaces Add to Cart on bookable product pages



    Default: “Book Now”



General Calendar Texts


These are the main labels and messages inside the booking widget:


  • Time needed → The heading above duration options, e.g. “How long do you need?”
  • When do you want to book ? → The heading above the time slot list, e.g. “What time works best?”
  • Confirm booking title → The heading on the confirmation step
  • Back button label, Confirm button label, Continue button → Navigation buttons
  • Confirm button label when submitting → The submit version of the confirm button
  • Time not found message / sub-message → Shown when no slots are available
  • Teammate selector label → Label for choosing a team member
  • No preference label → Option when any teammate is fine
  • Success title / description / CTA / CTA Link → The screen customers see after a free booking is confirmed


and many more.



Calendar Form


Labels and validation messages for the default booking form fields:


  • First name field label
  • Last name field label
  • Email field label
  • Phone field label
  • Required message → Shown when a required field is empty
  • Email error message → Shown when an email address is invalid



Rescheduling Page


Text customers see when they reschedule a booking through their email link:


  • Reschedule booking heading
  • Rescheduling button
  • Rescheduled booking button
  • Rescheduled booking message



Meeting Details


  • Meeting details title → The heading above the location or meeting link on the confirmation screen



Booking Status Messages


Messages shown when a booking is on hold or cancelled:


  • On-hold title/message
  • Cancelled title/message
  • Cancel booking title/button


These are especially useful for services that require manual approval.



Multiday Calendar Texts


Labels used for stays and rentals:


  • Start date label, End date label
  • Pick date text
  • Duration text
  • Minimum selection label → Uses dynamic variables {count} and {unit}



Bundle Bookings Texts


Labels used for session packages:


  • Number of time slots label



Partial Payment


Labels shown when deposits are enabled:


  • Partial payment label → The deposit checkbox label
  • Pay full amount label → The full-payment checkbox label


💡 These labels are only visible on the storefront when partial payments are enabled for a paid service.



Units


Short labels for duration and date formatting:


  • Min, Hour, Hours, Day, Days, Night, Nights
  • Date label


These are used when displaying durations like “60 min” or “2 nights.”



Months & Days of Week


Translate the 12 month names and the 7 day-of-week names. There are two sets:


  • Days of week → Full names like Monday, Tuesday
  • Days of week short → Short names like Mon, Tue
  • Month names → Full names like January, February


These are used in the calendar header and date selectors.



Email Blocks


These control the built-in labels inside your email templates:


  • Header labels → Confirmed, Cancelled, Updated, On Hold, Declined, Waitlist
  • Action labels → Reschedule, Cancel
  • Calendar link labels → Add to Google Calendar, Add to Apple Calendar, Add to Outlook Calendar
  • Section labels → Location, Order, Teammates


ℹ️ These labels are used by the pre-crafted email blocks. The custom text you write in Email Settings subject lines and bodies is not auto-translated — it is sent exactly as you write it.


See the Email Notifications documentation for details on customizing email templates.



Waitlist


Text shown when customers join or interact with the waitlist:


  • Form title and description
  • Join waitlist button label
  • Inline link text above the slot list
  • Success message after joining
  • Submit button text



🛠️ Service Translations Tab


This tab lets you override global translations for individual services.


ℹ️ Only services with Advanced configuration enabled appear here. If no services use advanced configuration, an info banner explains how to enable it.


For each listed service, you can translate:


  • Title → The service title shown to customers
  • Description → The description shown to customers
  • Floating action button label → If the service uses a floating Book Now button
  • Product page button label → Override the global button text just for this service
  • Back button label, Confirm button label
  • Time needed text, Book text, Confirm booking text


💡 Service-level translations take priority over global Calendar Translations. This is useful when one service needs different wording — for example, a “Rent Now” button for rentals while everything else says “Book Now.”


The Service Translations tab does not include the live preview panel because overrides are tied to specific services.



🖥️ How Translations Appear on the Storefront


The app decides which language to display using this logic:


  1. If multiple languages are disabled, the widget always uses the default language
  2. If multiple languages are enabled:
    • Store language mode → Uses the active Shopify storefront locale
    • Browser language mode → Uses the customer’s browser language
  3. If the detected language is not in your enabled list, the app falls back to the default language
  4. If a specific translation key is missing, the app falls back to English


Where translated text appears:


  • The Book Now button on product pages
  • The booking widget calendar, form, and buttons
  • Success, on-hold, reschedule, and cancel pages
  • Waitlist form and confirmation messages
  • Built-in email block labels inside notification emails



🧮 Dynamic Variables


Some translation fields support dynamic placeholders. Do not remove these variables — they are replaced automatically based on the booking.


Minimum selection label


Use {count} for the minimum number and {unit} for the day or night unit.


Example:


Minimum stay: {count} {unit}


Becomes:


Minimum stay: 2 nights



⚠️ Important Notes & Limitations


  • Add languages in Shopify first. Hoppy Appointments only shows languages that already exist in your Shopify store settings.
  • Browser language is simplified. When using Browser language detection, the app uses the primary language code. For example, pt-BR becomes pt. If you only enabled pt-BR, browser detection may not match.
  • Service translations require advanced configuration. You must enable Advanced configuration on a service before it appears in the Service Translations tab.
  • Custom email text is not auto-translated. The subject and body text you type in Email Settings are sent exactly as written in all languages. Only the built-in block labels are translated automatically.
  • POS extension localization is limited. The POS extension primarily supports English. Multi-language storefront translations do not apply inside the POS booking flow.
  • Admin interface is English-only. The Hoppy Appointments admin is currently available in English regardless of your store language.
  • Save after changing languages. Translation changes apply to the storefront as soon as they are saved.
  • Falling back to English is normal. If a translation is blank or missing for a language, the app shows the English version so customers never see broken text.



💡 Common Use Cases


Single-language store with custom wording


  • Keep Enable multiple languages off
  • Set the Default language to your store language
  • Edit Calendar Translations to change default labels


Example: Change “Book Now” to “Reserve My Spot” across all services.



Multi-language storefront


  • Add languages in Shopify Admin → Settings → Languages
  • In Hoppy Appointments, enable Multiple languages
  • Choose Store language detection
  • Select the languages you want to support
  • Translate each language in the Calendar Translations tab


Result: Customers booking in French see French labels, while customers booking in English see English labels.



Per-service button override


  • Enable Advanced configuration on a rental service
  • Go to Service Translations
  • Change the Product page button label for that service to “Rent Now”


Result: Only that service shows “Rent Now.” All other services keep the global “Book Now” label.



🎉 Final Result


Once your translations are configured:


✅ Customers see booking labels in their storefront language
✅ Button text, form labels, and calendar text match your brand voice
✅ Multi-language stores automatically switch languages based on Shopify or browser settings
✅ Service-level overrides let individual services use custom wording
✅ Built-in email block labels translate automatically
✅ Missing translations fall back safely to your default language or English


With translations set up, your booking experience feels natural for every customer, no matter what language they speak 🌍


Updated on: 20/08/2026

Was this article helpful?

Share your feedback

Cancel

Thank you!