Title: WP_Translation_Controller::locate_translation
Published: April 3, 2024
Last modified: May 20, 2026

---

# WP_Translation_Controller::locate_translation( string $singular, string $textdomain = 'default', string $locale = null ): array{source:

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wp_translation_controller/locate_translation/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wp_translation_controller/locate_translation/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wp_translation_controller/locate_translation/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wp_translation_controller/locate_translation/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_translation_controller/locate_translation/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_translation_controller/locate_translation/?output_format=md#wp--skip-link--target)

Locates translation for a given string and text domain.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_translation_controller/locate_translation/?output_format=md#parameters)󠁿

 `$singular`stringrequired

Singular translation.

`$textdomain`stringoptional

Text domain. Default `'default'`.

Default:`'default'`

`$locale`stringoptional

Locale. Default current locale.

Default:`null`

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wp_translation_controller/locate_translation/?output_format=md#return)󠁿

 array{source: [WP_Translation_File](https://developer.wordpress.org/reference/classes/wp_translation_file/),
entries: string[]}|false { Translations on success, false otherwise.
 @type [WP_Translation_File](https://developer.wordpress.org/reference/classes/wp_translation_file/)
$source Translation file instance. @type string[] $entries Array of translation 
entries. }

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_translation_controller/locate_translation/?output_format=md#source)󠁿

    ```php
    protected function locate_translation( string $singular, string $textdomain = 'default', ?string $locale = null ) {
    	if ( array() === $this->loaded_translations ) {
    		return false;
    	}

    	// Find the translation in all loaded files for this text domain.
    	foreach ( $this->get_files( $textdomain, $locale ) as $moe ) {
    		$translation = $moe->translate( $singular );
    		if ( false !== $translation ) {
    			return array(
    				'entries' => explode( "\0", $translation ),
    				'source'  => $moe,
    			);
    		}
    		if ( null !== $moe->error() ) {
    			// Unload this file, something is wrong.
    			$this->unload_file( $moe, $textdomain, $locale );
    		}
    	}

    	// Nothing could be found.
    	return false;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/l10n/class-wp-translation-controller.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/l10n/class-wp-translation-controller.php#L397)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/l10n/class-wp-translation-controller.php#L397-L419)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_translation_controller/locate_translation/?output_format=md#related)󠁿

| Uses | Description | 
| [WP_Translation_Controller::get_files()](https://developer.wordpress.org/reference/classes/wp_translation_controller/get_files/)`wp-includes/l10n/class-wp-translation-controller.php` |

Returns all translation files for a given text domain.

  | 
| [WP_Translation_Controller::unload_file()](https://developer.wordpress.org/reference/classes/wp_translation_controller/unload_file/)`wp-includes/l10n/class-wp-translation-controller.php` |

Unloads a translation file for a given text domain.

  |

| Used by | Description | 
| [WP_Translation_Controller::has_translation()](https://developer.wordpress.org/reference/classes/wp_translation_controller/has_translation/)`wp-includes/l10n/class-wp-translation-controller.php` |

Returns a boolean to indicate whether a translation exists for a given string with optional text domain and locale.

  | 
| [WP_Translation_Controller::translate()](https://developer.wordpress.org/reference/classes/wp_translation_controller/translate/)`wp-includes/l10n/class-wp-translation-controller.php` |

Translates a singular string.

  | 
| [WP_Translation_Controller::translate_plural()](https://developer.wordpress.org/reference/classes/wp_translation_controller/translate_plural/)`wp-includes/l10n/class-wp-translation-controller.php` |

Translates plurals.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_translation_controller/locate_translation/?output_format=md#changelog)󠁿

| Version | Description | 
| [6.5.0](https://developer.wordpress.org/reference/since/6.5.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_translation_controller%2Flocate_translation%2F)
before being able to contribute a note or feedback.