Pregunta

Tengo varias aplicaciones MFC grandes aquí, y convirtiéndolos en cualquier otro formato está fuera de la cuestión. Estamos expandiendo a otros mercados, y nos gustaría hacer que las aplicaciones funcionan en otros idiomas y culturas.

Hasta ahora, he encontrado referencias ocasionales en cuanto a qué hacer con Visual C ++ versión 6, con una mención de que las versiones posteriores de MFC tienen características relevantes adicionales. Buscando MSDN me da instrucciones sobre cómo convertir las aplicaciones a Unicode, que ya hemos hecho. No encontré nada en MSDN sobre cómo hacer idiomas multilingües una vez que están en Unicode, sólo unas pocas cosas más viejos con Google, y un libro sobre la internacionalización utilizando VC ++ 6. (Estamos utilizando ahora Visual Studio 2008, en XP y Vista.)

No hago las reclamaciones por la fuerza de mi Google-fu, y estaría feliz de estar dirigida a las cosas que he perdido.

¿Es razonable utilizar los métodos de VC ++ 6, o debería utilizar las funciones posteriores?

Si tuviera que utilizar las funciones más tarde de que, cuando puedo encontrar alguna referencia a ellos?

¿Hay algo que debería preocuparse más que de establecer la configuración regional, la conversión de todas las cadenas a los recursos y la duplicación de recursos en diferentes idiomas?

puedo encontrar más cosas acerca de la internacionalización .NET, pero estoy sin experiencia en .NET. ¿Qué voy a encontrar allí eso es aplicable a VC ++ y MFC?

Edit: Me acabo de encontrar con dificultades al tratar de poner las cadenas Unicode en el recurso de tabla de cadenas. (Por lo que yo puedo decir, cadenas Unicode se tienen que introducir en el archivo .rc con un editor de texto, en L "0x0034" forma. No he encontrado una manera editor de recursos para hacer eso.) ¿Algún consejo sobre eso? Cualquier otro recurso que pueda usar en VS2008 utilizando VC ++ y MFC?

Edit: Alguien en un foro de Microsoft sugirió que abro el archivo .rc infractor en el Bloc de notas, y guardarlo en Unicode. Desafortunadamente, esto no parece solucionar los diálogos, aunque la stringtable parece estar funcionando en japonés.

¿Fue útil?

Solución

Hay mucho más que la traducción de "cuerdas" internacionalizar una aplicación.

La mayor parte de la interfaz de usuario tendrá que ser actualizado para tener en cuenta las diferentes longitudes de texto, y la orientación idioma (cosa hebreo, chino, árabe, ...)

También se necesitan algunas imágenes que ser cambiado para adaptarse a una cultura diferente (por desgracia, no tengo un ejemplo para eso), o bien lo figurativo es diferente o los colores no se ajustan a las especificaciones locales.

Estamos utilizando una herramienta como appTranslator para ayudarnos a hacer la localización cosmética (UI re-formateo) y utilizar un traductor técnico profesional para las cuerdas.

Otros consejos

También puede crear un recurso única DLL

Cómo crear zonas localizadas de recursos DLL para aplicaciones MFC para más detalles.

Puede internacionalizar su aplicación utilizando las siguientes maneras.

Después de que convirtió a la aplicación Unicode (que ya hizo) y todas las cadenas deben cargarse a partir de tablas de cadenas.

  1. Para cada idioma tiene que cambiar la tabla de cadenas y compilar

  2. Una forma más es mantener un archivo XML que contiene todas las cadenas en el formato localizado. Cargar el xml y cadenas en función del idioma.

Aquí hay un artículo CodeProject mío que describe muy método para tirar de los hilos de la tabla de cadenas "de codificación eficientes" (necesario para los textos traducibles): http://www.codeproject.com/KB/string/stringtable.aspx

Aquí hay otra clase que ayude a su aplicación elegir el idioma de la interfaz correcta. También ayuda a crear un menú de selección de idioma: http://www.codeproject.com/KB/locale/LanguageMenu.aspx

Por último, pero no menos importante, appTranslator es una herramienta que le ayuda a traducir la interfaz de usuario de la aplicación, detectar qué cambios se hicieron en los recursos desde la última versión, crear archivos DLL o exe recursos traducidos y mucho más: http://www.apptranslator.com

(Nota:. Soy el autor de appTranslator)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top