Функция load_child_theme_textdomain()
используется для загрузки файлов перевода (.mo) для дочерней темы. Это позволяет создавать переводы интерфейса темы на различные языки, не изменяя файлы родительской темы и не теряя перевод при обновлениях.
load_child_theme_textdomain()
загружает файлы перевода дочерней темы на основе текущей локали (например, ru_RU.mo
для русского языка). Если файл с переводом для текущей локали существует в указанной директории, то переводы будут добавлены в систему перевода WordPress.
Это удобная обертка для функции load_theme_textdomain()
и обычно используется для подключения переводов, которые находятся в дочерней теме, чтобы не нарушать файлы родительской темы.
load_child_theme_textdomain( string $domain, string|false $path = false ): bool
Параметры
- $domain (string, обязательный) — Текстовый домен, уникальный идентификатор для поиска переведенных строк. Часто совпадает с текстовым доменом родительской темы.
- $path (string|false, необязательный) — Путь к директории, содержащей файлы
.mo
. По умолчанию — директория дочерней темы:get_stylesheet_directory()
.
Возвращаемое значение
- bool — Возвращает
true
, если файл перевода успешно загружен, илиfalse
, если файл не был найден или не загружен.
Примечания
- Файлы перевода должны находиться в указанной папке и иметь точное имя, совпадающее с локалью. Например, для русского языка файл должен называться
ru_RU.mo
. - Функция должна вызываться в момент выполнения хука
after_setup_theme
, как и её родственная функцияload_theme_textdomain()
.
Пример 1: Загрузка файлов перевода для дочерней темы
В этом примере файл перевода дочерней темы загружается из папки /languages
внутри директории дочерней темы.
add_action( 'after_setup_theme', 'my_child_theme_setup' );
function my_child_theme_setup() {
load_child_theme_textdomain( 'my_child_theme', get_stylesheet_directory() . '/languages' );
}
Здесь:
'my_child_theme'
— это текстовый домен дочерней темы, который будет использоваться для вызова переводов..mo
файлы должны находиться в папкеlanguages
и быть названы по схемеru_RU.mo
,en_US.mo
и так далее.
Пример 2: Использование родительского домена для перевода
Если вы хотите использовать тот же текстовый домен, что и у родительской темы, вы можете указать текстовый домен родительской темы при загрузке перевода для дочерней темы.
add_action( 'after_setup_theme', 'my_child_theme_setup' );
function my_child_theme_setup() {
load_child_theme_textdomain( 'parent_theme_domain', get_stylesheet_directory() . '/languages' );
}
Здесь используется текстовый домен родительской темы, и переводы будут искать строки с этим доменом.
Пример 3: Работа с несколькими локалями
Допустим, у вас есть несколько локалей для сайта, и каждая из них имеет свой .mo
файл в директории дочерней темы.
add_action( 'after_setup_theme', 'my_child_theme_setup' );
function my_child_theme_setup() {
load_child_theme_textdomain( 'my_child_theme', get_stylesheet_directory() . '/languages' );
// Дополнительные действия после загрузки перевода
if ( is_locale_switched() ) {
echo 'Текущая локаль: ' . get_locale();
}
}
Этот код загружает перевод для текущей локали и выводит сообщение о том, какая локаль активна в данный момент.
Связанные функции
- load_theme_textdomain() — Загружает текстовый домен для перевода родительской темы.
- switch_to_locale() — Переключает локаль на заданную.
- get_locale() — Возвращает текущую локаль.
- is_locale_switched() — Проверяет, была ли локаль переключена.
Заключение
Функция load_child_theme_textdomain()
— это удобный инструмент для загрузки переводов дочерней темы, позволяющий поддерживать многоязычные сайты. Использование этой функции помогает сохранить переводы независимо от родительской темы, что особенно полезно при обновлении тем.