Localization
Localized metadata enables you to provide translations for all credential, issuer and verifier-related information in multiple languages. This allows wallets to automatically display credentials, issuer/verifier names, and credential attributes in the user’s preferred language, improving the user experience across different regions and language preferences.
Localized display names are supported for all credentials issued over OpenID4VCI and verified over OpenID4VP:
- SD-JWT VC
- mDoc
What Can Be Localized
Paradym supports localization for the following metadata elements:
- Credential Template Information: The name of the credential itself (e.g., “University Degree” / “Universitair Diploma”)
- Credential Attributes (Claims): The names of individual fields within the credential (e.g., “Degree Name” / “Graadnaam”)
- Issuer/Verifier Display Name: How your organization’s name appears in wallets when issuing or verifying credentials (e.g., “Acme University” / “Acme Universiteit”)
All of these translations are published through OpenID4VC metadata. Wallets can use the metadata to display content in the user’s preferred language.
Default Locale
You can configure a default locale on your profile using the defaultLocale field. This locale will be used as the language identifier for primary names and descriptions in:
- Profile display name
- Credential template
- Credential attribute
If no defaultLocale is configured, the primary names and descriptions will be included in the metadata without a language identifier. When a localization array contains an entry that matches the defaultLocale of your profile, the entry in the localization array will always take precedence.
Issuer and Verifier Name Localization
The name of the issuer and verifier is derived from the display name of the profile of your project, which influences how your organization appears in wallets.
Profile display name fields:
displayName: The primary display name for your organizationdefaultLocale: The BCP 47 language code for the primary name (optional, but recommended)localization: An array of objects with localized names for additional languages
Issuer and verifier display names are configured separately from credential templates, as they represent your organization’s identity across all credentials you issue or verify.
Credential Template Localization
In credential templates you can localize the name and description of both the templates itself, as well as all attributes.
Template-Level Localization
A template can have the following localization-related fields:
name: The name of the credential type (e.g., “University Degree”, “Driver’s License”)description: A description of what the credential representslocalization: An array of objects with localized names and descriptions for additional languages
The language identifier for the primary name and description is determined by the profile’s defaultLocale setting. If no defaultLocale is configured on the profile, the primary content will be included without a language identifier.
Example:
{
"name": "University Degree",
"description": "Official academic degree awarded by an accredited university",
"localization": [
{
"locale": "nl-NL",
"name": "Universitair Diploma",
"description": "Officieel academisch diploma uitgereikt door een geaccrediteerde universiteit"
},
{
"locale": "de-DE",
"name": "Universitätsabschluss",
"description": "Offizieller akademischer Abschluss einer akkreditierten Universität"
},
{
"locale": "fr-FR",
"name": "Diplôme Universitaire",
"description": "Diplôme académique officiel délivré par une université accréditée"
}
]
}This allows wallets to display the credential name in the user’s language, making it clear what kind of credential they’re receiving or presenting.
Attribute Name Localization
Each attribute can have the following localization-related fields:
name: The primary display name for the attributedescription: Optional description of the attributelocalization: An array of objects with localized names for additional languages
The language identifier for the primary name is determined by the profile’s defaultLocale setting. If no defaultLocale is configured on the profile, the primary content will be included without a language identifier.
Example template with localization
Here’s an example of creating an SD-JWT VC credential template with localization at both the credential level and attribute level:
{
"name": "University Degree",
"description": "Official academic degree awarded by an accredited university",
"localization": [
{
"locale": "nl-NL",
"name": "Universitair Diploma",
"description": "Officieel academisch diploma uitgereikt door een geaccrediteerde universiteit"
},
{
"locale": "de-DE",
"name": "Universitätsabschluss",
"description": "Offizieller akademischer Abschluss einer akkreditierten Universität"
},
{
"locale": "fr-FR",
"name": "Diplôme Universitaire",
"description": "Diplôme académique officiel délivré par une université accréditée"
}
],
// ... additional template properties ...
"attributes": {
"degree_name": {
"type": "string",
"name": "Degree Name",
"description": "The name of the degree obtained",
"localization": [
{ "locale": "nl-NL", "name": "Graadnaam" },
{ "locale": "de-DE", "name": "Abschlussname" },
{ "locale": "fr-FR", "name": "Nom du diplôme" }
],
"required": true,
"alwaysDisclosed": false
},
"graduation_date": {
"type": "date",
"name": "Graduation Date",
"localization": [
{ "locale": "nl-NL", "name": "Afstudeerdatum" },
{ "locale": "de-DE", "name": "Abschlussdatum" },
{ "locale": "fr-FR", "name": "Date de remise des diplômes" }
],
"required": true,
"alwaysDisclosed": true
},
"student_id": {
"type": "string",
"name": "Student ID",
"localization": [
{ "locale": "nl-NL", "name": "Studentnummer" },
{ "locale": "de-DE", "name": "Matrikelnummer" },
{ "locale": "fr-FR", "name": "Numéro d'étudiant" }
],
"required": true,
"alwaysDisclosed": false
}
}
}Supported Languages
Paradym supports the following BCP 47 language tags for translations:
af- Afrikaanssq- Albanianam- Amharicar- Arabichy-AM- Armenianaz-AZ- Azerbaijanibn-BD- Banglaeu-ES- Basquebe- Belarusianbg- Bulgarianmy-MM- Burmeseca- Catalanzh-HK- Chinese (Hong Kong)zh-CN- Chinese (Simplified)zh-TW- Chinese (Traditional)hr- Croatiancs-CZ- Czechda-DK- Danishnl-NL- Dutchen- English (global)en-AU- English (Australia)en-CA- English (Canada)en-US- English (United States)en-GB- English (United Kingdom)en-IN- English (India)en-SG- English (Singapore)en-ZA- English (South Africa)et- Estonianfil- Filipinofi-FI- Finnishfr-CA- French (Canada)fr-FR- French (France)gl-ES- Galicianka-GE- Georgiande-DE- Germanel-GR- Greekgu- Gujaratiiw-IL- Hebrewhi-IN- Hindihu-HU- Hungarianis-IS- Icelandicid- Indonesianit-IT- Italianja-JP- Japanesekn-IN- Kannadakk- Kazakhkm-KH- Khmerko-KR- Koreanky-KG- Kyrgyzlo-LA- Laolv- Latvianlt- Lithuanianmk-MK- Macedonianms-MY- Malay (Malaysia)ms- Malayml-IN- Malayalammr-IN- Marathimn-MN- Mongolianne-NP- Nepalino-NO- Norwegianfa- Persianfa-AE- Persian (United Arab Emirates)fa-AF- Persian (Afghanistan)fa-IR- Persian (Iran)pl-PL- Polishpt-BR- Portuguese (Brazil)pt-PT- Portuguese (Portugal)pa- Punjabiro- Romanianrm- Romanshru-RU- Russiansr- Serbiansi-LK- Sinhalask- Slovaksl- Slovenianes-419- Spanish (Latin America)es-ES- Spanish (Spain)es-US- Spanish (United States)sw- Swahilisv-SE- Swedishta-IN- Tamilte-IN- Teluguth- Thaitr-TR- Turkishuk- Ukrainianur- Urduvi- Vietnamese