Переводы
Приветственный баннер Ember сейчас говорит только по-английски. На survival-сервере с игроками отовсюду это упущенная возможность. Давайте сделаем так, чтобы Ember приветствовала каждого посетителя на его языке.
Хорошая новость: движок уже поставляется с полными переводами для поддерживаемых им языков. Вы записываете только те кусочки, которые вы добавляете или меняете. Полный справочник: Локализация.
Как это работает на одной картинке
Ваша тема несёт только отличия, в папке под названием lang-overrides/, по одному файлу на язык:
lang-overrides/
├─ en-US.json
├─ tr.json
└─ ru.jsonКогда вы запускаете bun run sync, Pano сливает ваши переопределения поверх переводов движка. Слияние аддитивно: вы можете добавлять новый текст или заменять существующий, но никогда не можете потерять ключ движка. Всё, что вы не упомянули, сохраняет значение движка по умолчанию.
Шаг 1 — используйте ключи переводов в представлении
На предыдущей странице мы захардкодили баннер Ember. Давайте заменим эти строки ключами переводов. В src/views/HomeView.svelte $_ ищет ключ внутри пространства имён вашей темы — мы будем использовать пространство имён ember:
<section class="ember-hero">
<h1>{$_("ember.hero-title")}</h1>
<p>{$_("ember.hero-subtitle")}</p>
</section>Шаг 2 — добавьте английский текст
Папка lang-overrides/ изначально пуста — создайте в ней файл с именем en-US.json и добавьте ключи:
{
"ember": {
"hero-title": "Welcome to Ember SMP",
"hero-subtitle": "Grab a torch. Your adventure starts at the campfire."
}
}Шаг 3 — переведите на остальные языки
Добавьте те же ключи в остальные файлы. Турецкий, в lang-overrides/tr.json:
{
"ember": {
"hero-title": "Ember SMP'ye hoş geldin",
"hero-subtitle": "Bir meşale kap. Maceran kamp ateşinde başlıyor."
}
}Русский, в lang-overrides/ru.json:
{
"ember": {
"hero-title": "Добро пожаловать на Ember SMP",
"hero-subtitle": "Бери факел. Твоё приключение начинается у костра."
}
}Теперь запустите слияние, чтобы ваши новые ключи были подхвачены:
bun run syncОбновите сайт. Теперь вы должны увидеть баннер на вашем активном языке, а переключение языка сайта переключает приветствие.
Добавление совершенно нового языка
В сообществе Ember много немецких игроков? Вы не ограничены тремя встроенными языками. Создайте новый файл, имя которого — код локали; для немецкого — de:
lang-overrides/
└─ de.json{
"ember": {
"hero-title": "Willkommen auf Ember SMP",
"hero-subtitle": "Schnapp dir eine Fackel. Dein Abenteuer beginnt am Lagerfeuer."
}
}После bun run sync новый язык строится поверх английской базы движка — поэтому любой ключ, который вы ещё не перевели, откатывается к английскому вместо показа сырого ключа.
Панель решает, какие языки появляются
Добавление одного лишь de.json не заставляет немецкий появиться. Список доступных языков приходит от самого Pano: администратор должен сначала определить локаль с тем же кодом (de) в панели. Как только эта локаль существует, посетители могут её выбрать, и используется ваш de.json. Без соответствующей локали в панели файл просто игнорируется.
Как заметить пропущенный перевод
Если у ключа нигде нет перевода, на экране показывается сырое имя ключа (вроде ember.hero-title) — лёгкий признак. bun run check также предупреждает о ключах, которые ваши представления используют, но никогда не переводят, так что вы поймаете их до выпуска.
Ember теперь и выглядит как надо, и говорит на языке. Осталось только упаковать её и поделиться с миром.
Далее: Выпуск →