c# asp.net webforms localization globalization

c# - El archivo de recursos no se recogió cuando se usaba la expresión ASP.NET



webforms localization (2)

Estoy tratando de usar archivos de recursos en una aplicación ASP.NET Web Forms (.NET 4.0). Estoy usando VS2012. Tengo los siguientes archivos dentro de la carpeta App_GlobalResources :

  • Address.resx (idioma predeterminado, inglés)
  • Address.ja-JP.resx (japonés)

El problema es cuando intento mostrar el texto en japonés en una página ASP.NET (archivo * .aspx). Si utilizo la siguiente sintaxis todo funciona bien:

<%= Resources.Address.Street1 %>

Pero cuando intento vincularlo a una propiedad de un asp:Label control de asp:Label se muestra el texto predeterminado (inglés) en lugar de japonés:

<asp:Label ID="lblStreet1" runat="server" Text=''<%$ Resources:Address,Street1 %>''></asp:Label>

La cultura BTW se está configurando en variables de sesión y luego en la página maestra tengo algo como esto:

Thread.CurrentThread.CurrentCulture = (CultureInfo) Session["ci"]; Thread.CurrentThread.CurrentUICulture = (CultureInfo) Session["uci"];

Además, no sé si esto es relevante o no, pero Address.ja-JP.resx fuera de Visual Studio (usando Notepad ++) y luego moví el archivo a la carpeta App_GlobalResources e App_GlobalResources el archivo en la solución.

¿Me estoy perdiendo de algo?


Pude encontrar una solución a mi problema. En el código detrás tuve que anular el método InitializeCulture , hice algo como esto:

protected override void InitializeCulture() { Thread.CurrentThread.CurrentCulture = (CultureInfo) Session["ci"]; Thread.CurrentThread.CurrentUICulture = (CultureInfo) Session["uci"]; base.InitializeCulture(); }


Recomiendo que veas usar meta: resourcekey en el control de la etiqueta. En su caso, podría usar:

<asp:Label ID="lblStreet1" runat="server" meta:resourcekey="myStreet1Label"></asp:Label>

La clave de recursos en sus archivos de resx sería así:

<data name="myStreet1Label.Text"> <value xml:space="preserve">The street data.</value></data>