Prostředky v aplikacích .NET
Téměř každá aplikace v produkční kvalitě musí používat prostředky. Prostředek je všechna nespustitelná data, která jsou logicky nasazená s aplikací. Prostředek se může v aplikaci zobrazit jako chybové zprávy nebo jako součást uživatelského rozhraní. Prostředky můžou obsahovat data v řadě formulářů, včetně řetězců, obrázků a trvalých objektů. (Chcete-li zapisovat trvalé objekty do souboru prostředků, musí být objekty serializovatelné.) Ukládání dat do souboru prostředků umožňuje měnit data bez nutnosti rekompilování celé aplikace. Umožňuje také ukládat data do jednoho umístění a eliminuje nutnost spoléhat se na pevně zakódovaná data uložená v několika umístěních.
.NET poskytuje komplexní podporu pro vytváření a lokalizaci prostředků. Rozhraní .NET navíc podporuje jednoduchý model pro balení a nasazování lokalizovaných prostředků.
Vytváření a lokalizace prostředků
V neloklované aplikaci můžete použít soubory prostředků jako úložiště pro data aplikace, zejména pro řetězce, které by jinak mohly být pevně zakódovány v několika umístěních ve zdrojovém kódu. Nejčastěji vytváříte prostředky jako textové soubory (.txt) nebo XML (.resx) a pomocí Resgen.exe (Generátor souborů prostředků) je zkompilujete do binárních souborů .resources. Tyto soubory pak mohou být vloženy do spustitelného souboru aplikace kompilátorem jazyka. Další informace o vytváření prostředků najdete v tématu Vytváření souborů prostředků.
Prostředky aplikace můžete také lokalizovat pro konkrétní jazykové verze. Díky tomu můžete vytvářet lokalizované (přeložené) verze vašich aplikací. Při vývoji aplikace, která používá lokalizované prostředky, určíte jazykovou verzi, která slouží jako neutrální nebo záložní jazyková verze, jejíž prostředky se používají, pokud nejsou k dispozici žádné vhodné prostředky. Prostředky neutrální jazykové verze se obvykle ukládají do spustitelného souboru aplikace. Zbývající prostředky pro jednotlivé lokalizované jazykové verze se ukládají do samostatných satelitních sestavení. Další informace naleznete v tématu Vytváření satelitních sestavení.
Balení a nasazování prostředků
Lokalizované prostředky aplikace nasadíte do satelitních sestavení. Satelitní sestavení obsahuje prostředky jedné jazykové verze; neobsahuje žádný kód aplikace. V modelu nasazení satelitního sestavení vytvoříte aplikaci s jedním výchozím sestavením (což je obvykle hlavní sestavení) a jedním satelitním sestavením pro každou jazykovou verzi, kterou aplikace podporuje. Vzhledem k tomu, že satelitní sestavení nejsou součástí hlavního sestavení, můžete snadno nahradit nebo aktualizovat prostředky odpovídající konkrétní jazykové verzi bez nahrazení hlavního sestavení aplikace.
Pečlivě určete, které prostředky tvoří výchozí sestavení prostředků vaší aplikace. Vzhledem k tomu, že je součástí hlavního sestavení, všechny změny v něm budou vyžadovat nahrazení hlavního sestavení. Pokud nezadáte výchozí prostředek, při pokusu o jeho nalezení dojde k výjimce. V dobře navržené aplikaci by použití prostředků nikdy nemělo vyvolat výjimku.
Další informace najdete v článku Balení a nasazení prostředků .
Načítání prostředků
V době běhu aplikace načte příslušné lokalizované prostředky na základě jednotlivých vláken na základě jazykové verze určené vlastností CultureInfo.CurrentUICulture . Tato hodnota vlastnosti je odvozena takto:
Přímým přiřazením objektu CultureInfo , který představuje lokalizovanou jazykovou verzi vlastnosti Thread.CurrentUICulture .
Pokud jazyková verze není explicitně přiřazena, načtením výchozí jazykové verze uživatelského rozhraní vlákna z CultureInfo.DefaultThreadCurrentUICulture vlastnosti.
Pokud výchozí jazyková verze uživatelského rozhraní vlákna není explicitně přiřazená, načtením jazykové verze pro aktuálního uživatele na místním počítači. Implementace .NET spuštěné ve Windows to dělají voláním funkce Windows
GetUserDefaultUILanguage
.
Další informace o tom, jak je nastavená aktuální jazyková verze uživatelského rozhraní, najdete na stránkách a CultureInfo.CurrentUICulture odkazechCultureInfo.
Prostředky pro aktuální jazykovou verzi uživatelského rozhraní nebo pro konkrétní jazykovou verzi pak můžete načíst pomocí System.Resources.ResourceManager třídy. I když se ResourceManager třída nejčastěji používá k načítání prostředků, System.Resources obor názvů obsahuje další typy, které můžete použít k načtení prostředků. Tady jsou některé z nich:
Třída ResourceReader , která umožňuje vytvořit výčet prostředků vložených do sestavení nebo uložené v samostatném binárním souboru .resources. Je užitečné, když neznáte přesné názvy prostředků, které jsou k dispozici za běhu.
Třída ResXResourceReader , která umožňuje načíst prostředky ze souboru XML (.resx).
Třída ResourceSet , která umožňuje načíst prostředky konkrétní jazykové verze bez pozorování náhradních pravidel. Prostředky mohou být uloženy v sestavení nebo samostatném binárním souboru .resources. Můžete také vyvinout implementaci IResourceReader , která umožňuje použít ResourceSet třídu k načtení prostředků z jiného zdroje.
Třída ResXResourceSet , která umožňuje načíst všechny položky v souboru prostředků XML do paměti.