Tradizioni, non ne posso più

martedì 29 luglio 2008 - 13.04

sarcidi Profilo | Newbie

Egregi Signori, stimatissimi Colleghi,
non riesco a risolvere un problema delle traduzioni relative alla MasterPage.
Le ho provate tutte ( *tutte* le soluzioni proposte in questa pagina: http://forums.asp.net/p/969928/1219973.aspx ).
Alla fine ho scelto questa strada, che almeno è elegante:

1) creazione sotto cartella App_Code del file BasePage.cs così composto

public class BasePage : Page
{
protected override void InitializeCulture()
{
string lang = string.Empty;//default to the invariant culture
HttpCookie cookie = Request.Cookies["SelLang"];
if (cookie != null && cookie.Value != null)
{
lang = cookie.Value;
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang);
}
base.InitializeCulture();
}
}

2) In MasterPage, dove c'è la DropDownList che consente di cambiare (scusate, *consentirebbe*) la lingua:

protected void DropDownLanguage_SelectedIndexChanged(object sender, EventArgs e)
{
HttpCookie cookie = new HttpCookie("SelLang");
cookie.Value = DropDownLanguage.SelectedValue;
Response.SetCookie(cookie);
Response.Redirect(Request.UrlReferrer.AbsoluteUri); // this is for the redirecting to the referrer page
}

3) Nella pagina che "Markeging.aspx", che deriva dalla masterpage e che ho settato come "Set As Start Page" ho messo:

public partial class Marketing : BasePage //System.Web.UI.Page
{
......
}

Risultato:
1) le traduzioni dei contenuti (es.: label che si trovano in "Marketing.aspx" *funzionano*.
2) le traduzioni della MasterPage *NON FUNZIONANO*.

Sotto App_LocalResources ho:
Marketing.aspx.resx e Marketing.aspx.en-US.resx

Sotto App_GlobalResources ho:
MasterPage.master.resx (per ora mi limito alla sola traduzione in italiano)

Nella MasterPage c'è una label:

<asp:Label ID="LabelLanguage" runat="server" CssClass="help" Font-Strikeout="False" style="width: 57px; right: 212px; left: 636px; bottom: 588px;" Text="Lingua" meta:resourcekey="LabelLanguageResource1"></asp:Label>

la "LabelLanguageResource1" si trova in "MasterPage.master.resx":

<data name="LabelLanguageResource1Text" xml:space="preserve">
<value>ITA</value>

Purtroppo, come ho detto, la MasterPage non è tradotta.
Ditemi cosa ho fatto di male per favore!
Grazie infinite a chi vorrà aiutarmi.
Sommessamente,
Sergio

rossimarko Profilo | Guru

Ciao,

prova a mettere il file di risorse della master sotto la cartella local.

Come puoi vedere dalla documentazione la chiave resource-key cerca le risorse nella App_LocalResources: http://msdn.microsoft.com/en-us/library/ms228093.aspx
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

sarcidi Profilo | Newbie

>prova a mettere il file di risorse della master sotto la cartella
>local.

ciao, purtroppo non funziona :-(

rossimarko Profilo | Guru

Puoi allegare il progetto così ci guardiamo e vediamo di capire cosa possa essere?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
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