Translating
Translating a token
to the corresponding Phrase
is the core mechanism of Vay. To translate a token, use the translate
method of a VayProvider
created previously.
INFO
Not sure how a VayProvider
is created? Take a look at the Getting Started section.
Using the translate
function
// Import the created translation function
import { t } from './i18n.provider.ts';
console.log(t('start')); // Outputs: 'Phrase'
console.log(t('going.down')); // Outputs: 'A Level'
console.log(t('deeply.nested.phrase')); // Outputs: 'Are also possible'
import { createProvider, defineDictionary, defineConfig } from '@vayjs/vay';
export const i18n = createProvider(
defineConfig({ defaultLocale: 'en' }),
// Add a simple dictionary with textual phrases
defineDictionary('en', {
start: 'Phrase',
going: {
down: 'A Level',
},
deeply: {
nested: {
phrases: 'Are also possible',
},
},
}),
);
// Reassign and export the translate function to make it easier to use
export const t = i18n.translate;
The translate function also accepts additional translation data (which we will ignore for now) and the ability to override the language currently set on the translation provider, by providing a locale to the function directly.
console.log(t('token', undefined, 'en')); // Outputs the token in English
console.log(t('token', undefined, 'es')); // Outputs the token in Spanish
API
The translate
method is used to access a phrase from a provided token.
Type:
translate<Token extends PropertyPath<Phrases>>(token: Token, tData: TData | undefined, locale?: ISO639Code): string
Template:
Token
: (Type:PropertyPath<Phrases>
): The token used to identify the correct phrase.
Parameters:
token
: (Type:PropertyPath<Phrases>
): The token used to identify the correct phrase.[tData]
: (Type:Record<PropertyKey, unknown>
): Additional data that can be passed to the function to configure interpolation, context as well as pluralization.[locale]
: (Type:ISO639Code
): A optional locale to override the provider's locale.
Returns:
A string if a match was found, the token itself if no match was found or if there was an error during translation.