Ú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; a count paramé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 a hu.json-t (a metaadatokhoz előbb buildeld a projektet), a többi nyelvbe null-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/…”).