# Addtextdomain task

Add the text domain to gettext functions in your plugin or theme.

**Warning:** This task will overwrite files in your project. Be sure to have a backup or commit any changes before running it. Viewing a diff after the task has run is a good way to verify any changes. To preview changes without updating files, use the `--dry-run` switch when running the task.

_Run this task with the `grunt addtextdomain` command (or `grunt addtextdomain --dry-run` to preview)._


## Overview

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

```js
grunt.initConfig({
    addtextdomain: {
        options: {
            i18nToolsPath: '', // Path to the i18n tools directory.
            textdomain: '',    // Project text domain.
            updateDomains: []  // List of text domains to replace.
        },
        target: {
            files: {}
        }
    }
});
```


## Options

### options.i18nToolsPath
Type: `String`

Path to a local copy of the WordPress i18n tools. May be relative to the project or an absolute path. Defaults to a bundled version of the i18n tools.

### options.textdomain
Type: `String`  
Default value: `''`  
Example value: `'plugin-or-theme-slug'`

Defaults to the "Text Domain" header if it exists, otherwise uses the project directory name.

### options.updateDomains
Type: `Array|true`  
Default value: `[]`  
Example value: `[ 'original-domain', 'vendor-domain' ]`

A list of text domains to replace with the new text domain. Setting the value to `true` will update all text domains with the new text domain.


## Usage Examples

Options may be specified at the task or target level, but are optional. Each target must define the files that should be processed. It's not necessary to declare a destination since the files will be updated in place.

```js
grunt.initConfig({
    addtextdomain: {
        target: {
            files: {
                src: [
                    '*.php',
                    '**/*.php',
                    '!node_modules/**',
                    '!tests/**'
                ]
            }
        }
    }
});
```

This task supports the same file mapping format Grunt supports. Please read [Globbing patterns](http://gruntjs.com/configuring-tasks#globbing-patterns) and [Building the files object dynamically](http://gruntjs.com/configuring-tasks#building-the-files-object-dynamically) for additional details.
