SiteLang


SiteLang является статическим классом для получения локализованных строк активной темы. Он автоматически доступен в обычных шаблонах сайта.

Поддерживает

  • общие переводы для всей темы
  • отдельные переводы страниц и записей
  • вложенные ключи через точку
  • резервные значения
  • наследование переводов языка по умолчанию
  • безопасный вывод текста в HTML

Быстрый старт

php
<h1><?php echo SiteLang::html('catalog.title', 'Каталог'); ?></h1>

Первый аргумент содержит путь к переводу, второй используется, если перевод не найден.

Файлы переводов

Переводы хранятся в папке lang активной темы. Название языковой папки соответствует префиксу языка:

text
lang/
  ru/
    common.php
    index.php
    404.php
    page/
      catalog.php
    post/
      news.php
  en/
    common.php

Каждый файл должен возвращать массив:

php
<?php
return [
    'catalog' => [
        'title' => 'Каталог',
        'description' => 'Товары нашего магазина',
    ],
];

Получение вложенного значения:

php
$title = SiteLang::get('catalog.title');

Загружаемые файлы

Контекст Файл
Все страницы сайта lang/{prefix}/common.php
Главная страница lang/{prefix}/index.php
Страница ошибки lang/{prefix}/404.php
Шаблон страницы lang/{prefix}/page/{template}.php
Шаблон записи lang/{prefix}/post/{template}.php

Сначала загружаются общие переводы, затем переводы текущего шаблона.

Переводы текущего языка дополняют переводы языка по умолчанию. Поэтому необязательно повторять в каждом языке все существующие ключи.

Получение перевода

get(string $path, string $default = ''): string

Возвращает перевод без дополнительной обработки:

php
$title = SiteLang::get('catalog.title');

Если ключ может отсутствовать, передайте резервное значение:

php
$title = SiteLang::get('catalog.title', 'Каталог');

Если перевод не найден или найденное значение является массивом, метод возвращает резервное значение.

Путь к вложенному значению записывается через точку:

php
$text = SiteLang::get('navigation.catalog.title');

Вывод в HTML

html(string $path, string $default = ''): string

Возвращает перевод с экранированными специальными HTML-символами:

php
<p><?php echo SiteLang::html('catalog.description'); ?></p>

Резервное значение также экранируется:

php
<p><?php echo SiteLang::html('catalog.description', 'Описание каталога'); ?></p>

Метод предназначен для вывода обычного текста. HTML-теги внутри перевода будут показаны как текст, а не обработаны браузером.

Все переводы

all(): array

Возвращает массив всех переводов, загруженных для текущей страницы:

php
$translations = SiteLang::all();

В массив входят общие переводы и переводы текущего шаблона с учётом текущего языка и языка по умолчанию.

Важные замечания

  • файлы переводов должны возвращать массив
  • вложенные ключи разделяются точкой
  • get() возвращает только строковые и другие скалярные значения
  • для безопасного вывода текста в HTML используйте html()
  • контекстный файл шаблона дополняет и переопределяет общие переводы
  • отсутствующие переводы берутся из языка по умолчанию