Bijna elke app van productiekwaliteit moet resources gebruiken. Een resource is alle niet-uitvoerbare gegevens die logisch worden geïmplementeerd met een app. Een resource kan in een app worden weergegeven als foutberichten of als onderdeel van de gebruikersinterface. Resources kunnen gegevens bevatten in een aantal formulieren, waaronder tekenreeksen, afbeeldingen en persistente objecten. (Als u persistente objecten naar een resourcebestand wilt schrijven, moeten de objecten serialiseerbaar zijn.) Als u uw gegevens opslaat in een resourcebestand, kunt u de gegevens wijzigen zonder de hele app opnieuw te compileren. Hiermee kunt u ook gegevens opslaan op één locatie en hoeft u niet meer te vertrouwen op in code vastgelegde gegevens die op meerdere locaties zijn opgeslagen.
.NET biedt uitgebreide ondersteuning voor het maken en lokaliseren van resources. Daarnaast ondersteunt .NET een eenvoudig model voor het verpakken en implementeren van gelokaliseerde resources.
Resources maken en lokaliseren
In een niet-gelokaliseerde app kunt u resourcebestanden gebruiken als opslagplaats voor app-gegevens, met name voor tekenreeksen die anders in meerdere locaties in broncode zijn vastgelegd. Meestal maakt u resources als tekstbestanden (.txt) of XML-bestanden (.resx) en gebruikt u Resgen.exe (Resource File Generator) om ze te compileren in binaire .resources-bestanden. Deze bestanden kunnen vervolgens worden ingesloten in het uitvoerbare bestand van de app door een taalcompilator. Zie Resourcebestanden maken voor meer informatie over het maken van resources.
U kunt ook de resources van uw app lokaliseren voor specifieke culturen. Hiermee kunt u gelokaliseerde (vertaalde) versies van uw apps bouwen. Wanneer u een app ontwikkelt die gebruikmaakt van gelokaliseerde resources, wijst u een cultuur aan die fungeert als de neutrale cultuur of terugvalcultuur waarvan de resources worden gebruikt als er geen geschikte resources beschikbaar zijn. Normaal gesproken worden de resources van de neutrale cultuur opgeslagen in het uitvoerbare bestand van de app. De resterende resources voor afzonderlijke gelokaliseerde culturen worden opgeslagen in zelfstandige satellietassembly's. Zie Satellietassembly's maken voor meer informatie.
Resources verpakken en implementeren
U implementeert gelokaliseerde app-resources in satellietassembly's. Een satellietassembly bevat de hulpbronnen van één cultuur; het bevat geen app-code. In het implementatiemodel voor satellietassembly maakt u een app met één standaardassembly (meestal de hoofdassembly) en één satellietassembly voor elke cultuur die door de app wordt ondersteund. Omdat de satellietassembly's geen deel uitmaken van de hoofdassembly, kunt u eenvoudig resources vervangen of bijwerken die overeenkomen met een specifieke cultuur zonder de hoofdassembly van de app te vervangen.
Bepaal zorgvuldig welke resources de standaardresourceassembly van uw app vormen. Omdat het deel uitmaakt van de hoofdassemblage, moet u de hoofdassemblage vervangen door wijzigingen in de hoofdassembly. Als u geen standaardresource opgeeft, wordt er een uitzondering gegenereerd wanneer het terugvalproces van de resource deze probeert te vinden. In een goed ontworpen app mag het gebruik van resources nooit een uitzondering genereren.
Tijdens runtime laadt een app de juiste gelokaliseerde resources per thread op basis van de cultuur die is opgegeven door de CultureInfo.CurrentUICulture eigenschap. Deze eigenschapswaarde wordt als volgt afgeleid:
Door rechtstreeks een CultureInfo object toe te wijzen dat de gelokaliseerde cultuur aan de Thread.CurrentUICulture eigenschap vertegenwoordigt.
Als er niet expliciet een standaard-thread-UI-cultuur wordt toegewezen door de cultuur voor de huidige gebruiker op de lokale computer op te halen. .NET-implementaties die op Windows worden uitgevoerd, doen dit door de Windows-functie GetUserDefaultUILanguage aan te roepen.
Vervolgens kunt u resources ophalen voor de huidige UI-cultuur of voor een specifieke cultuur met behulp van de System.Resources.ResourceManager klasse. Hoewel de klasse het ResourceManager meest wordt gebruikt voor het ophalen van resources, bevat de System.Resources naamruimte extra typen die u kunt gebruiken om resources op te halen. Deze omvatten:
De ResourceReader klasse, waarmee u resources kunt inventariseren die zijn ingesloten in een assembly of zijn opgeslagen in een zelfstandig binair .resources-bestand. Dit is handig wanneer u niet weet welke namen er precies zijn voor de resources die beschikbaar zijn tijdens de runtime.
De ResXResourceReader klasse, waarmee u resources kunt ophalen uit een XML-bestand (.resx).
De ResourceSet klasse, waarmee u de resources van een specifieke cultuur kunt ophalen zonder terugvalregels te observeren. De resources kunnen worden opgeslagen in een assembly of een zelfstandig binair .resources-bestand. U kunt ook een IResourceReader implementatie ontwikkelen waarmee u de ResourceSet klasse kunt gebruiken om resources op te halen uit een andere bron.
De ResXResourceSet klasse, waarmee u alle items in een XML-resourcebestand in het geheugen kunt ophalen.
De bron voor deze inhoud vindt u op GitHub, waar u ook problemen en pull-aanvragen kunt maken en controleren. Bekijk onze gids voor inzenders voor meer informatie.
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven:
Meer informatie over het gebruik van statische en dynamische gedeelde resources om een AANGEPASTe gebruikersinterface te bouwen. En kijk hoe stijlen de gebruikersinterface zowel consistent als toegankelijk kunnen maken.