Documentation

I18nTextDomainFixerSniff extends AbstractFunctionParameterSniff

FinalYes

Comprehensive I18n text domain fixer tool.

This sniff can:

  • Add missing text domains.
  • Replace text domains based on an array of old values to a new value.

Note: Without a user-defined configuration in a custom ruleset, this sniff will be ignored.

Tags
since
1.2.0

Table of Contents

Properties

$exclude  : array<string|int, mixed>
Exclude groups.
$new_text_domain  : string
New text domain.
$old_text_domain  : array<string|int, string>
Old text domain(s) to replace.
$supportedTokenizers  : array<string|int, mixed>
A list of tokenizers this sniff supports.
$unittest_groups  : array<string|int, mixed>
Groups of function data to check against.
$excluded_groups  : array<string|int, mixed>
Cache for the excluded groups information.
$group_name  : string
The group name for this group of functions.
$groups  : array<string|int, mixed>
Cache for the group information.
$phpcsFile  : File
The current file being sniffed.
$regex_pattern  : string
Regex pattern with placeholder for the function names.
$target_functions  : array<string, array<string, int|string>>
The WP Internationalization related functions to target for the replacements.
$tokens  : array<string|int, mixed>
The list of tokens in the current file being sniffed.
$header_found  : bool
Whether the plugin/theme header has been seen and fixed yet.
$header_regex_template  : string
Regex template to match theme/plugin headers.
$is_valid  : bool
Whether a valid new text domain was found.
$plugin_header_regex  : string
Regex to match plugin headers.
$plugin_headers  : array<string, bool>
Possible headers for a plugin.
$tab_width  : int
The --tab-width CLI value that is being used.
$theme_header_regex  : string
Regex to match theme headers.
$theme_headers  : array<string, bool>
Possible headers for a theme.
$validated_textdomain  : string
The new text domain as validated.

Methods

check_for_matches()  : int|void
Verify if the current token is one of the targeted functions.
getGroups()  : array<string, array<string, array<string|int, string>>>
Groups of functions to restrict.
is_targetted_token()  : bool
Verify if the current token is a function call. Behaves like the parent method, except that it returns false if there is no opening parenthesis after the function name (likely a function import) or if it is a first class callable.
process()  : int|void
Set sniff properties and hand off to child class for processing of the token.
process_comments()  : int|void
Process comments to find the plugin/theme headers.
process_first_class_callable()  : int|void
Process the function if it is used as a first class callable.
process_matched_token()  : int|void
Process a matched token.
process_no_parameters()  : void
Process the function if no parameters were found.
process_parameters()  : void
Process the parameters of a matched function.
process_token()  : int|void
Processes this test, when one of its tokens is encountered.
register()  : array<string|int, mixed>
Returns an array of tokens this test wants to listen for.
examine_comment_line()  : array<string|int, mixed>
Examine an individual token in a larger comment for plugin/theme headers.
prepare_name_for_regex()  : string
Prepare the function name for use in a regular expression.
setup_groups()  : bool
Set up the regular expressions for each group.

Properties

$exclude

Exclude groups.

public array<string|int, mixed> $exclude = array()

Example: 'switch_to_blog,user_meta'

Tags
since
0.3.0
1.0.0

This property now expects to be passed an array. Previously a comma-delimited string was expected.

$old_text_domain

Old text domain(s) to replace.

public array<string|int, string> $old_text_domain
Tags
since
1.2.0

$supportedTokenizers

A list of tokenizers this sniff supports.

public array<string|int, mixed> $supportedTokenizers = array('PHP', 'CSS')
Tags
since
1.2.0

$unittest_groups

Groups of function data to check against.

public static array<string|int, mixed> $unittest_groups = array()

Don't use this in extended classes, override getGroups() instead. This is only used for Unit tests.

Tags
since
0.10.0

$group_name

The group name for this group of functions.

protected string $group_name = 'i18nfixer'
Tags
since
1.2.0

$phpcsFile

The current file being sniffed.

protected File $phpcsFile
Tags
since
0.4.0

$target_functions

The WP Internationalization related functions to target for the replacements.

protected array<string, array<string, int|string>> $target_functions = array( 'load_textdomain' => array('position' => 1, 'name' => 'domain'), 'load_plugin_textdomain' => array('position' => 1, 'name' => 'domain'), 'load_muplugin_textdomain' => array('position' => 1, 'name' => 'domain'), 'load_theme_textdomain' => array('position' => 1, 'name' => 'domain'), 'load_child_theme_textdomain' => array('position' => 1, 'name' => 'domain'), 'load_script_textdomain' => array('position' => 2, 'name' => 'domain'), 'unload_textdomain' => array('position' => 1, 'name' => 'domain'), '__' => array('position' => 2, 'name' => 'domain'), '_e' => array('position' => 2, 'name' => 'domain'), '_x' => array('position' => 3, 'name' => 'domain'), '_ex' => array('position' => 3, 'name' => 'domain'), '_n' => array('position' => 4, 'name' => 'domain'), '_nx' => array('position' => 5, 'name' => 'domain'), '_n_noop' => array('position' => 3, 'name' => 'domain'), '_nx_noop' => array('position' => 4, 'name' => 'domain'), 'translate_nooped_plural' => array('position' => 3, 'name' => 'domain'), 'esc_html__' => array('position' => 2, 'name' => 'domain'), 'esc_html_e' => array('position' => 2, 'name' => 'domain'), 'esc_html_x' => array('position' => 3, 'name' => 'domain'), 'esc_attr__' => array('position' => 2, 'name' => 'domain'), 'esc_attr_e' => array('position' => 2, 'name' => 'domain'), 'esc_attr_x' => array('position' => 3, 'name' => 'domain'), 'is_textdomain_loaded' => array('position' => 1, 'name' => 'domain'), 'get_translations_for_domain' => array('position' => 1, 'name' => 'domain'), // Deprecated functions. '_c' => array('position' => 2, 'name' => 'domain'), '_nc' => array('position' => 4, 'name' => 'domain'), '__ngettext' => array('position' => 4, 'name' => 'domain'), '__ngettext_noop' => array('position' => 3, 'name' => 'domain'), 'translate_with_context' => array('position' => 2, 'name' => 'domain'), // Shouldn't be used by plugins/themes. 'translate' => array('position' => 2, 'name' => 'domain'), 'translate_with_gettext_context' => array('position' => 3, 'name' => 'domain'), // WP private functions. Shouldn't be used by plugins/themes. '_load_textdomain_just_in_time' => array('position' => 1, 'name' => 'domain'), '_get_path_to_translation_from_lang_dir' => array('position' => 1, 'name' => 'domain'), '_get_path_to_translation' => array('position' => 1, 'name' => 'domain'), )

Function name as key, array with target parameter and name as value.

Tags
since
1.2.0
3.0.0

The format of the value has changed from a numerically indexed array containing parameter positions to an array with the parameter position as the index and the parameter name as value.

$tokens

The list of tokens in the current file being sniffed.

protected array<string|int, mixed> $tokens
Tags
since
0.4.0

$header_found

Whether the plugin/theme header has been seen and fixed yet.

private bool $header_found = false
Tags
since
1.2.0

$header_regex_template

Regex template to match theme/plugin headers.

private string $header_regex_template = '`^(?:\s*(?:(?:\*|//)\s*)?)?(%s)\s*:\s*([^\r\n]+)`'
Tags
since
1.2.0

$plugin_header_regex

Regex to match plugin headers.

private string $plugin_header_regex

Set from within the register() method.

Tags
since
1.2.0

$plugin_headers

Possible headers for a plugin.

private array<string, bool> $plugin_headers = array('Plugin Name' => true, 'Plugin URI' => false, 'Description' => false, 'Version' => false, 'Requires at least' => false, 'Requires PHP' => false, 'Author' => false, 'Author URI' => false, 'License' => false, 'License URI' => false, 'Text Domain' => false, 'Domain Path' => false, 'Network' => false, 'Update URI' => false)

Array key is the header name, the value indicated whether it is a required (true) or optional (false) header.

Tags
link
https://developer.wordpress.org/plugins/plugin-basics/header-requirements/
since
1.2.0

$tab_width

The --tab-width CLI value that is being used.

private int $tab_width = null
Tags
since
1.2.0

$theme_header_regex

Regex to match theme headers.

private string $theme_header_regex

Set from within the register() method.

Tags
since
1.2.0

$theme_headers

Possible headers for a theme.

private array<string, bool> $theme_headers = array('Theme Name' => true, 'Theme URI' => false, 'Author' => true, 'Author URI' => false, 'Description' => true, 'Version' => true, 'Requires at least' => true, 'Tested up to' => true, 'Requires PHP' => true, 'License' => true, 'License URI' => true, 'Text Domain' => true, 'Tags' => false, 'Domain Path' => false)

Array key is the header name, the value indicated whether it is a required (true) or optional (false) header.

Tags
link
https://developer.wordpress.org/themes/basics/main-stylesheet-style-css/
since
1.2.0

$validated_textdomain

The new text domain as validated.

private string $validated_textdomain = ''
Tags
since
1.2.0

Methods

check_for_matches()

Verify if the current token is one of the targeted functions.

public check_for_matches(int $stackPtr) : int|void
Parameters
$stackPtr : int

The position of the current token in the stack.

Tags
since
0.11.0

Split out from the process() method.

Return values
int|void —

Integer stack pointer to skip forward or void to continue normal file processing.

getGroups()

Groups of functions to restrict.

public getGroups() : array<string, array<string, array<string|int, string>>>
Return values
array<string, array<string, array<string|int, string>>>

is_targetted_token()

Verify if the current token is a function call. Behaves like the parent method, except that it returns false if there is no opening parenthesis after the function name (likely a function import) or if it is a first class callable.

public is_targetted_token(int $stackPtr) : bool
Parameters
$stackPtr : int

The position of the current token in the stack.

Return values
bool

process()

Set sniff properties and hand off to child class for processing of the token.

public process(File $phpcsFile, int $stackPtr) : int|void
Parameters
$phpcsFile : File

The file being scanned.

$stackPtr : int

The position of the current token in the stack passed in $tokens.

Tags
since
0.11.0
Return values
int|void —

Integer stack pointer to skip forward or void to continue normal file processing.

process_comments()

Process comments to find the plugin/theme headers.

public process_comments(int $stackPtr) : int|void
Parameters
$stackPtr : int

The position of the current token in the stack.

Tags
since
1.2.0
Return values
int|void —

Integer stack pointer to skip forward or void to continue normal file processing.

process_first_class_callable()

Process the function if it is used as a first class callable.

public process_first_class_callable(int $stackPtr, string $group_name, string $matched_content) : int|void

Defaults to doing nothing. Can be overloaded in child classes to implement specific checks on first class callable use of the function.

Parameters
$stackPtr : int

The position of the current token in the stack.

$group_name : string

The name of the group which was matched.

$matched_content : string

The token content (function name) which was matched in lowercase.

Return values
int|void —

Integer stack pointer to skip forward or void to continue normal file processing.

process_matched_token()

Process a matched token.

public process_matched_token(int $stackPtr, string $group_name, string $matched_content) : int|void
Parameters
$stackPtr : int

The position of the current token in the stack.

$group_name : string

The name of the group which was matched.

$matched_content : string

The token content (function name) which was matched in lowercase.

Return values
int|void —

Integer stack pointer to skip forward or void to continue normal file processing.

process_no_parameters()

Process the function if no parameters were found.

public process_no_parameters(int $stackPtr, string $group_name, string $matched_content) : void
Parameters
$stackPtr : int

The position of the current token in the stack.

$group_name : string

The name of the group which was matched.

$matched_content : string

The token content (function name) which was matched in lowercase.

Tags
since
1.2.0

process_parameters()

Process the parameters of a matched function.

public process_parameters(int $stackPtr, string $group_name, string $matched_content, array<string|int, mixed> $parameters) : void
Parameters
$stackPtr : int

The position of the current token in the stack.

$group_name : string

The name of the group which was matched.

$matched_content : string

The token content (function name) which was matched in lowercase.

$parameters : array<string|int, mixed>

Array with information about the parameters.

Tags
since
1.2.0

process_token()

Processes this test, when one of its tokens is encountered.

public process_token(int $stackPtr) : int|void
Parameters
$stackPtr : int

The position of the current token in the stack.

Tags
since
1.2.0
Return values
int|void —

Integer stack pointer to skip forward or void to continue normal file processing.

register()

Returns an array of tokens this test wants to listen for.

public register() : array<string|int, mixed>
Tags
since
1.2.0
Return values
array<string|int, mixed>

examine_comment_line()

Examine an individual token in a larger comment for plugin/theme headers.

protected examine_comment_line(int $stackPtr, string $regex, array<string|int, mixed> $headers, array<string|int, mixed> $comment_details) : array<string|int, mixed>
Parameters
$stackPtr : int

The position of the current token in the stack.

$regex : string

The regex to use to examine the comment line.

$headers : array<string|int, mixed>

Valid headers for a plugin or theme.

$comment_details : array<string|int, mixed>

The information collected so far.

Tags
since
1.2.0
Return values
array<string|int, mixed> —

Adjusted $comment_details array

prepare_name_for_regex()

Prepare the function name for use in a regular expression.

protected prepare_name_for_regex(string $function_name) : string

The getGroups() method allows for providing function names with a wildcard * to target a group of functions. This prepare routine takes that into account while still safely escaping the function name for use in a regular expression.

Parameters
$function_name : string

Function name.

Tags
since
0.10.0
Return values
string —

Regex escaped function name.

setup_groups()

Set up the regular expressions for each group.

protected setup_groups(string $key) : bool
Parameters
$key : string

The group array index key where the input for the regular expression can be found.

Tags
since
0.10.0
Return values
bool —

True if the groups were setup. False if not.

On this page

Search results