Tłumaczenie tekstu modów
More actions
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.