Jump to content
Toggle menu
  • 3 articles
  • 22 files
  • 3 users
  • 2.5K edits
Shroudforge
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Tłumaczenie tekstu modów

From Shroudforge
This page is a translated version of the page Translate mod text and the translation is 100% complete.


Translate mod text



Tłumacz widoczny tekst Modloadera i tekst Lua z tych samych plików locale w folderze moda. Odczytaj język Modloadera przez shroudforge.locale(), dodane w PR #42.

Pliki locale

Dodaj jeden plik locales/<code>.json dla każdego języka. Bieżące kody z selektora języka Modloadera to de, de-AT, de-CH, en-GB, en-US, es, fr, hi, it, ja, nl, pl, sv i zh. Nazwa pliku musi dokładnie odpowiadać kodowi. Pliki te znajdują się obok mod.json i extended.mod.json.

Schemat jest opublikowany jako mod-locale.schema.json. Katalog locale może tłumaczyć mod.name i mod.description, etykiety ustawień i opcji, grupy, akcje, wpisy dziennika zmian oraz Lua strings. Katalogi mogą być częściowe. Wpisy bez tłumaczenia zachowują tekst źródłowy.

{
  "$schema": "https://bonsaibauer.github.io/shroudforge/schemas/mod-locale.schema.json",
  "settings": {
    "severity": {
      "label": "Log level",
      "options": { "info": "Information", "warn": "Warning" }
    }
  },
  "groups": [
    { "label": "Logging", "actions": { "write": { "label": "Write message" } } }
  ],
  "strings": { "overlay.ready": "Ready" }
}

Klucze ustawień i opcji pozostają takie same jak w extended.mod.json. Tłumaczenia grup zachowują kolejność grup w tym pliku. Tłumaczenia akcji używają istniejącego identyfikatora akcji. Zapisane wartości się nie zmieniają.

Używanie tego samego tekstu w Lua

local locale = shroudforge.locale()
local ready = shroudforge.i18n.get("overlay.ready", locale, "Ready")

shroudforge.i18n.get(key, locale, fallback) używa tego samego katalogu załadowanego przez Modloader. Najpierw sprawdza kod regionalny, taki jak de-AT, a następnie język de. Jeśli brakuje tekstu, zwraca tekst zastępczy lub klucz, gdy nie podano tekstu zastępczego. Wyszukiwanie nie odczytuje plików ponownie. PR #42 udostępnia API języka, a ta funkcja łączy je z katalogiem każdego moda.

Jeśli shroudforge.locale() zwraca en, ponieważ nie można odczytać konfiguracji, katalog najpierw sprawdza en-GB.json, a potem en.json. en-GB jest domyślną odmianą angielskiego w Modloaderze. en-US pozostaje dostępne jako jawnie wybrany wariant.

Pliki locale nie wymagają możliwości runtime. Tekst interfejsu ShroudForge pozostaje we wspólnych tłumaczeniach Modloadera.