0.5.0 • Published 7 years ago

grunt-gettext-parser v0.5.0

Weekly downloads
16
License
MIT
Repository
github
Last release
7 years ago

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'
            },
            'path/to/output.php': ['views/**/*.twig']
        },
    },
});

Options

style

wordpress (default) 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.

0.5.0

7 years ago

0.4.0

7 years ago

0.3.2

7 years ago

0.2.1

8 years ago

0.1.0

9 years ago