These docs are a work in progress and may not be fully up to date. Some pages may contain internal notes for our team.
Skip to Content
CustomizationLanguage & copy

Language & copy

The Language & copy section of the Finder Builder controls two things: the primary language visitors see in the embedded widget (English or Spanish), and per-string text overrides that let you replace any piece of default UI copy with your own wording — in whichever language you choose.

Where to find it

In the Finder Builder sidebar, click Language & copy (under the Look & feel group). The panel has two sub-sections: Language and Text Overrides.

🟡 [SCREENSHOT: Language & copy panel showing the English/Spanish language card selector at the top and the grouped text-override fields below.]

Choosing a language

The Language sub-section shows two cards:

CardValueDefault strings
EnglishenEnglish UI text
SpanishesSpanish UI text

Click a card to select it. The active card is highlighted. When you change the language, the default values shown in each Text Override field update to reflect the new language’s defaults. The Finder Builder itself always stays in English regardless of which language is selected here.

💡 Tip: Switching the language does not clear your text overrides — overrides you’ve entered remain in place and take precedence over whichever language is selected.

What the language setting controls

The language setting applies to every piece of UI text the widget renders: search labels, result counts, filter headings, hours badges, day names, error messages, and more. It does not affect your location data (location titles, addresses, and custom fields come from your data, not the localization system).

Text overrides

The Text Overrides sub-section lets you replace any individual string with your own copy. Overrides take precedence over the selected language’s defaults. Leave an override field blank to use the language default.

Overridable strings

Strings are grouped by the part of the widget they appear in:

LabelKeyDefault (en)
Search labelsearch.labelSearch locations
Search placeholdersearch.placeholderSearch city, state, ZIP, or location name
Search buttonsearch.buttonSearch
Filters buttonsearch.filtersButtonFilters
Suggestions aria labelsearch.suggestionsAriaSearch suggestions
Loading suggestionssearch.loadingSuggestionsFinding matching places…
Google suggestions headingsearch.googleSuggestionsGoogle suggestions
Local suggestions headingsearch.localSuggestionsMatching your locations

List

LabelKeyDefault (en)
List aria labellist.ariaLabelLocations
Results eyebrowlist.nearbyResultsNearby results
Singular location labellist.locationCount.onelocation
Plural location labellist.locationCount.otherlocations
Using your location pilllist.usingLocationUsing your location
Quick filters aria labellist.quickFiltersAriaQuick filters
More filters buttonlist.moreFilters+ More
Empty state titlelist.emptyTitleNo locations found
Empty state bodylist.emptyBodyTry adjusting your search or filters.
Selected pilllist.selectedSelected
Fallback location typelist.fallbackIndustryLocation
Directions buttonlist.directionsGet directions
Show more buttonlist.showMoreShow more locations

Map

LabelKeyDefault (en)
Popup close aria labelmap.closePopupAriaClose popup
Active marker aria labelmap.activeMarkerAriaActive location marker
Marker aria labelmap.markerAriaLocation marker
Popup directions buttonmap.directionsDirections
Popup view buttonmap.viewView

Refinements

Two strings in this group (refinements.selectedCount.one and refinements.selectedCount.other) use the {count} placeholder — see Working with placeholders below.

LabelKeyDefault (en)
Tag filter headingrefinements.filterByTagFilter by tag
Location type headingrefinements.locationTypeLocation type
Selected count singularrefinements.selectedCount.one{count} selected
Selected count pluralrefinements.selectedCount.other{count} selected
Search radius headingrefinements.searchRadiusSearch radius
Sort results headingrefinements.sortResultsSort results
Distance sort optionrefinements.sort.distanceDistance
Name sort optionrefinements.sort.nameName
Country sort optionrefinements.sort.countryCountry
State sort optionrefinements.sort.stateState
City sort optionrefinements.sort.cityCity
Advanced refinements headingrefinements.advancedAdvanced refinements
Apply filters buttonrefinements.applyApply filters

Hours

LabelKeyDefault (en)Placeholders
Badge/detail templatehours.badgeDetail{badge} · {detail}{badge}, {detail}
Closed badgehours.closed.badgeClosed
Closed today detailhours.closed.todayClosed today
Opens today detailhours.opensTodayAtOpens today at {time}{time}
Opens day detailhours.opensDayAtOpens {day} at {time}{day}, {time}
Open badgehours.open.badgeOpen
Open until detailhours.open.untilOpen until {time}{time}
Closing soon badgehours.closingSoon.badgeClosing soon
Other days accordionhours.otherDaysOther days

Day names

LabelKeyDefault (en)
Sundayday.sunSunday
Mondayday.monMonday
Tuesdayday.tueTuesday
Wednesdayday.wedWednesday
Thursdayday.thuThursday
Fridayday.friFriday
Saturdayday.satSaturday

System

LabelKeyDefault (en)
Finder unavailable titleapp.finderUnavailableFinder unavailable

Working with placeholders

Some strings contain placeholder tokens like {count}, {time}, {day}, {badge}, and {detail}. When you write an override for one of these strings, you must include the same placeholder tokens — the widget substitutes them at runtime with the actual value.

For example, to override hours.opensTodayAt:

  • Default: Opens today at {time}
  • Valid override: Open from {time} — the {time} token stays, the surrounding text changes.
  • Invalid override: Open today — omitting {time} will render without the actual time.

Resetting overrides

Each field has a Reset button that clears the override for that string, reverting it to the language default. A Reset all overrides button at the top of the Text Overrides section clears all overrides at once. The button is disabled when there are no overrides to reset.

Fallback resolution order

When the widget renders a string, it follows this priority order:

  1. Text override — if you’ve set an override for that key, it’s used.
  2. Selected language translation — the English or Spanish default for the selected language.
  3. English fallback — if the selected language doesn’t have a translation for a key, English is used.

This means you can safely set the language to Spanish and then override just the strings you want to say something different, without needing to override every string.

Number and time formatting

The selected language also controls how numbers, distances, and times are formatted by the widget’s runtime:

  • Numbers are formatted with Intl.NumberFormat using the locale code (en or es).
  • Times (hours display) are formatted with Intl.DateTimeFormat using the same locale. For example, en uses 12-hour time by default; es uses 24-hour time.
  • Distances are formatted as locale-aware numbers followed by the unit (mi or km) configured in your Search settings.

These formatting behaviors are controlled by the locale selection and are not individually overridable through the Text Overrides interface.

Managing copy across multiple finders

Each finder has its own language selection and set of text overrides. There is no shared override library — if you manage several finders that should use the same custom copy, you need to enter overrides in each one separately.

🔴 [NEEDS CLARIFICATION: Confirm whether there is a planned or existing “copy settings from another finder” feature that would simplify managing overrides across a large number of finders.]

Where to next