Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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: 24 days ago
JSON representation

Twig.js extension for Drupal String module filter support

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


Factorial GmbH