Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/miyagi-dev/twig-drupal-string
- Owner: miyagi-dev
- License: mit
- Created: 2024-03-21T13:20:27.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-05-13T13:31:29.000Z (9 months ago)
- Last Synced: 2025-01-07T14:14:34.527Z (28 days ago)
- Topics: drupal, string, translation, twig
- Language: JavaScript
- Homepage:
- Size: 135 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