Et site med kursusmaterialer, der bruges i forbindelse med undervisning i forskellige it relaterede emnerEn skøn grafik du kan nyde mens der undervises.
   

Send spørgsmål eller kommentar til Thor - klik her: Send en kommentar til Thor - omkring undervisning eller kursus  Søg i kursusmaterialerne. Kan bruges i forbindelse med undervisningen eller efter kurset  Til forsiden af kursusmaterialer.dk 

 

ASP.NET III / Globalisering / Satellite assemblies


ASP.NET fjernundervisningskursus

- Vil du gerne på kursus NU?

- Vil du gerne lære i dit eget tempo?

- Har du ikke tid til at tage på kursus ude i byen?

Så køb et kursus i ASP.NET som fjernundervisning på www.it-fjernundervisning.dk


Sattelite assemblies

I et web-projekt kan man bruge sattelite assemblies til at gemme oversatte tekststrenge, grafik og andet sprog/kultur specifikt til hvert sprog/kultur sitet skal kunne vises til. VS.NET har en ressource manager til at oprette og vedligeholde disse sattelite assemblies. Når sitet vises bliver de oversatte tekststrenge indlæst baseret på egenskaben CurrentUICulture.

For at bruge sattelite assemblies gør man følgende:

  1. sæt id og runat attributterne for alle de elementer, der kræver oversættelse
  2. dan en default ressource fil, der indeholde de tekster, der skal vises, hvis der er en ressource for det aktuelle sprog/kultur
  3. dan en ressource fil, der indeholder de oversatte tekster for de sprog dit site skal kunne vises i
  4. skriv den kode, der er nødvendig for at indlæse teksterne - her bruger man ResourceManager klassen
  5. skriv den kode, der finder brugerens sprog/kultur og skift trådens indstillinger (Thread.CurrentCulture og Thread.CurrentUICulture). Husk at CurrentCulture bruges til formatering af datoer, tal mm. og CurrentUICulture bruges til at afgøre hvilket sattelite assembly der skal bruges.
  6. skriv den kode, der skal til for at hente tekststrengene fra ressourcen og skrive dem på sitet.

Forberedt HTML kode

Nedenfor er vist lidt HTML, der er forberedt på brug af sattelite assamblies:

 <body>
  <form id="Form1" method="post" runat="server">
   <h1 id="overskrift1" runat="server">En overskrift</h1>
   <p id="p1" runat="server">En tekst i en paragraf</p>
   <span id="sp1" runat="server">Indtast et beløb:</span>
   <asp:TextBox id="txtBeloeb" runat="server"></asp:TextBox><br/>
   <asp:Label id="lblResultat" runat="server"/>
   <asp:Button id="butOK" runat="server" Text="OK"></asp:Button>
   <input id="butCancel" runat="server" type="button" onclick="txtBeloeb.value=''" value="Cancel">
  </form>
 </body>

Bemærk at alle elementer - også de almindelige HTML elementer har et id og et runat="server".

Etablering af ressource filer

Det er muligt at danne 3 slags ressourcefiler i applikationen:

  1. Fallback, der kan navngives frit - f.eks. tekster.resx
  2. Sprogspecifikke skal navngives filnavn.sprog.resx - f.eks tekster.es.resx (for tekster på spansk)
  3. Kulturspecifikke skal navngives som filnavn.sprog-kultur.resx - f.eks tekster.es-MX.resx

For at oprette disse filer skal du (du skal have én fil pr. sprog du vil understøtte + én fallback (default))

  1. vælge Projekt | Add New Item.. og vælge Assembly Resource File (husk at navngive som beskrevet ovenfor)
  2. Opret tekster til de elementer - først skal de navngives og dernæst skal man skrive teksten. Det kan være meget fornuftigt at navngive dem efter følgende princip: formnavn.elementnavn

Visning af ressource informationer

Nedenstående kode viser, hvordan man viser de informationer der findes i ressource filerne

  protected ResourceManager gStrings = new ResourceManager("rootnamespace.resxfilename", typeof(webform1).Assembly);
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   string strSprog = Request.UserLanguages[0];
   Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strSprog);
   Thread.CurrentThread.CurrentUICulture = new CultureInfo(strSprog);
   overskrift1.InnerHtml = gStrings.GetString("webform1.overskrift1");
  }

Husk at erstatte "rootnamespace" med navnet på dit namespace og "resxfilename" med navnet på din ressourcefil - der skal være " omkring det hele.

 

Jeg har ikke prøvet at implementere denne form for globalisering i praksis og tror nok jeg ville vælge at have teksterne liggende i en database i stedet - denne metode gør det meget svært at overskue og vedligeholde sine tekster på de forskellige sprog.


   
Spacer Spacer Spacer Spacer