load_theme_textdomain() WP 1.5.0

Завантажує файл перекладу теми ( .mo ) на згадку, для подальшої роботи з ним.

Файл .mo повинен бути в кореневій директорії теми і мати назву ЛОКАЛЬ.mo, наприклад: ru_RU.mo .

З версії 4.6. функція спочатку намагається завантажити .mo файл ДОМЕН_ПЕРЕВОДА-ЛОКАЛЬ.moіз папки /wp-content/language/themes. Приклад назви такого файлу: twentyeleven-ru.UA .

Функцію слід викликати під час хука after_setup_theme .

Щоб підключити переклад плагіна, використовуйте load_plugin_textdomain() .

Інтернаціоналізація (Internationalization) та локалізація (localization) означає адаптацію комп’ютерних програм під різні мови.

  • l10n – це скорочення для localization.
  • i18n – це скорочення для internationalization. 18 – це кількість літер між початковою і кінцевою n.
Працює на основі:
load_textdomain()
Основа для:
load_child_theme_textdomain()

Хуки з функції

Повертає

true|false. Логічний. true – якщо файл перекладу завантажено, false – якщо не вдалося отримати.

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

load_theme_textdomain($domain, $path);
$domain
(рядок) (обов’язковий)
Унікальний ідентифікатор, за яким пізніше у функціях перекладу:
__() ,
_e() можна буде звернутися саме до цього рядка перекладу.
$path
(рядок)
Шлях до директорії в якій розташований
.mo файл (без слеша, що закінчує). За промовчанням вказується шлях до каталогу теми:
get_template_directory() .


Типово: false

Приклади

0

#1 Як прийнято викликати функцію

Функція зазвичай викликається під час події after_setup_theme або можна безпосередньо засунути у functions.php теми:

add_action( 'after_setup_theme', 'my_theme_setup');
function my_theme_setup(){
	load_theme_textdomain( 'my_theme', get_template_directory() . '/languages' );
}

Спочатку WP спробує завантажити файл перекладу з папки /wp-content/language/themes/wp-content/language/themes/my_theme-ru_RU.mo.

Якщо там потрібного файлу немає, то спробує завантажити його з папки теми/wp-content/themes/my_theme/language/ru_RU.mo

Тут my_theme – це вказаний домен перекладу, а ru_RU це поточна локаль…

0

#2 Перемикання мови перекладу

Цей приклад можна використовувати, коли потрібно перемикати мову. Для перемикання буде використовуватися змінна, що передається в URL. Наприклад, для перемикання на російську URL буде виглядати так: www.example.com/?l=ru_UA . Так буде знайдено файл ru_RU.mo , в каталозі language в директорії теми:

// Зміна мови локалізації
// Треба викликати до виклику load_theme_textdomain()
add_filter( 'locale', 'my_theme_localized');
function my_theme_localized( $locale ){
	if ( ! isset( $_GET['l'] ) )
		return esc_attr($_GET['l']);

	return $locale;
}

// Встановлюємо каталог перекладу на тему
// Переклади теми мають бути розміщені в каталозі my_theme/languages/
// Переклади WordPress мають бути розміщені в каталозі wp-content/languages
add_action('after_setup_theme', 'my_theme_setup');
function my_theme_setup(){
	load_theme_textdomain('my_theme', get_template_directory() . '/languages');
}

список змін

З версії 1.5.0Введено.
З версії 4.6.0Функція now tries to load the .mo file from the languages ​​directory first.

Код load_theme_textdomain() WP 6.0.2

function load_theme_textdomain( $domain, $path = false ) {
	/**
	 * Filters a theme's locale.
	 *
	 * @ Since 3.0.0
	 *
	 * @param string $locale The theme's current locale.
	 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
	 */
	$locale = apply_filters( 'theme_locale', determine_locale(), $domain );

	$mofile = $domain. '-'. $locale . '.mo';

	// Try to load from the languages ​​directory first.
	if ( load_textdomain( $domain, WP_LANG_DIR . '/themes/' . $mofile ) ) {
		return true;
	}

	if (! $ path) {
		$ path = get_template_directory();
	}

	return load_textdomain( $domain, $path . '/' . $locale . '.mo' );
}

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

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