Pass String Literals
This topic applies to the Kilimanjaro release of SCA and earlier. If you are localizing text using an extension, see Localize Text in an Extension.
In the following example, the string literal Country is required gets translated to Se requiere país when the site language is Spanish, matching the name-value pair in the SC.Translations array of the es_ES.js file.
_.translate() function used in Address.Model.js file:
validation: {
...
, country: { required: true, msg: _('Country is required').translate() }
...
}
Corresponding JSON used in ShoppingApplication@x.x.x >Languages > es_ES.js:
SC.Translations = {
...
"Continue Shopping":"Continuar comprando",
"Continue Shopping on our $(0)":"Continuar comprando en nuestro $(0)",
"Country is required":"Se requiere país",
"Credit Card Number is invalid":"Número de tarjeta de crédito no válido",
"Credit Card type is not supported":"No se admite el tipo de tarjeta de crédito",
...
};
Values from the SC.Translations
arrays go through a translation function, so the values you set in the array for a language might not always match exactly what shows up in your web store.
Many string literals are translated on the client side with the _.translate()
function. When you set a specific language, string literals in _.translate()
functions are replaced with language-specific strings from the SC.Translations
arrays in the JavaScript language files.
The language JavaScript files are in the languages subfolder for each application module—for example, Modules > suite_commerce > ShoppingApplication.x.x.x > Languages. In the final Distribution folder, they're in the languages subfolder at the root.
If a literal in a _.translate()
function doesn't match a name-value pair in the SC.Translations
array for the active language, it won't be replaced.
For example, the string literal Country is required
gets translated to Se requiere pais
when Spanish is the active language, matching the name-value pair in the SC.Translations
array of the es_ES.js file in the languages folder.
_.translate() function used in Address.Model.js file:
validation: {
...
, country: { required: true, msg: _('Country is required').translate() }
...
}
Corresponding JSON used in ShoppingApplication@x.x.x >Languages > es_ES.js:
SC.Translations = {
...
"Continue Shopping":"Continuar comprando",
"Continue Shopping on our $(0)":"Continuar comprando en nuestro $(0)",
"Country is required":"Se requiere país",
"Credit Card Number is invalid":"Número de tarjeta de crédito no válido",
"Credit Card type is not supported":"No se admite el tipo de tarjeta de crédito",
...
};
Values from the SC.Translations
arrays go to a translation function, so there might not always be a direct match between the values you set in the array and what actually appears in your web store.