Localization
Nitro's built-in language support allows blocks, web components, and APIs to work in collaboration with user-facing content translations to achieve a fully translated program. Show me a diagram of the localization process
To translate your program, you will need to:
-
Enable localization
-
Translate your program content such as missions, levels, and recognitions.
-
Translate your front-end UI. This front-end may be blocks, web components, or a custom program created with APIs.
Note: Bunchball Go can be used globally but does not support localization in the front-end UI.
Enable Localization and Translate Program Content
Step 1: Enable localization in Nitro Studio. Show details
- Open Nitro Studio > Configuration > Localization.
- In the Enable Locales list, select the locales your site is using.
Localization must be enabled before it's available in your environment. Contact Bunchball Support for assistance.
Step 2: Translate your mission information, levels, exchanges, and other program content. Show details
An Excel or XML translation file is used to localize program content. Each locale you choose to support has its own translation file which is managed in Nitro Studio. Translation text within the Excel or XML file must be in Ascii format.
-
Open Nitro Studio > Configuration > Localization.
-
In the Enable Locales list, select all the locales in your program.
-
Under Translate Content:
-
Select Excel or XML as your file type.
-
In the Download Translation File list, select the language file you want to download.
-
Click Download.
-
When downloading translatable data, you must download from the instance you want to localize. You cannot download a template from your Sandbox instance and try to upload it to Production. Although the content may be the same between instances, the object IDs are different.
-
Update the value field for every value you want to localize and save the file. Leaderboard translations only apply to Impact programs. You must translate leaderboard names separately when using web components.
-
When you've finished translating your content, open the Localization page and click Upload Translation File.
Note: If you receive an error when uploading a translation file, make sure the file size is less than 1MB. If you have a large number of missions, you may need to split your data into multiple files for upload.
-
Repeat steps 3-5 for each language your program supports.
-
As your program grows, you will need to repeat this process to translate the new content.
Note: If you upload a translation file and then download via the same browser, the file may not contain all translations until you refresh the cache.
Translate User Facing Elements
Nitro Impact and Blocks
Complete the following to translate your program. Note: Impact can be used globally but does not support localization of quizzes.
Step 1: Translate blocks. Show details
Each block requires its own translation file which is managed in Nitro Studio. JSON is the only supported file type for blocks.
-
Open Integrate > Blocks > click the block you want to localize.
-
Click the Languages drawer and then click Download.
-
Update the localization file to include all language codes and translations for each language in your program.
-
Upload the updated localization file to the Languages drawer and click Save.
The languages in your file will display in the drawer. Click a language in the list to preview the translations.
-
Add the "language" attribute and the language code to the block embed code in the src URL.
The "language" attribute accepts one or multiple values (e.g. language=es-MX,es-ES). If you have multiple languages, use a token that can be replaced at runtime with the user's language code.
<div style="width: 100dvw; height: 100dvh;overflow:hidden;border-radius:0">
<iframe title="Impact"
style="border: none; width: 100%; height: 100%"
src="https://blocks.bunchball.com/embeds/impact/407481ac-4dca-xxxx-651154f697b1?token=d89e8axxxx318fee9d4x87b74e9d29&language=es-MX"></iframe>
</div>
Web Components and Custom Programs
Nitro supports seven default languages for web components: English, French, Spanish, Italian, German, Mandarin (Simple), and Hindi. A translation schema in each default language is maintained by Nitro. Depending on your program configuration, you can reference the default language translation schemas to translate your program. However, any text overrides, quizzes, leaderboard names, and blocks will require additional translation. When translating into a non-default language, you must create your own translation schema(s).
Complete the following steps as needed to translate your program. Skip any steps that do not apply to your program configuration.
Step 1: Translate web components into a default language (English, French, Spanish, Italian, German, and Mandarin (Simple), and Hindi). Show details
When translating your program into a default language, a Nitro translation schema exists for the text strings used in web components. You don't need to create your own translation schema or modify the default schema unless you have single text overrides or quizzes.
-
Use the Localization view in Nitro Studio to find your language code. Use a 2-digit code to translate into the base language and a 4-digit code to translate into the locale.
-
If your program uses the Missions web component, check the embed code for the "eligible-missions-tab-name" and "completed-missions-tab-name" parameters and remove them.
-
Add the "data-language" attribute and the language code to the web component embed code.
If you have multiple languages, use a token that can be replaced at runtime with the user's locale.
<bunchball-events
data-token="aa41ff8a8e2e52xxxxxxxc096d0ff78f"
data-server="https://api.bunchball.com"
data-user-id=""
data-export-navigation='false'
data-return-count='10'
data-language='fr'
data-custom-css=''
</bunchball-events>
Step 2: Translate web components into a non-default language (any language other than English, French, Spanish, Italian, German, and Mandarin (Simple), and Hindi). Show details
When translating your program into a non-default language, you must create a translation schema for all default text strings that are used in web components. You will need to translate every string in the translation key.
-
Create a translation schema.
-
Add the translation schema to the page containing your web component embed code.
-
Use the Localization view in Nitro Studio to find your language code. Use a 2-digit code to translate into the base language and a 4-digit code to translate into the locale.
-
Add the "data-translation-reference" attribute and the language code to the web component embed code to reference your translation schema.
If you have multiple languages, use a token that can be replaced at runtime with the user's locale.
<script>
window.BunchballTranslations = {
ar: {
translation: {
“profile”: {
"title": “ملفك الشخصي”
}
}
}
</script>
<bunchball-profile
data-token="<token>"
data-user-id="<userId>"
data-language="<locale code>"
data-translation-reference="BunchballTranslations">
</bunchball-profile>
Step 3: Translate web component single text string overrides. Show details
If you customized text within a web component, such as the title, subtitle, or button name, you must translate that custom text into all your supported languages. You can use a single text override or translation schema to change the default text to your custom value.
-
In your web component embed code, remove the value for parameters you want to override with a custom value. For example, you changed the title of the Events web component from Recent Achievements to Community Achievements. The title parameter for the Events web component is "title": "Recent Achievements". You would change that parameter to "title": "".
-
If you're only translating into one language, add your translated text directly to the parameter in the embed code.
-
If you're translating into multiple languages, add your custom values to your translation schema. Add a custom override for each language your program supports.
-
Add the "data-translation-reference" attribute and the language code to the web component embed code to reference your translation schema.
If you have multiple languages, use a token that can be replaced at runtime with the user's locale.
Show me an example script This example shows how you can use a translation schema to override the default (Spanish) translation within a Profile web component to use a different title. Rather than including a reference in the language file, you can specify a single key value pair that will be merged in to override the default.
<script>
window.BunchballTranslations = {
es: {
translation: {
"profile": {
"title": “Votre profil”
}
}
}
</script>
<bunchball-profile
data-token="<token>"
data-user-id="<userId>"
data-language="<locale code>"
data-translation-reference="BunchballTranslations">
</bunchball-profile>
Step 4: Translate custom web components created using APIs. Show details
-
Use the Localization view in Nitro Studio to find your language code. Use a 2-digit code to translate into the base language and a 4-digit code to translate into the locale.
-
Add the "Accept-Language" header and language code to all your API calls.
The header is required on every API call as each is a single transaction and there is no session data.
Step 5: Translate quizzes. Show details
Quiz content (quiz name, questions, and answers) is translated as flat text.
Translation overrides are EXACT matches on the quiz content including the quiz title and description, question text, and answer text. Matches are case-sensitive.
-
Create a translation schema containing your quizzes, their questions, and their answers (or add quizzes to your existing translation schema). No quiz, question, or answer IDs are needed.
-
If you're translating into multiple languages, add a custom override for each language your program supports.
-
Add the "data-translation-reference" attribute to the web component embed code to reference your translation schema.
<script>
window.BunchballTranslations = {
es: {
translation: {
// quiz 1
"Space": "Espacio",
"The space quiz": "la prueba del espacio",
"Is Pluto a planet?": "¿Plutón es un planeta?",
"no": "no",
"yes": "sí",
"Why do the moon and sun look bigger on the horizon?": "¿La atmósfera de la Tierra es una lupa?",
"Earth's atmosphere is a magnifying glass": "La atmósfera de la Tierra es una lupa",
"We have tears in our eyes watching them": "Tenemos lágrimas en los ojos mirándolos",
"Earth's gravity bends light so we 'see' them before seeing them": "La gravedad de la Tierra dobla la luz para que los 'veamos' antes de verlos",
"What is Ceres?": "¿Qué es Ceres?",
"Dwarf planet": "Planeta enano",
"Asteroid": "Asteroide",
"Constellation": "Constelación"
}
}
}
</script>
<bunchball-quiz class="shadow"
data-token="12345678"
data-user-id="TestUser"
data-translation-reference="BunchballTranslations">
</bunchball-quiz>
Step 6: Translate leaderboard names. Show details
If your program does not use the Leaders web component to show multiple leaderboards, you do not need to translate leaderboard names.
-
In your Leaders web component embed code, get the value in the "data-leaderboard-configs" parameter.
-
Translate the "name" parameters within the string into the desired language(s).
-
In your translation schema, add the full string, with translations, within the "leaderboardConfigs" text key.
<script>
windows.BunchballTranslations = {
es-MX : {
translation: {
leaders: {
leaderboardConfigs: “[{"name":"todos los puntos de tiempo","leaderboardId":"215","groupClassIds":"","showProfile":"true","criteria":"lifetimeBalance"}]”
}
}
}
</script>
Translation Schema
A translation schema is used to extend language support to additional languages, custom text strings, and quiz content. The translation schema is added to your web page using the following format. Web component's embed code should reference this schema.
{
<language code> : {
translation: {
"<component name>" : {
"<text key>": "<translation of text key in the target language>"
}
}
}
Show me an example translation schema
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Localization Testing</title>
<link href="https:///npm/dist/css/min.css" rel="stylesheet" integrity="sha3" crossorigin="anonymous">
</head>
<body>
<script src="https://components.bunchball.com/web/latest/component.min.js"></script>
<script>
window.ExampleTranslations = {
en: {
translation: {
"leaders": {
"title": "Leaders",
"subtitle": "Complete missions to earn your spot on the leaderboard!",
"leaderboardConfigs": “[{"name":"Weekly Coin Leaders","leaderboardId":
"3929","groupClassIds":"9112,9279","showProfile":"true","criteria":"lifetimeBalance"},
{"name":"Monthly Coin Leaders","leaderboardId":"3929","groupClassIds":"9112,9279",
"showProfile":"true","criteria":"lifetimeBalance"},{"name":"All-time Coin Leaders",
"leaderboardId":"3932","groupClassIds":"9112,9279","showProfile":"true","criteria":"lifetimeBalance"}]'
}
}
},
de: {
translation: {
"leaders": {
"title": "Führer",
"subtitle": "Schließe Missionen ab, um dir einen Platz auf der Bestenliste zu verdienen!",
"leaderboardConfigs": “[{"name":"Wöchentliche Münzführer","leaderboardId":"3929",
"groupClassIds":"9112,9279","showProfile":"true","criteria":"lifetimeBalance"},
{"name":"Monatliche Münzführer","leaderboardId":"3929","groupClassIds":"9112,9279",
"showProfile":"true","criteria":"lifetimeBalance"},{"name":"Allzeit-Coin-Leader",
"leaderboardId":"3932","groupClassIds":"9112,9279","showProfile":"true","criteria":"lifetimeBalance"}]'
}
}
},
es: {
translation: {
"leaders": {
"title": "Dirigentes",
"subtitle": "¡Completa misiones para ganar tu lugar en la tabla de clasificación!",
"leaderboardConfigs": “[{"name":"Líderes de monedas semanales","leaderboardId":"3929",
"groupClassIds":"9112,9279","showProfile":"true","criteria":"lifetimeBalance"},
{"name":"Líderes mensuales de monedas","leaderboardId":"3929","groupClassIds":"9112,9279",
"showProfile":"true","criteria":"lifetimeBalance"},{"name":"Líderes de monedas de todos los tiempos",
"leaderboardId":"3932","groupClassIds":"9112,9279","showProfile":"true","criteria":"lifetimeBalance"}]'
}
}
},
zh: {
translation: {
"leaders": {
"title": "领导人",
"subtitle": "完成任务,在排行榜上赢得一席之地!",
"leaderboardConfigs": “[{"name":"每周硬币领袖","leaderboardId":"3929","groupClassIds":"9112,9279",
"showProfile":"true","criteria":"lifetimeBalance"},{"name":"每月硬币领袖","leaderboardId":"3929",
"groupClassIds":"9112,9279","showProfile":"true","criteria":"lifetimeBalance"},{"name":"历史上的硬币领袖",
"leaderboardId":"3932","groupClassIds":"9112,9279","showProfile":"true","criteria":"lifetimeBalance"}]'
}
}
},
it: {
translation: {
"profile": {
"title": "Mi perfil",
"subtitle": "",
"level": "Nivel",
"next": "próximo",
"maxLevelAchievedMessage": "",
"notApplicable": "N / A",
"redeemButton": "Redimir",
"firstName": "Primer nombre:",
"firstNamePlaceholder": "Escriba el nombre aquí ...",
"lastName": "Apellido:",
"lastNamePlaceholder": "Escriba el apellido aquí ...",
"awardBalance": "Saldo de premios",
"uploadImage": "Cargar imagen",
"removeImage": "Quita la imagen",
"availableBalance": "Saldo disponible:",
"accountNotVerified": "Cuenta no verificada",
"currentBalance": "Saldo actual:",
"balanceNotAvailable": "No disponible",
"balanceTitle": "Cuenta De Premio"
},
"missions": {
"title": "Misiones",
"subtitle": "",
"missions": "Misiones",
"userMissions": "Mis Misiones",
"missionType": "Seleccione el Tipo de Misión",
"pointsLeft": "Solo quedan {{points}} puntos",
"completionsLeft": "Solo quedan {{completions}} terminaciones",
"timeRemaining": "Solo queda {{time}}",
"hour": "{{count}} hora",
"hour_plural": "{{count}} horas",
"day": "{{count}} día",
"day_plural": "{{count}} días",
"startsInLessThan": "La misión comienza en menos de",
"endsInLessThan": "Termina en menos de {{time}}",
"expires": "La missione scade",
"rewardExpired": "Premio scaduto!",
"rewardExpires": "Il premio scade",
"rightNow": "proprio adesso",
"on": "su",
"completionCount": " (tiempo {{count}} completado)",
"completionCount_plural": " (completado {{count}} veces)",
"completionCountOnMissionCard": "Completado {{count}} completado",
"completionCountOnMissionCardPlural": "Completado {{count}} veces",
"repeatable": "Repetible",
"group": "Misión de Grupo",
"groupMembers": " como un grupo",
"completeAny": "Complete lo siguiente",
"completeAll": "Complete <b>TODO</b> lo siguiente",
"completeOne": "Complete <b>UNO</b> de los siguientes",
"completeAllInSequence": "Complete todo lo siguiente en el <b>ORDEN dado</b>",
"rewards": "Recompensas que puede ganar",
"badge": "INSIGNIA",
"noRewards": "No se dan recompensas",
"expiringSoon": "Expirará Pronto",
"inProgress": "En Progreso",
"filters": "Filtros",
"locked": "Bloqueado",
"lockedByChallengeDescription": "Debe completar ",
"lockedByLevelDescription": "Debe ser ",
"lockedSectionSimple": "La misión está bloqueada",
"ineligibleMission": "No eres elegible para esta misión",
"lockedSectionMeetOne": "Cumplir con el siguiente requisito para desbloquear esta misión",
"lockedSectionMeetAll": "Conoce <b>TODOS</b> los siguientes para desbloquear esta misión",
"lockedSectionMeetAny": "Conoce a <b>UNO</b> de los siguientes para desbloquear esta misión",
"emptyMessage": "No Se Encontraron Misiones",
"emptyMessageDetail": "Misión Seleccionada No Encontrada",
"remaining": "({{current}} de {{goal}} completado)",
"close": "Cierre",
"challengeUrlText": "Hacer la misión",
"isExpired": "La misión ha expirado",
"lockedSectionTitle": "¿Por qué está bloqueada esta misión?",
"selfReportingConfirmationText": "Al marcar como completado, certifico que he completado esta tarea.",
"complete": "Completo",
"cancel": "Cancelar",
"todo": "Que hacer",
"completed": "Terminado",
"rewardInLimitedSupply": "Recursos limitados",
"outOfStock": "Agotado",
"limitedSupply": "Recursos limitados",
"startsIn": "Comienza la misión ",
"completeOneOfTheseMissions": "Completa una de estas misiones."
},
"events": {
"title": "Raggiunto",
"subtitle": "",
"emptyMessage": "No hay actividad reciente para mostrar"
},
"leaders": {
"title": "Líderes",
"subtitle": "Completa le missioni per guadagnare il tuo posto in classifica!",
"yourValue": "Tu valor:",
"notIncluded": "Parece que no estás en esta tabla de clasificación",
"emptyMessage": "No hay líderes para mostrar"
},
"trophy": {
"title": "Estuche de trofeo",
"subtitle": "",
"emptyMessage": "Los trofeos que ganes aparecerán aquí.",
"networkError": "No se pudieron recuperar los datos para mostrar.",
"back": "atrás",
"description": "Descripción",
"lastDateEarned": "Última fecha de obtención",
"timesEarned": "Tiempos ganados",
"earned": "Ganado:"
}
}
}
}
</script>
<div class="container text-center mt-2">
<div class="row">
<div class="col">
<bunchball-missions style="display:block; width:400px; height:450px;"
data-token="<token>"
data-server="https://api.bunchball.com"
data-user-id="<userId>"
data-hide-filter-expiring='false'
data-hide-filter-inprogress='false'
data-hide-filter-labels='false'
data-log-click-through='false'
data-navigation='inline'
data-return-count='5'
data-show-completed-missions='true'
data-show-date-as-duration='true'
data-show-eligible-missions='true'
data-show-forced-label-filter='false'
data-show-locked='all'
data-language='<locale code>'
data-translation-reference="ExampleTranslations"
data-custom-css=''>
</bunchball-missions>
</div>
<div class="col">
<bunchball-leaders style="display:block; width:400px; height:450px;"
data-token="<token>"
data-server="https://api.bunchball.com"
data-user-id="<userId>"
data-leaderboard-configs='[{"name":"Weekly Coin Leaders","leaderboardId":"3929","groupClassIds":"9112,9279",
"showProfile":"true","criteria":"lifetimeBalance"},{"name":"Monthly Coin Leaders","leaderboardId":"3929",
"groupClassIds":"9112,9279","showProfile":"true","criteria":"lifetimeBalance"},{"name":"All-time Coin Leaders",
"leaderboardId":"3932","groupClassIds":"9112,9279","showProfile":"true","criteria":"lifetimeBalance"}]'
data-page-size='25'
data-language='<locale code>'
data-translation-reference="ExampleTranslations"
data-custom-css=''>
</bunchball-leaders>
</div>
<div class="col">
<bunchball-trophy style="display:block; width:400px; height:450px;"
data-token="<token>"
data-server="https://api.bunchball.com"
data-user-id="<userId>"
data-latest-only='false'
data-language='<locale code>'
data-translation-reference="ExampleTranslations"
data-custom-css=''>
</bunchball-trophy>
</div>
</div>
<div class="row mt-2" >
<div class="col">
<bunchball-profile style="display:block; width:400px; height:450px;"
data-token="<token>"
data-server="https://api.bunchball.com"
data-user-id="<userId>"
data-balance-title='Award Account'
data-editable-items='image'
data-hide-level-progress='false'
data-navigation='new tab'
data-point-category='Points'
data-language='<locale code>'
data-translation-reference="ExampleTranslations"
data-custom-css=''>
</bunchball-profile>
</div>
<div class="col">
<bunchball-events style="display:block; width:400px; height:450px;"
data-token="<token>"
data-server="https://api.bunchball.com"
data-user-id="<userId>"
data-export-navigation='false'
data-return-count='5'
data-language='<locale code>'
data-translation-reference="ExampleTranslations"
data-custom-css=''>
</bunchball-events>
</div>
<div class="col">
<bunchball-events style="display:block; width:400px; height:450px;"
data-token="<token>"
data-server="https://api.bunchball.com"
data-user-id="<userId>"
data-export-navigation='false'
data-group-class='Brand'
data-return-count='5'
data-language='<locale code>'
data-translation-reference="ExampleTranslations"
data-custom-css=''>
</bunchball-events>
</div>
</div>
</div>
</body>
</html>
Translation Keys
Blocks
A separate translation key exists for each block and includes the strings needed for a full translation of the individual block. This information will change as a block is updated and text is added or changed. Not that tokens like "{{balance}}" should not be translated.
Download the current translation key in the Block Builder for the block you want to translate.
{
"en-US": {
"form-amount-col": "Amount ({{minValue}}-{{maxValue}})",
"form-amount-total": "Total expense: {{totalExpense}}",
"form-balance": "Your new balance: {{balance}}",
"form-balance-low-error": "Balance is too low",
"form-category-select-label": "Category",
"form-confirm-amount-total": "Total expense",
"form-confirm-amounts-label": "Amount",
"form-confirm-balance": "Your new balance",
"form-confirm-category-label": "Category",
"form-confirm-message-label": "Message",
"form-confirm-recips-label": "Recipient",
"form-confirm-title": "Confirmation",
"form-confirm-warn": "Please review before sending! Once sent, it cannot be undone.",
"form-exchange-label": "Program",
"form-exchange-select-label": "Select Program",
"form-invalid-amount-error": "Enter a valid amount",
"form-invalid-comment-error": "Comment is required",
"form-invalid-recipients-error": "Recipients are required",
"form-message-label": "Message",
"form-next-button": "Next",
"form-recips-label": "Recipient",
"form-recips-select-label": "Recipients",
"form-same-amounts-checkbox": "Same amount for recipients",
"form-sent-again-link": "Send another",
"form-sent-button": "Done",
"form-sent-label": "Sent!",
"form-submit-button": "Submit",
"header-send-rec-button": "Send a recognition",
"header-title": "Recognition",
"navigation-previous-page": "Back",
"rcvd-detail-amount": "Amount: ()",
"rcvd-detail-category-label": "Category: ",
"rcvd-detail-date": "Received: {{date}}",
"rcvd-detail-message-label": "Message",
"rcvd-detail-sender-label": "You received from",
"rcvd-tab-blank-msg": "You haven't received a recognition",
"rcvd-tab-label": "Received",
"sent-detail-amount": "Amount: ",
"sent-detail-amounts-label": "Amount",
"sent-detail-category-label": "Category: ",
"sent-detail-date": "Sent: {{date}} ",
"sent-detail-message-label": "Message",
"sent-detail-recips-header": "You sent to",
"sent-detail-recips-label": "Recipient",
"sent-tab-blank-msg": "You haven't given a recognition",
"sent-tab-details-link": "Show details",
"sent-tab-label": "Sent",
"sent-tab-mltpl-recips-link": "more"
}
}
{
"fr-FR": {
"form-amount-col": "Montant ({{minValue}}-{{maxValue}})",
"form-amount-total": "Dépense totale: {{totalExpense}}",
"form-balance": "Votre nouveau solde: {{balance}}",
"form-balance-low-error": "Le solde est trop faible",
"form-category-select-label": "Catégorie",
"form-confirm-amount-total": "Dépense totale",
"form-confirm-amounts-label": "Montant",
"form-confirm-balance": "Votre nouveau solde",
"form-confirm-category-label": "Catégorie",
"form-confirm-message-label": "Message",
"form-confirm-recips-label": "Destinataire",
"form-confirm-title": "Confirmation",
"form-confirm-warn": "Veuillez vérifier avant d'envoyer! Une fois envoyé, il ne peut être annulé.",
"form-exchange-label": "Programme",
"form-exchange-select-label": "Sélectionnez le programme",
"form-invalid-amount-error": "Entrez un montant valide",
"form-invalid-comment-error": "Un commentaire est requis",
"form-invalid-recipients-error": "Les destinataires sont requis",
"form-message-label": "Message",
"form-next-button": "Suivant",
"form-recips-label": "Destinataire",
"form-recips-select-label": "Destinataires",
"form-same-amounts-checkbox": "Même montant pour les bénéficiaires",
"form-sent-again-link": "Envoie un autre",
"form-sent-button": "Fait",
"form-sent-label": "Envoyé!",
"form-submit-button": "Soumettre",
"header-send-rec-button": "Envoyer une reconnaissance",
"header-title": "Reconnaissance",
"navigation-previous-page": "Dos",
"rcvd-detail-amount": "Montant: ()",
"rcvd-detail-category-label": "Catégorie: ",
"rcvd-detail-date": "Reçu: {{date}}",
"rcvd-detail-message-label": "Message",
"rcvd-detail-sender-label": "Vous avez reçu de",
"rcvd-tab-blank-msg": "Vous n'avez pas reçu de reconnaissance",
"rcvd-tab-label": "Reçu",
"sent-detail-amount": "Montant: ",
"sent-detail-amounts-label": "Montant",
"sent-detail-category-label": "Catégorie: ",
"sent-detail-date": "Envoyé: {{date}} ",
"sent-detail-message-label": "Message",
"sent-detail-recips-header": "Vous avez envoyé à",
"sent-detail-recips-label": "Destinataire",
"sent-tab-blank-msg": "Vous n'avez pas donné de reconnaissance",
"sent-tab-details-link": "Afficher les détails",
"sent-tab-label": "Envoyé",
"sent-tab-mltpl-recips-link": "plus"
},
"en-US": {
"form-amount-col": "Amount ({{minValue}}-{{maxValue}})",
"form-amount-total": "Total expense: {{totalExpense}}",
"form-balance": "Your new balance: {{balance}}",
"form-balance-low-error": "Balance is too low",
"form-category-select-label": "Category",
"form-confirm-amount-total": "Total expense",
"form-confirm-amounts-label": "Amount",
"form-confirm-balance": "Your new balance",
"form-confirm-category-label": "Category",
"form-confirm-message-label": "Message",
"form-confirm-recips-label": "Recipient",
"form-confirm-title": "Confirmation",
"form-confirm-warn": "Please review before sending! Once sent, it cannot be undone.",
"form-exchange-label": "Program",
"form-exchange-select-label": "Select Program",
"form-invalid-amount-error": "Enter a valid amount",
"form-invalid-comment-error": "Comment is required",
"form-invalid-recipients-error": "Recipients are required",
"form-message-label": "Message",
"form-next-button": "Next",
"form-recips-label": "Recipient",
"form-recips-select-label": "Recipients",
"form-same-amounts-checkbox": "Same amount for recipients",
"form-sent-again-link": "Send another",
"form-sent-button": "Done",
"form-sent-label": "Sent!",
"form-submit-button": "Submit",
"header-send-rec-button": "Send a recognition",
"header-title": "Recognition",
"navigation-previous-page": "Back",
"rcvd-detail-amount": "Amount: ()",
"rcvd-detail-category-label": "Category: ",
"rcvd-detail-date": "Received: {{date}}",
"rcvd-detail-message-label": "Message",
"rcvd-detail-sender-label": "You received from",
"rcvd-tab-blank-msg": "You haven't received a recognition",
"rcvd-tab-label": "Received",
"sent-detail-amount": "Amount: ",
"sent-detail-amounts-label": "Amount",
"sent-detail-category-label": "Category: ",
"sent-detail-date": "Sent: {{date}} ",
"sent-detail-message-label": "Message",
"sent-detail-recips-header": "You sent to",
"sent-detail-recips-label": "Recipient",
"sent-tab-blank-msg": "You haven't given a recognition",
"sent-tab-details-link": "Show details",
"sent-tab-label": "Sent",
"sent-tab-mltpl-recips-link": "more"
},
"es-MX": {
"form-amount-col": "Cantidad ({{minValue}}-{{maxValue}})",
"form-amount-total": "Gasto total: {{totalExpense}}",
"form-balance": "Tu nuevo saldo: {{balance}}",
"form-balance-low-error": "El saldo es demasiado bajo",
"form-category-select-label": "Categoría",
"form-confirm-amount-total": "Gasto total",
"form-confirm-amounts-label": "Cantidad",
"form-confirm-balance": "Tu nuevo saldo",
"form-confirm-category-label": "Categoría",
"form-confirm-message-label": "Mensaje",
"form-confirm-recips-label": "Destinataria",
"form-confirm-title": "Confirmación",
"form-confirm-warn": "¡Por favor revise antes de enviar! Una vez enviado, no se puede deshacer.",
"form-exchange-label": "Programa",
"form-exchange-select-label": "Seleccionar programa",
"form-invalid-amount-error": "Introduce un importe válido",
"form-invalid-comment-error": "Se requiere comentario",
"form-invalid-recipients-error": "Se requieren destinatarias",
"form-message-label": "Mensaje",
"form-next-button": "Próxima",
"form-recips-label": "Destinataria",
"form-recips-select-label": "Destinatarias",
"form-same-amounts-checkbox": "Misma cantidad para los destinatarios",
"form-sent-again-link": "Envie otro",
"form-sent-button": "Hecho",
"form-sent-label": "¡Enviada!",
"form-submit-button": "Entregar",
"header-send-rec-button": "Enviar un reconocimiento",
"header-title": "Reconocimiento",
"navigation-previous-page": "Atrás",
"rcvd-detail-amount": "Cantidad: ()",
"rcvd-detail-category-label": "Categoría: ",
"rcvd-detail-date": "Recibida: {{date}}",
"rcvd-detail-message-label": "Mensaje",
"rcvd-detail-sender-label": "recibiste de",
"rcvd-tab-blank-msg": "No has recibido un reconocimiento",
"rcvd-tab-label": "Recibida",
"sent-detail-amount": "Cantidad: ",
"sent-detail-amounts-label": "Cantidad",
"sent-detail-category-label": "Categoría: ",
"sent-detail-date": "Enviada: {{date}} ",
"sent-detail-message-label": "Mensaje",
"sent-detail-recips-header": "enviaste a",
"sent-detail-recips-label": "Destinataria",
"sent-tab-blank-msg": "No has dado un reconocimiento",
"sent-tab-details-link": "Mostrar detalles",
"sent-tab-label": "Enviada",
"sent-tab-mltpl-recips-link": "más"
}
}
Web Components
The translation key includes every string that's needed for a full translation of web components into a target language. This information will change as web components are updated and new text is introduced. Note that tokens like “{{count}}” should not be translated.
Work with your account team to ensure you have the current translation key.
{
"profile": {
"title": "My Profile",
"subtitle": "",
"level": "Level",
"next": "Next",
"maxLevelAchievedMessage": "",
"notApplicable": "N/A",
"redeemButton": "Redeem",
"firstName": "First Name:",
"firstNamePlaceholder": "Type first name here...",
"lastName": "Last Name:",
"lastNamePlaceholder": "Type last name here...",
"awardBalance": "Award Balance",
"uploadImage": "Upload Image",
"removeImage": "Remove Image",
"availableBalance": "Available Balance:",
"accountNotVerified": "Account Not Verified",
"currentBalance": "Current Balance:",
"balanceNotAvailable": "Not Available",
"balanceTitle": "Award Account"
},
"ots": {
"title": "Redeem OTS Card here!",
"subtitle": "",
"cardNumberTitle": "OTS code must be 16 digits (not including dashes)",
"cardNumberPlaceholder": "Enter OTS code here....",
"redeemButton": "Redeem",
"errorMessage": "Error redeeming OTS card. Please contact an admin",
"successMessage": "Congrats! {{points}} points were added to your account",
"welcomeMessage": "Great job earning an On-The-Spot Rewards Card!"
},
"missions": {
"title": "Missions",
"subtitle": "",
"missions": "Missions",
"userMissions": "My Missions",
"missionType": "Select Mission Type",
"pointsLeft": "Only {{points}} points left",
"completionsLeft": "Only {{completions}} completions left",
"timeRemaining": "Only {{time}} left",
"hour": "{{count}} hour",
"hour_plural": "{{count}} hours",
"day": "{{count}} day",
"day_plural": "{{count}} days",
"startsInLessThan": "Mission starts in less than",
"endsInLessThan": "Ends in less than {{time}}",
"completionCount": " (completed {{count}} time)",
"completionCount_plural": " (completed {{count}} times)",
"completionCountOnMissionCard": "Completed {{count}} time",
"completionCountOnMissionCardPlural": "Completed {{count}} times",
"repeatable": "Repeatable",
"group": "Group Mission",
"groupMembers": " as a group",
"completeAny": "Complete the following",
"completeAll": "Complete <b>ALL</b> of the following",
"completeOne": "Complete any <b>ONE</b> of the following",
"completeAllInSequence": "Complete all the following in the given <b>ORDER</b>",
"rewards": "Rewards you can earn",
"badge": "BADGE",
"noRewards": "No rewards given",
"expiringSoon": "Expiring Soon",
"inProgress": "In Progress",
"filters": "Filters",
"locked": "Locked",
"lockedMission": "Locked mission",
"lockedByChallengeDescription": "Must complete ",
"lockedByLevelDescription": "Must be ",
"lockedSectionSimple": "Mission is locked",
"ineligibleMission": "You're not eligible for this mission",
"lockedSectionMeetOne": "Meet the following requirement to unlock this Mission",
"lockedSectionMeetAll": "Meet <b>ALL</b> of the following to unlock this Mission",
"lockedSectionMeetAny": "Meet any <b>ONE</b> of the following to unlock this Mission",
"emptyMessage": "No Missions Found",
"emptyMessageDetail": "Selected Mission Not Found",
"remaining": "({{current}} of {{goal}} completed)",
"close": "Close",
"challengeUrlText": "Do The Mission",
"expires": "Mission expires",
"isExpired": "Mission has expired",
"selfReportingConfirmationText": "By marking as complete, I certify that I have completed this task.",
"complete": "Complete",
"cancel": "Cancel",
"todo": "To Do",
"completed": "Completed",
"rewardInLimitedSupply": "Reward in Limited Supply!",
"outOfStock": "Out of Stock",
"startsIn": "Mission starts ",
"completeOneOfTheseMissions": "Complete one of these missions",
"rewardExpired": "Reward expired!",
"rewardExpires": "Reward expires",
"rightNow": "just now",
"on": "on"
},
"events": {
"title": "Recent Achievements",
"subtitle": "",
"emptyMessage": "No recent activity to display"
},
"interaction": {
"title": "My Recognitions",
"subtitle": "",
"new": "New Recognition",
"notAuthorized": "You are not authorized to recognize others.",
"emptyMessage": "No recognitions found.",
"giverDefault": "You gave {{name}}",
"recipientDefault": "You received {{name}}",
"whoQuestion": "Who do you want to recognize?",
"back": "Back",
"noResults": "No results found",
"searchPlaceholder": "",
"whyQuestion": "Why do you want to recognize them?",
"commentLabel": "Comment (limited to 255 characters)",
"commentPlaceholder": "",
"howManyPoints": "Amount ({{min}} - {{max}})",
"yourBalance": "Your Balance",
"submitButton": "Submit",
"remainingBalance": "Your Balance",
"recognizeHeader": "Recognize",
"sentMessage": "Recognition Sent",
"doneButton": "Done",
"inputNumberError": "Enter a number",
"inputPositiveNumberError": "Enter a positive number",
"balanceTooLowError": "Balance is too low",
"inputRangeError": "Enter amount between {{min}} - {{max}}"
},
"quiz": {
"title":"Quiz",
"subtitle": "",
"emptyMessage": "No quizzes available at the moment...",
"resume": "Resume Quiz",
"getStarted": "Get Started!",
"back": "Back",
"question": "Question",
"answersRemaining": "{{remaining}} answers remaining",
"next": "Next",
"submit": "Submit",
"correctAnswerTitle": "Correct Answer",
"incorrectAnswerTitle": "Incorrect Answer",
"successHeader": "CONGRATULATIONS",
"failedHeader": "QUIZ FAILED",
"finishedMessage": "You finished the {{type}}.",
"successMessage": "You passed the quiz.",
"failedMessage": "Take the next quiz.",
"correct": "Correct",
"incorrect": "Incorrect"
},
"leaders": {
"title": "Leaders",
"subtitle": "",
"yourValue": "Your Value:",
"notIncluded": "Looks like you're not in this leaderboard",
"emptyMessage": "No leaders to show"
},
"trophy": {
"title": "Trophy Case",
"subtitle": "",
"emptyMessage": "Any trophies you earn will appear here.",
"networkError": "Could not retrieve data to display.",
"back": "Back",
"description": "Description",
"lastDateEarned": "Last Date Earned",
"timesEarned": "Times Earned",
"earned": "Earned:"
},
"go": {
"logoutConfirm": "Are you sure you want to logout?",
"yes": "Yes",
"no": "No",
"privacyStatement": "This site uses cookies to enhance your experience. To find out more, review our ",
"privacyNotice": "Privacy Notice",
"acknowledge": "Acknowledge",
"unsubscribeInstructions": "To Unsubscribe, See Browser Site Settings.",
"pushWarning": "Push Notifications are currently blocked! Visit your browser settings to allow notifications for this site.",
"notificationSettings": "Notification Settings",
"chooseNotifications": "Choose what content gets sent to you.",
"browserSupport": "Your browser does not support",
"webNotifications": "web notifications",
"allowPush": "Allow Push Notifications for this device"
},
"Award account does not exist.": "Award account does not exist.",
"User is not enrolled": "User is not enrolled",
"Home": "Home",
"Teams": "Teams",
"Information": "Information",
"Recognition": "Recognition",
"Profile": "Profile",
"Manager": "Manager",
"Settings": "Settings",
"Logout": "Logout",
"Community": "Community",
"Next Steps": "Next Steps",
"Push notification": "Push notification"
}
{
"profile": {
"title": "Mi perfil",
"subtitle": "",
"level": "Nivel",
"next": "próximo",
"maxLevelAchievedMessage": "",
"notApplicable": "N/A",
"redeemButton": "Redimir",
"firstName": "Primer nombre:",
"firstNamePlaceholder": "Escriba el nombre aquí ...",
"lastName": "Apellido:",
"lastNamePlaceholder": "Escriba el apellido aquí ...",
"awardBalance": "Saldo de premios",
"uploadImage": "Cargar imagen",
"removeImage": "Quita la imagen",
"availableBalance": "Saldo disponible:",
"accountNotVerified": "Cuenta no verificada",
"currentBalance": "Saldo actual:",
"balanceNotAvailable": "No disponible",
"balanceTitle": "Cuenta De Premio"
},
"ots": {
"title": "¡Canjee la tarjeta OTS aquí!",
"subtitle": "",
"cardNumberTitle": "El código OTS debe tener 16 dígitos (sin incluir guiones)",
"cardNumberPlaceholder": "Ingrese el código OTS aquí ....",
"redeemButton": "Redimir",
"errorMessage": "Error al canjear la tarjeta OTS. Comuníquese con un administrador",
"successMessage": "¡Felicitaciones! Se agregaron {{points}} puntos a su cuenta",
"welcomeMessage": "¡Buen trabajo al ganar una tarjeta de recompensas en el acto!"
},
"missions": {
"title": "Misiones",
"subtitle": "",
"missions": "Misiones",
"userMissions": "Mis Misiones",
"missionType": "Seleccione el Tipo de Misión",
"pointsLeft": "Solo quedan {{points}} puntos",
"completionsLeft": "Solo quedan {{completions}} terminaciones",
"timeRemaining": "Solo queda {{time}}",
"hour": "{{count}} hora",
"hour_plural": "{{count}} horas",
"day": "{{count}} día",
"day_plural": "{{count}} días",
"startsInLessThan": "La misión comienza en menos de",
"endsInLessThan": "Termina en menos de {{time}}",
"completionCount": " (tiempo {{count}} completado)",
"completionCount_plural": " (completado {{count}} veces)",
"completionCountOnMissionCard": "Completado {{count}} completado",
"completionCountOnMissionCardPlural": "Completado {{count}} veces",
"repeatable": "Repetible",
"group": "Misión de Grupo",
"groupMembers": " como un grupo",
"completeAny": "Complete lo siguiente",
"completeAll": "Complete <b>TODO</b> lo siguiente",
"completeOne": "Complete <b>UNO</b> de los siguientes",
"completeAllInSequence": "Complete todo lo siguiente en el <b>ORDEN dado</b>",
"rewards": "Recompensas que puede ganar",
"badge": "INSIGNIA",
"noRewards": "No se dan recompensas",
"expiringSoon": "Expirará Pronto",
"inProgress": "En Progreso",
"filters": "Filtros",
"locked": "Bloqueado",
"lockedMission": "Misión bloqueada",
"lockedByChallengeDescription": "Debe completar ",
"lockedByLevelDescription": "Debe ser ",
"lockedSectionSimple": "La misión está bloqueada",
"ineligibleMission": "No eres elegible para esta misión",
"lockedSectionMeetOne": "Cumplir con el siguiente requisito para desbloquear esta misión",
"lockedSectionMeetAll": "Conoce <b>TODOS</b> los siguientes para desbloquear esta misión",
"lockedSectionMeetAny": "Conoce a <b>UNO</b> de los siguientes para desbloquear esta misión",
"emptyMessage": "No Se Encontraron Misiones",
"emptyMessageDetail": "Misión Seleccionada No Encontrada",
"remaining": "({{current}} de {{goal}} completado)",
"close": "Cierre",
"challengeUrlText": "Hacer la misión",
"expires": "La misión expira",
"isExpired": "La misión ha expirado",
"selfReportingConfirmationText": "Al marcar como completado, certifico que he completado esta tarea.",
"complete": "Completo",
"cancel": "Cancelar",
"todo": "Que hacer",
"completed": "Terminado",
"rewardInLimitedSupply": "Recompensa en Suministro Limitado",
"outOfStock": "Agotado",
"startsIn": "Comienza la misión ",
"completeOneOfTheseMissions": "Completa una de estas misiones.",
"rewardExpired": "¡La recompensa ha caducado!",
"rewardExpires": "La recompensa caduca",
"rightNow": "ahora mismo",
"on": "en"
},
"events": {
"title": "Logros recientes",
"subtitle": "",
"emptyMessage": "No hay actividad reciente para mostrar"
},
"interaction": {
"title": "Mis reconocimientos",
"subtitle": "",
"new": "Nuevo reconocimiento",
"notAuthorized": "No está autorizado a reconocer a otros.",
"emptyMessage": "No se encontraron reconocimientos.",
"giverDefault": "Le diste {{name}}",
"recipientDefault": "Recibiste {{name}}",
"whoQuestion": "¿A quién quieres reconocer?",
"back": "atrás",
"noResults": "No se han encontrado resultados",
"searchPlaceholder": "",
"whyQuestion": "¿Por qué quieres reconocerlos?",
"commentLabel": "Comentario (Limitado a 255 caracteres)",
"commentPlaceholder": "",
"howManyPoints": "Monto ({{min}} - {{max}})",
"yourBalance": "Tu balance",
"submitButton": "Entregar",
"remainingBalance": "Tu balance",
"recognizeHeader": "Reconocer",
"sentMessage": "Reconocimiento enviado",
"doneButton": "Hecho"
},
"quiz": {
"title": "Prueba",
"subtitle": "",
"emptyMessage": "No hay cuestionarios disponibles en este momento ...",
"resume": "Reanudar cuestionario",
"getStarted": "¡Empezar!",
"back": "atrás",
"question": "Pregunta",
"answersRemaining": "{{remaining}} respuestas restantes",
"next": "próximo",
"submit": "Entregar",
"correctAnswerTitle": "Respuesta correcta",
"incorrectAnswerTitle": "Respuesta incorrecta",
"successHeader": "FELICIDADES",
"failedHeader": "PRUEBA FALLIDA",
"finishedMessage": "Terminaste el {{type}}.",
"successMessage": "Pasaste la prueba.",
"failedMessage": "Realice la siguiente prueba.",
"correct": "Correcto",
"incorrect": "Incorrecto"
},
"leaders": {
"title": "Líderes",
"subtitle": "",
"yourValue": "Tu valor:",
"notIncluded": "Parece que no estás en esta tabla de clasificación",
"emptyMessage": "No hay líderes para mostrar"
},
"trophy": {
"title": "Estuche de trofeo",
"subtitle": "",
"emptyMessage": "Los trofeos que ganes aparecerán aquí.",
"networkError": "No se pudieron recuperar los datos para mostrar.",
"back": "atrás",
"description": "Descripción",
"lastDateEarned": "Última fecha de obtención",
"timesEarned": "Tiempos ganados",
"earned": "Ganado:"
},
"go": {
"logoutConfirm": "¿Está seguro de que desea cerrar la sesión?",
"yes": "sí",
"no": "No",
"privacyStatement": "Este sitio utiliza cookies para mejorar su experiencia. Para obtener más información, revise nuestro",
"privacyNotice": "Aviso de Privacidad",
"acknowledge": "Reconocer",
"unsubscribeInstructions": "Para cancelar la suscripción, consulte Configuración del sitio del navegador.",
"pushWarning": "¡Las notificaciones push están bloqueadas actualmente! Visite la configuración de su navegador para permitir notificaciones para este sitio.",
"notificationSettings": "Configuración de las notificaciones",
"chooseNotifications": "Elija qué contenido se le enviará.",
"browserSupport": "Su navegador no es compatible",
"webNotifications": "notificaciones web",
"allowPush": "Permitir notificaciones automáticas para este dispositivo"
},
"Award account does not exist.": "La cuenta de premio no existe.",
"User is not enrolled": "El usuario no está inscrito",
"Home": "Hogar",
"Teams": "Equipos",
"Information": "Información",
"Recognition": "Reconocimiento",
"Profile": "Perfil",
"Manager": "Gerente",
"Settings": "Ajustes",
"Logout": "Cerrar sesión",
"Community": "Comunidad",
"Next Steps": "Próximos pasos",
"Push notification": "Notificación de inserción"
}
See also