
Cikkünk a 2. évfolyam 7. számában bemutatott „Többnyelvű web site készítése” című cikkre épül. Ennek ismerete elengedhetetlen a mostani leírás teljes megértéséhez, mivel az ottani ismereteket nem ismételjük meg.
Az előbb említett cikkhez hasonlóan most is TXT állományokra lesz szükségünk, melyek tartalmazzák az adott nyelven a hét napjait:
[strings]
1=Monday
2=Tuesday
3=Wednesday
4=Thursday
5=Friday
6=Saturday
7=Sunday
Fontos, hogy ezek a TXT állományok Unicode kódolásúak legyenek, különben az erőforrásba nem kerül bele sok lényeges karakter, így például néhány magyar ékezetes betű is elveszne. Amikor az Intézőben létrehozunk egy TXT-t, akkor az alapesetben ANSI kódolású lesz, ami most nem felel meg számunkra. Ennek megoldásaként nyissuk meg az állományt, mondjuk Notepad-al és válasszuk a File - Save as menüpontot, itt mentsük az állományt azonos névvel, de a kódolásnál válasszuk az Unicode értékét. Ettől kezdve akár kínai karaktereket is használhatunk, nem csak magyar ékezetes betűket.
Ha már adottak ezek a TXT állományok, akkor jönne az a lépés, hogy fordítsuk le ezeket RESOURCES kiterjesztésű erőforrás állományokká a RESGEN alkalmazás segítségével. Ehhez kellene egy parancssort indítanunk és egyesével begépelni az összes TXT állományunk nevét. 29 nyelven ez egy kicsit lassú megoldás lenne, nem is beszélve arról, ha változnak a TXT állományok és újra kellene fordítani az erőforrásokat.
Valósítsuk meg inkább azt, hogy ha egy TXT-n jobb gombbal kattintunk, akkor legyen egy ResGen nevű menüpont és ezt választva az adott TXT-ből a RESGEN segítségével jöjjön létre a szükséges erőforrás állomány.
Erre a megoldást a Windows regisztrációs adatbázisában kell keresnünk, ahol a TXT kiterjesztéshez egy új parancsot adhatunk meg.

A registry módosításához futtassa a mellékelt resgen.reg nevű állományt, melynek hatására a TXT kiterjesztéshez hozzá lesz rendelve egy ResGen nevű menüpont is. A resgen.reg futtatása előtt annak tartalmát módosítani kell, ha a Visual Studio.NET nem az alapértelmezett könyvtárba lett telepítve és így a ResGen.exe nem a C:\Program Files\Microsoft Visual Studio.NET\FrameworkSDK\Bin\ könyvtárba került.
A registry módosítása egyszerű, a HKEY_CLASSES_ROOT főkulcson belül a txtfile\shell kulcsnál létre kell hoznunk egy újat, melyet ResGen névvel tettünk meg. Ez alá egy command nevű kulcs értékénél megadható, hogy mely alkalmazás legyen elindítva akkor, ha ezt a menüpontot választjuk az intézőben. Itt természetesen a resgen.exe lesz megadva. A %1 helyére pedig annak az állománynak a neve kerül automatikusan, amelyiken jobb gombbal kattintottunk.
A példaprogram
Az erőforrások használata ugyanúgy történik, mint a fent hivatkozott példában tettük, így ennek ismertetését most nem ismételnénk meg.
Ahhoz, hogy az aktuális napot ki tudjuk írni a választott nyelven, szükséges tudnunk, hogy melyik is az. Az erőforrás állományokban az egyes napokat számmal jelöltük. Az 1 a hétfő és így tovább vasárnapig, mely a 7-es számot kapta.
A DateTime osztály DayOfWeek property-je megadja számunkra a hét napjának sorszámát, ezzel csak az a kis problémánk van, hogy itt a számozás másképp megy mint az erőforrás állományunkban. A DayOfWeek nullát ad, ha vasárnap van, 1-et ha hétfő, 2-t ha kedd és így tovább szombatig, mely a 6-os sorszámot kapta.
int w = (int)DateTime.Now.DayOfWeek;
E probléma leküzdésére a kiolvasott értéket némileg módosítanunk kell az alábbi módon:
Mostantól a w változó már az erőforrásban lévő számozásnak megfelelő értéken adja meg a hét napját, így azt csak ki kell olvasnunk a megjelenítéshez.
Label1.Text += " " + rm.GetString(w.ToString());