1
0

translation-test-plugin.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import { OnApplicationBootstrap } from '@nestjs/common';
  2. import { Args, Query, Resolver } from '@nestjs/graphql';
  3. import {
  4. Ctx,
  5. ErrorResult,
  6. I18nService,
  7. PluginCommonModule,
  8. RequestContext,
  9. VendurePlugin,
  10. } from '@vendure/core';
  11. import gql from 'graphql-tag';
  12. import path from 'path';
  13. class CustomError extends ErrorResult {
  14. readonly __typename = 'CustomError';
  15. readonly errorCode = 'CUSTOM_ERROR';
  16. readonly message = 'CUSTOM_ERROR';
  17. }
  18. class NewError extends ErrorResult {
  19. readonly __typename = 'NewError';
  20. readonly errorCode = 'NEW_ERROR';
  21. readonly message = 'NEW_ERROR';
  22. }
  23. @Resolver()
  24. class TestResolver {
  25. @Query()
  26. async customErrorMessage(@Ctx() ctx: RequestContext, @Args() args: any) {
  27. return new CustomError();
  28. }
  29. @Query()
  30. async newErrorMessage(@Ctx() ctx: RequestContext, @Args() args: any) {
  31. return new NewError();
  32. }
  33. }
  34. export const CUSTOM_ERROR_MESSAGE_TRANSLATION = 'A custom error message';
  35. @VendurePlugin({
  36. imports: [PluginCommonModule],
  37. providers: [I18nService],
  38. adminApiExtensions: {
  39. schema: gql`
  40. extend type Query {
  41. customErrorMessage: CustomResult
  42. newErrorMessage: CustomResult
  43. }
  44. type CustomError implements ErrorResult {
  45. errorCode: ErrorCode!
  46. message: String!
  47. }
  48. type NewError implements ErrorResult {
  49. errorCode: ErrorCode!
  50. message: String!
  51. }
  52. "Return anything and the error that should be thrown"
  53. union CustomResult = Product | CustomError | NewError
  54. `,
  55. resolvers: [TestResolver],
  56. },
  57. })
  58. export class TranslationTestPlugin implements OnApplicationBootstrap {
  59. constructor(private i18nService: I18nService) {}
  60. onApplicationBootstrap(): any {
  61. this.i18nService.addTranslation('en', {
  62. errorResult: {
  63. CUSTOM_ERROR: CUSTOM_ERROR_MESSAGE_TRANSLATION,
  64. },
  65. });
  66. this.i18nService.addTranslation('de', {
  67. errorResult: {
  68. CUSTOM_ERROR: 'DE_' + CUSTOM_ERROR_MESSAGE_TRANSLATION,
  69. },
  70. });
  71. this.i18nService.addTranslationFile('en', path.join(__dirname, '../i18n/en.json'));
  72. this.i18nService.addTranslationFile('de', path.join(__dirname, '../i18n/de.json'));
  73. }
  74. }