Sito multilingua

martedì 12 ottobre 2010 - 01.10

Gemini Profilo | Expert

Ciao a tutti
devo realizzare un sito multilingua. Ho trovato un articolo che spiega come fare.
Ho creato 2 cartelle: App_GlobalResources e App_LocalResources.
Come faccio a recuperare da codice all'interno dei file presenti in queste 2 cartelle una coppia chiave-valore?
Grazie

alexmed Profilo | Guru

Ciao
So che non è questo che cerchi ma mi sembrava il caso di segnalartelo
http://www.microsofttranslator.com/widget/
Poi magari lo conosci già e allora niente!!!

Ciao

alexmed

softgens Profilo | Newbie

Non occorre recuperare via codice la coppia chiave/valore tutto avviene in automatico. Ma prima devi decidere come avverrà la scelta della lingua: in automatico in base a quella impostata nel browser oppure a scelta dell'utente, oppure un mix delle due (di default quella del browser fino a quando non viene scelta espressamente). Se avviene in base alla scelta devi anche decidere dove salvare la scelta (profilo? cookies?).

Una volta presa la decisione deriva tutte le pagine del tuo sito da una tua classe page. Questa è una buona abitudine a prescindere dalla internazionalizzione delle pagine. Ecco come fare:

Creare una nuova classe MyPage derivata da Page
Public Class mypage : Inherits Page end class

Tutte le mie pagine aspx derivano da questa mia classe invece che da Page.
Public Class default : Inherits mypage Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub end class

All'interno della classe MyPage implementa:
Protected Overrides Sub InitializeCulture() dim lang as string (tuo codice che imposta la lingua nella variabile lang) Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang) Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang) MyBase.InitializeCulture() end sub

A questo nelle tue pagine ASPX devi inserire il riferimento alle risorse. Per esempio:

<asp:Label runat="server" id="Label" Text="Solo un test" />
deve diventare
<asp:Label runat="server" id="Label" meta:resourcekey="tuachiave"/>

Nel file di risorse nella directory App_LocalResources inserisci tanti quante sono le lingue file per ogni pagina aspx. Ogni file avrà la chiave tuachiave.text = "Solo un test" (ovviamente tuachiave.text = "Just a test" per l'inglese per esempio).

Per la pagina chisiamo.aspx crea:
chisiamo.aspx.resx (con la lingua di default)
chisiamo.aspx.en.resx (per l'inglese)


Spero di avere dato l'idea ma se necessario posso darti maggiori dettagli. Fammi sapere.

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5