Útmutatók
Többnyelvű Komod
A KOFA felülete magyarul és angolul is fut, a felhasználó a fejlécben vált nyelvet. A Komod szövegei a csomag saját szótárából jönnek: a magyar szöveg a kódban marad, a többi nyelv egy-egy JSON fájl. Ha egy szöveg nincs lefordítva, a magyar jelenik meg, vagyis szótár nélkül is minden működik.
A szótár helye
MyKomod/i18n/en.json a szerver projekt szövegei: metaadatok, parancshibák
MyKomod.Ui/i18n/en.json a nézetek szövegei: T("…", "…")
A build a csomag i18n/ és i18n/client/ mappájába másolja őket. A kettő egy névtér: ugyanaz a kulcs csak az egyikben szerepelhet. A kulcsok elé a KOFA automatikusan a csomag azonosítóját teszi, így két Komod kulcsai nem ütköznek.
{
"widget.release": "Release",
"widget.items": { "one": "{count} item", "other": "{count} items" }
}
{név}: helyőrző. Minden nyelvben ugyanazok legyenek, mint a magyarban.one/other: többes szám; acountparaméter választ közülük.nullérték: a kulcs ismert, de még nincs lefordítva.
Metaadatok
A [Komod], [Input], [Output], a beállítások [Description]-je és a [DeploymentSetting(Label = …)] magyarul marad a kódban. A fordításuk kulcsa rögzített:
| Mi | Kulcs |
|---|---|
csomag neve / leírása (Package.props) |
package.name, package.description |
| Komod neve / leírása | komod.<komodId>.name, komod.<komodId>.description |
| port | komod.<komodId>.port.<portId>.name, .description |
beállítás ([Description]) |
komod.<komodId>.setting.<jsonNév> |
| telepítési beállítás | komod.<komodId>.deploy.<jsonNév> |
enum érték ([Description] a tagon) |
enum.<EnumTípus>.<Tag> |
Nézet (UI)
<button>@T("widget.release", "Feloldás")</button>
<span>@T("widget.items", "{count} elem", ("count", _items.Count))</span>
T(kulcs, magyar szöveg, paraméterek) a KomodComponentBase-ből jön. A Language tulajdonság a felület nyelve (pl. en).
Parancshiba
throw new KomodCommandException(Text("errors.noMap", "Nincs betöltött térkép: {name}", ("name", name)));
A Text(...) a KomodBase-ből (vagy a Context.Text(...)) jön. A hívó a saját nyelvén kapja meg az üzenetet; a sima szöveges KomodCommandException("…") továbbra is működik, az magyarul jelenik meg.
Státusz
Context.ReportStatus(KomodHealth.Warning, Text("status.lowBattery", "Alacsony akku: {percent}%", ("percent", 18)));
A gráf csomópontján, a dashboardon és a példány oldalán mindenki a saját nyelvén látja. A ReportStatus(health, "szöveg") magyarul marad.
Eszközök
dotnet run --project tools/Kofa.I18n -- extract komods/MyKomod
dotnet run --project tools/Kofa.I18n -- check
dotnet run --project tools/Kofa.I18n -- pseudo
extract: a kódból elkészíti ahu.json-t (a metaadatokhoz előbb buildeld a projektet), a többi nyelvbenull-lal teszi a hiányzó kulcsokat.check: hiányzó és felesleges kulcsok, eltérő helyőrzők, nyelvenkénti lefedettség.pseudo: álnyelv ([Šàṽé~~]), amivel a lefordítatlan és a levágott szövegek látszanak. A csomagba nem kerül bele.
A kofa-pack elutasítja a hibás szótárt, és a komod.json-ba írja a nyelveket ("languages": ["en", "hu"]). A Komodok oldalon ez látszik.
További nyelvekre a közösség is lefordíthatja a Komododat a KOFA weboldalán: lásd Közösségi fordítás.
Kompatibilitás: a szótárt tartalmazó csomagot a 2026 novembere előtti KOFA verziók nem telepítik („Ismeretlen fájl a csomagban: i18n/…”).