visual tiempo resolucion posicionar posicion poner pantalla orden net modificar los formularios formulario form ejecucion como centro cambiar app ajustar c# asp.net culture

c# - resolucion - ¿Cómo cambiar CurrentCulture en tiempo de ejecución?



posicion de un formulario c# (3)

Necesito cambiar las culturas en el tiempo de ejecución de acuerdo con los archivos de recursos para cada cultura.

Necesito cambiar los atributos de los controles en mi formulario, de acuerdo con dos culturas que han designado archivos .resx

resorces1.aspx.resx // default resorces1.aspx.he-IL.resx // hebrew culture

Puedo cargar la página con el recurso alternativo, o en la carga de página, dar el valor UICulture = "he-IL" y se carga bien con los recursos deseados.

El problema es que necesito hacer estos cambios en tiempo de ejecución.

1 .. después de cambiar el valor en un evento de clic de botón

btn_change_Click(....) { UICulture = "he-IL" ; }

Todavía retorna al valor inicializado de "en-US"

¿Cómo puedo comprometer un cambio en UICulture en tiempo de ejecución?

2 .. ¿cómo puedo hacer referencia al archivo de recursos de respaldo si, por ejemplo, no sé que es "en-US"?


Cambiar la cultura de la interfaz de usuario actual:

System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("he-IL");

o mejor, recupere una instancia de solo lectura en caché de la cultura he-IL:

System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("he-IL");

En el tiempo de ejecución, ASP.NET usa el archivo de recursos que es la mejor coincidencia para la configuración de la propiedad CurrentUICulture. La cultura de la interfaz de usuario para el hilo se establece de acuerdo con la cultura de la interfaz de usuario de la página. Por ejemplo, si la cultura de IU actual es española, ASP.NET usa la versión compilada del archivo WebResources.es.resx. Si no hay ninguna coincidencia para la cultura de la interfaz de usuario actual, ASP.NET utiliza el recurso de reserva. Comienza buscando recursos para una cultura específica. Si no están disponibles, busca los recursos para una cultura neutral. Si no se encuentran, ASP.NET carga el archivo de recursos predeterminado. En este ejemplo, el archivo de recursos predeterminado es WebResource.resx.


Max me puso en el camino correcto, nada que no haya encontrado antes, pero me ayudó a hacer un pequeño ajuste a la documentación de MSD al respecto:

http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

string defaultLanguage = Thread.CurrentThread.CurrentUICulture.ToString(); protected void Page_Load(object sender, EventArgs e) { } protected override void InitializeCulture() { if (Request.Form["ListBox1"] != null) { String selectedLanguage = Request.Form["ListBox1"]; UICulture = selectedLanguage; Culture = selectedLanguage; Thread.CurrentThread.CurrentCulture = new CultureInfo(selectedLanguage); Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage); } else { Thread.CurrentThread.CurrentCulture = new CultureInfo(defaultLanguage); Thread.CurrentThread.CurrentUICulture = new CultureInfo(defaultLanguage); } base.InitializeCulture(); }

el cuadro de lista contiene diferentes culturas, el primero y el seleccionado también es el valor predeterminado, que guardo en la carga de la página, en otros lo carga sin efecto porque el cuadro de lista ya es un valor.


No he podido obtener el "repliegue" como se describe aquí para que funcione. Estoy usando archivos de recursos globales para el idioma y cuando falta la etiqueta en el archivo de cultura seleccionado por el usuario, ¿no vuelve a la etiqueta predeterminada en la cultura por defecto? Terminé creando un método para realizar el respaldo. Estaba buscando mejores maneras de cambiar la cultura de la temperatura (cuando no se encuentra la etiqueta) y tropecé en este post, así que pensé que sí y algo de contenido.

En una de mis clases de utilidad: public String getLabelResource (String sLabelID, String sLangCd) {

cLogger oLogger = new cLogger(); try { Object sLabel; sLabel = HttpContext.GetGlobalResourceObject("{filename}", sLabelID); if (sLabel.ToString() == "") //label was not found in selected lang { //default to US language resource label Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US"); sLabel = HttpContext.GetGlobalResourceObject("{filename}", sLabelID); //switch global lang back to selected Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(sLangCd); } return sLabel.ToString(); } catch (Exception ex) { oLogger.LogWrite("cUtils.cs", "getLabelResource", ex.Message, false); return String.Empty; } }