Translation
Using addTranslation
inside the onApplicationBootstrap
(Nestjs lifecycle hooks) of a Plugin is the easiest way to add new translations.
While Vendure is only using error
, errorResult
and message
resource keys you are free to use your own.
Translatable Error
This example shows how to create a custom translatable error
/**
* Custom error class
*/
class CustomError extends ErrorResult {
readonly __typename = 'CustomError';
readonly errorCode = 'CUSTOM_ERROR';
readonly message = 'CUSTOM_ERROR'; //< looks up errorResult.CUSTOM_ERROR
}
@VendurePlugin({
imports: [PluginCommonModule],
providers: [I18nService],
// ...
})
export class TranslationTestPlugin implements OnApplicationBootstrap {
constructor(private i18nService: I18nService) {
}
onApplicationBootstrap(): any {
this.i18nService.addTranslation('en', {
errorResult: {
CUSTOM_ERROR: 'A custom error message',
},
anything: {
foo: 'bar'
}
});
this.i18nService.addTranslation('de', {
errorResult: {
CUSTOM_ERROR: 'Eine eigene Fehlermeldung',
},
anything: {
foo: 'bar'
}
});
}
}
To receive an error in a specific language you need to use the languageCode
query parameter
query(QUERY_WITH_ERROR_RESULT, { variables }, { languageCode: LanguageCode.de });
Use translations
Vendure uses the internationalization-framework i18next.
Therefore you are free to use the i18next translate function to access keys
i18next.t('error.any-message');