2009-07-16 7 views
17

necesito una breve introducción a la localización en una biblioteca de clasesC# biblioteca de clases de localización

no estoy interesado en tirar de la configuración regional del contexto del usuario, en lugar tengo usuarios almacenados en el PP y su entorno local es también instalación en el PP ....

mis funciones en la biblioteca de clases ya se puede tirar el código de configuración regional del perfil de usuario en el PP ... ahora quiero incluir el uso resx según la zona ...

Necesito unos pocos pasos para hacer esto correctamente ...

Y sí, ya he buscado en Google esto y algunas investigaciones, pero todos los tutoriales que puedo encontrar son demasiado complejos para mis necesidades.

+0

Me encontré con algunas extrañas y extrañas técnicas de MSDN ... usando AL ... seguramente puedo lograr esto simplemente usando un estudio visual estándar. –

Respuesta

21

Lamentablemente, este tema es demasiado complicado. ;) Lo sé, he hecho la investigación también.

para que pueda empezar sin embargo,

  1. crear un directorio de recursos en su montaje.

  2. Comience con el inglés y agregue un "archivo de recursos" (.resx) a ese directorio. Llámalo algo así como "text.resx". En el caso de que no se pueda encontrar el recurso localizado, la aplicación saldrá de forma predeterminada de este archivo.

  3. Agregue sus recursos de texto.

  4. Agregue otro archivo de recursos. Nombre este algo como "text.es.resx". Observe la parte "es" del nombre del archivo. En este caso, eso define español. Tenga en cuenta que cada idioma tiene su propia definición de código de carácter. Mira eso.

  5. Agregue sus recursos de español a él.

Ahora que tenemos archivos de recursos para trabajar, intentemos implementarlos.

Para establecer la referencia cultural, extraiga eso del registro de su base de datos. A continuación, haga lo siguiente:

String culture = "es-MX"; // defines spanish culture 
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture); 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture); 

Esto podría ocurrir en la aplicación que se ha cargado el montaje o en la propia inicialización de montaje. Usted escoge.

Para utlize el recurso, todo lo que tiene que hacer es algo como lo siguiente dentro de su montaje:

public string TestMessage() { 
    return Resources.Text.SomeTextValue; 
} 

TA DA. Recursos facilitados Las cosas pueden complicarse un poco si necesita cambiar los controles de usuario o hacer algo directamente en una página aspx. Actualiza tu pregunta si necesitas más información.

Tenga en cuenta que podría tener archivos de recursos con el nombre "text.es-mx.resx" que serían específicos del español mexicano. Sin embargo, eso no siempre es necesario porque "es-mx" volverá a "es" antes de que vuelva al valor predeterminado. Solo usted sabrá cuán específicos deben ser sus recursos.

+0

Suena bien hasta ahora, excepto Resouces.Text.SomeTextValue - ¿De dónde viene eso? ¿Qué espacios de nombres necesito incluir? –

+0

Solo solucionó el paso 1. El espacio de nombre completo para SomeTextValue sería: MyAssemblyName.MyResourcesDirectoryName.MyResourceFile.MyTextValue. Entonces, usando mi ejemplo, sería: MyAssemblyName.Resources.Text.SomeTextValue. – NotMe

+1

Al realizar la llamada de CurrentCulture, el sistema determinará automáticamente si se usará text.resx o text.es.resx – NotMe

1

Nombre sus resxes con la cultura en ellos (por ejemplo, resource_en-GB.resx) y seleccione qué recurso consultar basándose en la cultura.

+0

déjame probar esto –

0

Para acceder al archivo de recursos desde el código, necesita abrir el archivo de recursos y luego cambiar el menú desplegable "Modificador de acceso" a "público", el mío fue "sin generación de código". Después de eso, puede acceder a: Resources.FileName.ResourceName.

+1

-1: hecho interesante, pero no responde la pregunta. –

Cuestiones relacionadas