load_textdomain() WP 1.5.0

Підключає вказаний переклад.

Функція парсит вказаний у параметрах .mo файл і додає дані з нього до даних перекладів WordPress – у глобальну змінну $l10n :

$l10n[ $domain ] = & $mo;

Якщо зазначений домен вже існує в даних, то рядки локалізації, що підключаються, об’єднуватися з наявними (зливаються в єдиний масив).

Файл перекладу має бути підключений до використання. Тому load_textdomain() прийнято викликати під час події plugins_loaded .

Для перекладу будь-якого рядка в WordPress, у рядка має бути переклад, а щоб він був потрібно підключити дані перекладу, серед яких буде переклад потрібного рядка. Підключити дані перекладу, а саме завантажити .mo файл перекладу у глобальні дані локалізації можна за допомогою:

Повертає

true|false. Поверне false, якщо .mo файл не існує вказаним шляхом. За інших випадках функція поверне true.

Використання

load_textdomain( $domain, $mofile )
$domain
(рядок) (обов’язковий)
Унікальний ідентифікатор, яким, для перекладу рядка, надалі можна буде звертатися.
$mofile
(рядок) (обов’язковий)
Абсолютний шлях до .mo файлу (
home/example.com/wp-content/plugins/my-plugin.mo ).

Приклади

0

#1 Переклад рядка у WordPress

У цьому прикладі переведемо рядок __('book', 'mydomain'). Очевидно, що .mo файл для перекладу вже створений і в ньому є дані для перекладу цього рядка:

// тут .mo файл повинен лежати в папці lang, яка знаходиться в папці де знаходиться сам файл, в якому викликається цей рядок
// Підключаємо наявний файл .mo (назва файлу: ru_RU.mo або інше залежить від локалі)
add_action( 'plugins_loaded', 'load_my_textdomain' );

function load_my_textdomain(){
	$mo_file_path = dirname(__FILE__) . '/lang/'. determine_locale(). '.mo';

	load_textdomain( 'mydomain', $mo_file_path );
}

Для версій WP менше 5.0 використовуйте get_locale() замість determine_locale() .

Тепер у темі використовуємо:

<?php _e( 'book', 'mydomain'); ?>

Виведе “книга”.

нотатки

  • Global. MO[]. $l10n Залишити все поточно loaded text domains.
  • Global. MO[]. $l10n_unloaded Залишити весь текст домашніх тварин, які повинні бути завантажені.

список змін

З версії 1.5.0Введено.

Код load_textdomain() WP 6.0.2

function load_textdomain( $domain, $mofile ) {
	Global $l10n, $l10n_unloaded;

	$l10n_unloaded = (array) $l10n_unloaded;

	/**
	 * Filters whether to override .mo file loading.
	 *
	 * @ Since 2.9.0
	 *
	 * @param bool $override Whether to override .mo file loading. Default false.
	 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
	 * @param string $mofile Path to the MO file.
	 */
	$plugin_override = apply_filters( 'override_load_textdomain', false, $domain, $mofile );

	if ( true === (bool) $plugin_override ) {
		unset( $l10n_unloaded[ $domain ] );

		return true;
	}

	/**
	 * Fires до MO translation file is loaded.
	 *
	 * @ Since 2.9.0
	 *
	 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
	 * @param string $mofile Path to the .mo file.
	 */
	do_action( 'load_textdomain', $domain, $mofile);

	/**
	 * Filters MO file path for loading translations for specific text domain.
	 *
	 * @ Since 2.9.0
	 *
	 * @param string $mofile Path to the MO file.
	 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
	 */
	$mofile = apply_filters('load_textdomain_mofile', $mofile, $domain);

	if ( ! is_readable( $mofile ) ) {
		return false;
	}

	$mo = new MO();
	if ( ! $mo->import_from_file( $mofile ) ) {
		return false;
	}

	if ( isset( $l10n[ $domain ] ) ) {
		$mo->merge_with( $l10n[ $domain ] );
	}

	unset( $l10n_unloaded[ $domain ] );

	$l10n[ $domain ] = &$mo;

	return true;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *