2009-10-31 8 views

Respuesta

5

los fundamentos para una aplicación multilingüe en Windows es el uso de "recursos". un recurso es un fragmento adjunto al final de su ejecutable, que solo contiene datos, y está formateado de una manera muy específica para que Windows pueda interpretar esos datos.

en sus recursos, puede encontrar cuadros de diálogo, tablas de cadenas, pero también información de versión (las que se muestran en el cuadro de diálogo de propiedades de un archivo en el explorador). Puede ver los recursos de cualquier dll o exe abriendo el archivo exe o dll en Visual C++. Al desarrollar una aplicación, puede crear un recurso (Archivo/Nuevo), agregarlo a su proyecto (lo mismo que cuando agrega un archivo) y editar los recursos (usando el editor de recursos, generalmente una pestaña al lado de la Vista de archivo) en el proyecto explorador).

cada recurso (cuadro de diálogo, diálogo, plantilla, información de versión, tabla de cadenas, ...) contiene un identificador de idioma que puede cambiar. puede crear el mismo recurso varias veces usando un identificador de idioma diferente. una vez compilado, cuando Windows carga la aplicación, intentará abrir los recursos cuyo idioma se acerca más al idioma de la IU de Windows.

un conjunto de funciones se define en el SDK de Windows para hacer un buen uso de esos recursos: LoadString, LoadCursor, LoadBitmap, y todo en el resources chapter.

Ahora, cada vez que use una cadena en su código, colóquelo en un recurso de tabla de cadenas y use la función LoadString para recuperarlo. las ventanas y cuadros de diálogo generalmente se cargan en el idioma correcto sin necesidad de una llamada de función específica, siempre que haya establecido el identificador de idioma correcto en los recursos.

listo, que es la introducción más corto para el desarrollo multilingüe en Windows que podría hacer. Estoy seguro de que puede encontrar muchos artículos bien escritos sobre recursos o desarrollo multilingüe en Windows en la red.

+0

Gracias por escribir un texto tan elobrate en multilingüe –

0

Use gettext para todas sus cadenas.

+0

OP dice Windows: Windows tiene muchas más herramientas nativas para hacer esto que una biblioteca portada desde Un * x que solo traduce cadenas ... –

+0

gettext tiene mucho más que ofrecer que los recursos pobres de Cadena de Windows. Como administrar la situación donde la traducción original cambia. gettext lo dejará en claro, de modo que todos los traductores necesitan actualizar su traducción, y los traductores recibirán una buena pista de la traducción anterior. –

0

Este puede ser un gran problema, o un pequeño problema, dependiendo de lo que hace su programa.

Cosas a tener en:

  1. cadena y codificación de caracteres. Poner cadenas en un recurso (o usar gettext) es un comienzo, pero es posible que desee considerar cómo almacena las cadenas internamente; p.ej. busque en una codificación Unicode como UTF-16 si ya no está usando esa codificación.

  2. Considere cómo procesa y almacena datos de cadena, como también importa: ¿necesita ordenar o hacer comparaciones de casos? El orden ASCII (por ejemplo, comparar el valor simple en un 'char') podría no ser correcto. Algunas de estas preocupaciones se describen here.

  3. Los formatos de salida de fecha y hora, los formatos de salida de dinero y otras cosas también dependen de la cultura.

  4. Por último, es posible que deba volver a diseñar sus elementos de interfaz de usuario según la tecnología de interfaz que esté utilizando. Las cadenas son más largas y más cortas en diferentes lenguajes con diferentes fuentes del sistema. En el caso extremo, es posible que deba considerar su diseño para lectores de derecha a izquierda.

2

Hay varias partes que tienen que preocuparse por:

  1. compilar su aplicación como Unicode
  2. de localización (traducción) la aplicación, por lo que es "hablar" otro idioma
  3. uso local comportamiento de alerta, donde debe ordenar o formatear la fecha/hora/números según lo esperado por el usuario

Para la localización, la mejor práctica actual es no usar cadenas en su código, sino almacenarlas en DLLs de solo recursos (o "DLL satelital") Probablemente lo mejor es comenzar desde aquí: http://msdn.microsoft.com/en-us/goglobal/bb978454.aspx, especialmente los tutoriales y presentaciones a la derecha.

Para el trabajo de localización abajo al detalle, se puede comprobar esto: http://mihai-nita.net/2007/05/03/how-to-localize-an-rc-file/

Para el comportamiento de la configuración regional cuenta que tienes que utilizar las API especiales como GetNumberFormat o GetDateFormat. Probablemente podemos empezar desde aquí o aquí http://msdn.microsoft.com/en-us/library/dd319078%28VS.85%29.aspxhttp://msdn.microsoft.com/en-us/goglobal/dd565826.aspx

Pero, por supuesto sin respuesta aquí será suficiente, ya que hay libros completos sobre el tema. Así que solo comience desde el portal de globalización MS (http://msdn.microsoft.com/en-us/goglobal/), especialmente la pestaña "Aprender", y o desde allí.

Y cuando se encuentre con algunos problemas (lo más probable es que lo haga), visítenos en el grupo de noticias internacional de microsoft.public.win32.programmer.nl (lo sé, sacar a alguien de stackoverflow podría no ser una "buena forma", pero hay un lugar dedicado, por lo que puede obtener mejores respuestas).

Cuestiones relacionadas