https://github.com/miyagi-dev/twig-drupal-string
Twig.js extension for Drupal String module filter support
https://github.com/miyagi-dev/twig-drupal-string
drupal string translation twig
Last synced: about 1 month ago
JSON representation
Twig.js extension for Drupal String module filter support
- Host: GitHub
- URL: https://github.com/miyagi-dev/twig-drupal-string
- Owner: miyagi-dev
- License: mit
- Created: 2024-03-21T13:20:27.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-02-12T06:47:28.000Z (about 1 year ago)
- Last Synced: 2025-11-21T20:13:04.589Z (4 months ago)
- Topics: drupal, string, translation, twig
- Language: JavaScript
- Homepage:
- Size: 159 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Twig Drupal String
Add support for the Drupal [Twig `t` and `trans` filters](https://symfony.com/doc/current/translation.html#translation-filters) in combination with the [String module](https://www.drupal.org/project/string) and [Twig.js](https://github.com/twigjs/twig.js/).
## Installation
Add the package to your dependencies:
```sh
npm install --save-dev twig twig-drupal-string
```
## Example
Crate a file called `strings.yaml` with the following content:
```yaml
welcome:
default: Welcome
```
Then create `render-template.mjs`:
```js
import Twig from "twig";
import { twigDrupalString } from "twig-drupal-string";
twigDrupalString({
Twig,
files: ["strings.yaml"],
});
const data = `
{{ 'welcome'|t }}
`;
const template = Twig.twig({ data });
const output = template.render();
console.log(output);
```
Run the example with:
```sh
node render-template.mjs
# The output is:
#
Welcome
```
## 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`:
```yaml
greeting:
default: Hello @name
```
Then adjust the template inside `render-template.mjs`:
```js
const data = `
{{ 'greeting'|t({'@name': 'world'}) }}
`;
const template = Twig.twig({ data });
const output = template.render();
// Output will be:
//
Hello world
```
## Custom filter names
By default, the filter names `t` and `trans` are supported. You can overwrite or extend these names with the `filterNames` option:
```js
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:
```js
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](CONTRIBUTING.md) for more information.
## Sponsors