Skip to content

Переводы

Приветственный баннер 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:

svelte
<section class="ember-hero">
  <h1>{$_("ember.hero-title")}</h1>
  <p>{$_("ember.hero-subtitle")}</p>
</section>

Шаг 2 — добавьте английский текст

Папка lang-overrides/ изначально пуста — создайте в ней файл с именем en-US.json и добавьте ключи:

json
{
  "ember": {
    "hero-title": "Welcome to Ember SMP",
    "hero-subtitle": "Grab a torch. Your adventure starts at the campfire."
  }
}

Шаг 3 — переведите на остальные языки

Добавьте те же ключи в остальные файлы. Турецкий, в lang-overrides/tr.json:

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:

json
{
  "ember": {
    "hero-title": "Добро пожаловать на Ember SMP",
    "hero-subtitle": "Бери факел. Твоё приключение начинается у костра."
  }
}

Теперь запустите слияние, чтобы ваши новые ключи были подхвачены:

sh
bun run sync

Обновите сайт. Теперь вы должны увидеть баннер на вашем активном языке, а переключение языка сайта переключает приветствие.

Добавление совершенно нового языка

В сообществе Ember много немецких игроков? Вы не ограничены тремя встроенными языками. Создайте новый файл, имя которого — код локали; для немецкого — de:

lang-overrides/
└─ de.json
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 теперь и выглядит как надо, и говорит на языке. Осталось только упаковать её и поделиться с миром.

Далее: Выпуск →