Shepherd.js поддерживает многоязычные интерфейсы для создания пошаговых интерактивных туров. Управление языковыми ресурсами осуществляется через подключение файлов с локализацией, которые определяют тексты кнопок, подсказок и системных сообщений. Этот механизм позволяет динамически менять язык интерфейса тура без необходимости переписывать конфигурацию каждого шага.
Языковой файл представляет собой обычный JavaScript-объект, экспортируемый из модуля. Основная структура выглядит следующим образом:
export default {
buttons: {
next: "Далее",
back: "Назад",
cancel: "Закрыть",
finish: "Завершить"
},
labels: {
step: "Шаг",
of: "из"
}
};
Ключевые моменты структуры:
buttons — содержит подписи для кнопок навигации. Каждая
кнопка должна иметь уникальный идентификатор (next,
back, cancel, finish) для
корректной работы внутренней логики Shepherd.js.labels — хранит вспомогательные текстовые элементы,
например, индикатор текущего шага (step) и общее количество
шагов (of).Дополнительно можно расширять объект любыми необходимыми текстовыми метками для кастомных кнопок или подсказок.
Импорт языкового файла зависит от того, используется ли модульная
сборка или подключение через <script>.
import Shepherd from "shepherd.js";
import ruLocale from "./locales/ru.js";
const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: "shepherd-theme-arrows",
scrollTo: true,
},
locale: ruLocale
});
В объекте locale передается импортированный язык. После
этого все стандартные кнопки и подсказки тура автоматически используют
значения из локали.
Если Shepherd.js подключен через CDN:
<script src="https://cdn.jsdelivr.net/npm/shepherd.js@8.3.1/dist/js/shepherd.min.js"></script>
<script src="locales/ru.js"></script>
<script>
const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: 'shepherd-theme-arrows',
scrollTo: true
},
locale: window.ruLocale
});
</script>
Языковой файл должен экспортировать объект в глобальную переменную,
например window.ruLocale, чтобы Shepherd.js мог его
использовать.
Shepherd.js позволяет менять язык тура на лету, без перезагрузки
страницы. Для этого достаточно изменить свойство locale у
экземпляра тура:
import enLocale from "./locales/en.js";
import ruLocale from "./locales/ru.js";
tour.locale = ruLocale; // переключение на русский
tour.locale = enLocale; // переключение на английский
После установки новой локали все кнопки и стандартные надписи обновятся автоматически.
При создании собственного языкового файла следует придерживаться следующих правил:
buttons с
идентификаторами next, back,
cancel, finish и labels с
step и of.Пример расширенной локали с дополнительной кнопкой:
export default {
buttons: {
next: "Далее",
back: "Назад",
cancel: "Закрыть",
finish: "Завершить",
skip: "Пропустить"
},
labels: {
step: "Шаг",
of: "из"
}
};
При добавлении новой кнопки необходимо одновременно настроить логику отображения этой кнопки в конфигурации шага.
Для многоязычных приложений целесообразно хранить все языки в отдельной директории:
/locales
├─ en.js
├─ ru.js
└─ fr.js
Загрузка локали может выполняться динамически через
import() в зависимости от выбранного языка:
async function loadLocale(lang) {
const localeModule = await import(`./locales/${lang}.js`);
tour.locale = localeModule.default;
}
Это позволяет минимизировать начальный объем загружаемых скриптов и подключать только необходимый язык.
text шагов
нужно перевести вручную.addStep(), сохраняют свои тексты, если их не переопределить
через новую локаль.Подключение языковых файлов обеспечивает гибкость в локализации интерактивных туров и позволяет создавать удобные интерфейсы для пользователей с разными языковыми предпочтениями.