Skip to main content

# Handlebars

To enable handlebars support make use of the `viewEngine` option inside your `I18nModule`.

src/app.module.ts

      I18nModule.forRoot({
        fallbackLanguage: 'en',
        loaderOptions: {
          path: path.join(__dirname, '/i18n/'),
        },
    +   viewEngine: 'hbs'
      })

caution

Handlebars is imported dynamically, so make sure to install it (`npm i hbs`). Otherwise `nestjs-i18n` can't register the helper function.

## Example usage​

Let's try to do some translations with handlebar templates.

src/i18n/en/test.json

    {
      "HELLO": "Hello {username}",
    }

src/app.controller.ts

    @Controller('Test')
    export class TestController {
      @Get('/')
      @Render('page')
      index(): any {
        return { helloArgs: { username: "Toon" } };
      }
    }

src/view/page.hbs

    <!doctype html>
    <html>
      <body>
        <h1>{{ t 'test.HELLO' helloArgs }}</h1>
      </body>
    </html>

tip

The third argument `helloArgs` is optional. This is only needed if you want to pass along arugments to your translations.

### Result​

#

    Hello Toon