Skip to content

Extract gettext translation calls from Twig templates to a single PHP file for parsing. Support for i18n extension, Drupal 8 templates, and Wordpress Timber

License

Notifications You must be signed in to change notification settings

gwa/grunt-gettext-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

grunt-gettext-parser

Build Status

Extract gettext calls from templates to a single PHP file that can then be used to create a .po file for translations.

A grunt task that parses gettext calls from twig (i18n Extension, Timber for Wordpress, or Drupal 8) files and creates a "dummy" PHP file with gettext calls.

The dummy file can then be parsed using grunt-pot to create a .pot or .po file.

i18n

Running the task in i18n mode on the following:

<!-- twig template with i18n extension -->
<span>{{ trans "my text" }}</span>
<div>
{% trans %}
    other text with a {{ variable }}
{% endtrans %}
</div>

results in:

<?php
gettext('my text');
gettext('other text with a %variable%');

Wordpress

Running the task in wordpress mode for the mydomain text domain on the following:

<!-- twig template for Timer -->
<span>{{ __('my text', 'mydomain') }}</span>
<span>{{ __('other text', 'otherdomain') }}</span>

results in:

<?php
gettext('my text');

(Note that otherdomain translations are excluded.)

Drupal

Running the task in drupal mode on the following:

<!-- Drupal 8 module twig template -->
<span>{{ 'my text'|t }}</span>

also results in:

<?php
gettext('my text');

grunt-pot can subsequently be used to create a .pot file and update any existing .po files.

Getting Started

This plugin requires Grunt ~0.4.5

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-gettext-parser --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-gettext-parser');

The "gettext_parser" task

Overview

In your project's Gruntfile, add a section named gettext_parser to the data object passed into grunt.initConfig().

grunt.initConfig({
    gettext_parser: {
        your_target: {
            options: {
                style: 'wordpress',
                textdomain: 'mydomain',
                // Changes the name of the rendered function. Defaults to `gettext`.
                output_function: 'myFunction'
            },
            files: {
                'path/to/output.php': ['views/**/*.twig']
            }
        },
    },
});

Options

style

wordpress (default) i18n, or drupal.

textdomain

Wordpress only: The textdomain to be parsed. gettext calls to other domains will be ignored. Set to null to parse all text domains.

output_function

gettext (default)

add_textdomain

false (default)

Write the textdomain to the php file. Helpful for use with checktextdomain libraries.

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

About

Extract gettext translation calls from Twig templates to a single PHP file for parsing. Support for i18n extension, Drupal 8 templates, and Wordpress Timber

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published