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>