Programmeren in ASP.NET/Globalisering: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Jbib (overleg | bijdragen)
Geen bewerkingssamenvatting
 
Jbib (overleg | bijdragen)
Grotendeels herschreven met eenvoudiger code
Regel 6:
'''Culture''' wordt gebruikt om functies in te stellen die afhangen van de cultuur, zoals de datum of de munt. Bij het formatteren van deze waardes wordt de instelling van Culture gebruikt.
'''UICulture''' wordt gebruikt om te bepalen welke inhoud moet getoond worden als er zogenaamde resources in meerdere talen bestaan.
 
Controls zoals de Calendar-control hebben globalisering al ingebouwd. Als de UICulture of Culture wijzigt, dan passen zij hun inhoud automatisch al aan.
 
==Culture en UICulture instellen ==
Regel 20 ⟶ 22:
</system.web>
</configuration></pre>
 
Je kan ook de instellingen van de browser van de gebruiker overnemen:
<pre><globalization
culture="auto"
uiCulture="auto"
enableClientBasedCulture="true" /></pre>
 
In het Page-directief (voor één pagina):
Regel 31 ⟶ 39:
ASP.NET kan natuurlijk niet automatisch de inhoud van je site vertalen. Je moet zelf verschillende versies van de inhoud voorzien. Om niet elke pagina twee keer te moeten maken, maar alleen de inhoud ervan, kan je resource-bestanden gebruiken. Je moet voor elke taal die je wil ondersteunen en voor elke inhoud aparte resourcebestanden aanmaken. Deze kunnen zowel tekst (strings) als afbeeldingen bevatten. Ze kunnen als apart bestand opgeslagen worden, of als onderdeel van een assembly (dll).
 
Kies “Add new item” en kies als soort “Resource file”. Dit is een bestand met extensie resx, en zal resources bevatten in de vorm van XML. Noem het bestand GlobResource.resx. Dit wordt het standaardbestand voor Amerikaans Engels. Je krijgt een verwittiging dat dit bestand in de folder App_GlobalResources zal geplaatst worden, klik Yes.
Om resourcebestanden aan te maken moet het programma resgen.exe gebruiken.
Voeg een string toe met de naam “Welkom” en de waarde “Welcome”.
 
Bewaar het bestand en maak nog twee andere bestanden:
Maak eerst twee gewone tekstbestanden in een subfolder "resources" als volgt:
GlobResource.nl-BE.resx met een string “Welkom” met de waarde “Welkom”.
GlobResource.fr-BE.resx met een string “Welkom” met de waarde “Bienvenu”.
 
Merk op dat de naam altijd dezelfde is, maar de waarde verschilt naargelang de cultuur. Het middelste deel van de bestandsnaam verwijst naar de UICulture-waarde.
''welkom.nl-BE.txt''
 
Test = Welkom op onze site
Alle .resx-bestanden worden automatisch gecompileerd tot assembly’s (dll’s) tijdens het uitvoeren. Men noemt dit “satelliet-assembly’s”.
''welkom.fr-BE.txt''
Test = Bienvenu sur notre site
Nu moet je daarvan resource-bestanden maken (met de extensie .resources).
 
Ga naar de opdrachtregel van Visual Studio, blader naar de folder resources, en geef de volgende commando's:
resgen welkom.nl-BE.txt
resgen welkom.fr-BE.txt
Hiermee zouden de .resources-bestanden moeten aangemaakt zijn, met de namen welkom.nl-BE.resources en welkom.fr-BE.resources. Het programma resgen zorgt daarvoor.
Maak nu een pagina waarmee je de verschillende resources kan laden:
Voeg de volgende import toe aan de pagina:
<%@ Import Namespace="System.Resources" %>
 
Vanaf nu kan je in je code de volgende expressie gebruiken:
Dim strWelkom As String = Resources.GlobResource.Welkom
 
De naam “GlobResource” komt overeen met de bestandsnaam van het resx-bestand, en de naam “Welkom” komt overeen met de naam van de string in dat bestand.
 
Om de tekst in een label (of een andere control) te krijgen is er nog een eenvoudiger manier, zonder het gebruik van code (alleen in ASP.NET 2.0).
 
<asp:Label id="lblResultaat2" Text="<%$Resources:GlobResource, Welkom %>" runat="server"></asp:Label>
Je kan dit ook instellen vanuit Visual Web Developer. Selecteer het label, ga naar het Properties-paneel, kies (Expressions) en klik op de drie puntjes. In de dropdownlijst kies je Resources. Vul bij ClassKey het woord “GlobResource” in en bij ResourceKey de string “Welkom”.
 
Deze instelling werkt niet als je de UICulture dynamisch verandert (bijvoorbeeld na het klikken op een knop, of zoals hieronder, na het kiezen in een lijst), omdat de verwerking van UICulture gebeurt in het event InitializeCulture(), dat uitgevoerd wordt vóór het verwerken van events. Zie http://www.codeproject.com/useritems/localization.asp voor een oplossing hiervoor.
 
Dit is de volledige code:
 
''globalisering.aspx''
Regel 58 ⟶ 79:
Thread.CurrentThread.CurrentCulture = objCI
Thread.CurrentThread.CurrentUICulture = objCI
Dim rmstrWelkom As ResourceManagerString = _Resources.GlobResource.Welkom
lblResultaat.Text = rm.GetString("Test")strWelkom
ResourceManager.CreateFileBasedResourceManager("welkom", _
Server.MapPath("resources") & "/", Nothing)
lblResultaat.Text = rm.GetString("Test")
End Sub
</script>
Regel 76 ⟶ 95:
<asp:ListItem Value="fr-BE">Frans</asp:ListItem>
</asp:RadioButtonList><br />
<asp:Label ID="lblResultaat" runat="server"></asp:Label><br />
<asp:Label ID="lblResultaat2" Text="<%$Resources:GlobResource, Welkom %>"
runat="server"></asp:Label>
</form>
</body>
</html></pre>
 
Als je in het configuratiescherm van Windows de regionale instellingen verandert naar Frans (België), dan zal het tweede label (lblResultaat2) dit automatisch opvangen.
Het eerste label (lblResultaat) past zich aan aan de keuze in de radiolijst.
 
{{Navigatie
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.