Skip to content

miyagi-dev/twig-drupal-string

Repository files navigation

Twig Drupal String

Add support for the Drupal Twig t and trans filters in combination with the String module and Twig.js.

Installation

Add the package to your dependencies:

npm install --save-dev twig twig-drupal-string

Example

Crate a file called strings.yaml with the following content:

welcome:
  default: Welcome

Then create render-template.mjs:

import Twig from "twig";
import { twigDrupalString } from "twig-drupal-string";

twigDrupalString({
  Twig,
  files: ["strings.yaml"],
});

const data = `<h1>{{ 'welcome'|t }}</h1>`;
const template = Twig.twig({ data });
const output = template.render();

console.log(output);

Run the example with:

node render-template.mjs

# The output is:
# <h1>Welcome</h1>

Placeholders

The filter also supports placeholders inside the strings that will be replaced with dynamic data during template rendering.

Add the following to strings.yaml:

greeting:
  default: Hello @name

Then adjust the template inside render-template.mjs:

const data = `<h1>{{ 'greeting'|t({'@name': 'world'}) }}</h1>`;
const template = Twig.twig({ data });
const output = template.render();

// Output will be:
// <h1>Hello world</h1>

Custom filter names

By default, the filter names t and trans are supported. You can overwrite or extend these names with the filterNames option:

twigDrupalString({
  Twig,
  files: ["strings.yaml"],
  filterNames: ["t", "trans", "tc"],
});

Watch mode

For development purposes, a watch mode can be enabled that reloads the translation strings from disk if any of the referenced files change.

Set the watch options:

twigDrupalString({
  Twig,
  files: ["strings.yaml"],
  watch: true,
});

Options

The twigDrupalString method receives an options object with the following properties:

Property Type Description
Twig Twig Twig.js engine instance
files string[] Array of paths to translation string files
filterNames string[] Array of filter name strings, default ["t", "trans"]
watch boolean Enable or disable watch mode, default false

Contributing

See contributing documentation for more information.

Sponsors

Factorial GmbH

About

Twig.js extension for Drupal String module filter support

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •