Localisation is currently API-only and in closed beta.
It will become available in the Pass Template Builder UI later.
Why Localisation Matters
Localisation makes sure that the fields on your pass (including labels and values) appear in the preferred language of your users’ devices.- Improves user experience
- Builds trust and professionalism
- Reduces confusion for international customers
📱 How Devices Decide Which Language to Show
Both Apple Wallet and Google Wallet automatically match the device language with the localisations you’ve defined:- The device checks its system language settings.
- It looks for a matching localisation in your pass.
- If a match exists → that language version of the pass is shown.
❓ What if a device uses an unsupported language?
Apple Wallet and Google Wallet handle fallbacks differently.| Platform | How the language is chosen when there’s no exact match |
|---|---|
| Apple Wallet | Tries device preferred languages → if none match, searches for English localisation → if not present, defaults to first localisation alphabetically |
| Google Wallet | Tries device locale → if none match, falls back to the template defaultLanguage |
- Default language set on the template: Icelandic (
is) - Localisations present:
fr,de,en - Device language:
it(Italian)
To make behaviour consistent across Apple and Google and ensure a safe and predictable fallback we recommend to always set the default language to English.
🌐 Supported Locale Options
Both Apple and Google use BCP 47 language tags to define locales. These tags combine a language code (e.g.en for English, fr for French) with optional region or script codes (e.g. en-GB for British English, pt-BR for Brazilian Portuguese).
You can look up the language you need in the Wikipedia list of IETF language tags and use the corresponding code when adding localisations to your pass.
PassEntry supports a wide range of locales used by Apple and Google. You can include multiple localisations per pass template.
Here’s the current list of supported locales:
📝 Example: Localised Supermarket Membership Pass
Let’s walk through a simple case study. Imagine a supermarket in France that issues a digital loyalty card. They want the pass to appear in English by default for tourists, while also providing a French translation for their local customers. Below is a minimal pass template definition with localisation applied:🗝️ Pass Value Localisation
In addition to localising labels and default values at the template level, you can also localise field values directly when creating or updating a pass.This is especially useful for dynamic, user-specific data (like membership tier, discount, or status), ensuring the right translation is shown without requiring multiple template versions. Example use case:
- A loyalty programme upgrades certain users from Level 1 to Level 2.
- By localising the pass value directly, you can update each user’s pass once and rely on localisation to handle all supported languages.
Example: Localised Membership Tier Value
Notes
defaultLanguage: Always set toenfor a consistent fallback on both Apple and Google Wallet.- Localisation scope: Added for labels and static default values where appropriate. Avoid defaults for dynamic customer data (e.g. name, email, member ID).
- How
defaultLanguageworks:- If
defaultLanguageis set toen, then the parent-level"label": "Tier", "defaultValue": "Silver"are already in English. - ❌ Do not repeat English under the
localisationobject – it’s redundant. - ✅ Only add translations for other languages (e.g.
fr,de).
- If
- Changing the default language later:
If you decide to make French your default language, you must:
- Update the parent-level label and default value to French.
- Remove
frfrom thelocalisationobject. - (Optionally) add
enas a localisation if you still want English support.
- Always include all localisation entries when updating a pass template or pass:
If you previously set up French, Spanish, and German and then send an update with only German, the French and Spanish translations will be removed.
Example
Default language = EnglishTo test localisation on your phone, install your pass, change the language preferences in your device settings and then return to the Wallet app.