visual c++ - studio - Hacer una aplicación MFC internacional
xamarin (4)
Hay mucho más que solo traducir "cadenas" para internacionalizar una aplicación.
La mayor parte de su IU deberá actualizarse para tener en cuenta las diferentes longitudes de texto y la orientación del idioma (cosa hebrea, china, árabe, ...)
Algunas imágenes también deberán cambiarse para adaptarse a una cultura diferente (desafortunadamente, no tengo un ejemplo para eso), ya sea que el figurativo sea diferente o que los colores no se ajusten a las especificaciones locales.
Estamos utilizando una herramienta como appTranslator para ayudarnos a hacer la localización cosmética (nuevo formato de IU) y utilizar un traductor técnico profesional para las cadenas.
Aquí tengo varias aplicaciones grandes de MFC, y convertirlas a cualquier otro formato está fuera de discusión. Nos estamos expandiendo a otros mercados y nos gustaría que las aplicaciones funcionen en otros idiomas y culturas.
Hasta ahora, he encontrado referencias ocasionales sobre qué hacer con Visual C ++ versión 6, con una mención de que las versiones posteriores de MFC tienen características adicionales relevantes. La búsqueda en MSDN me da instrucciones sobre cómo convertir las aplicaciones a Unicode, lo cual ya hicimos. No encontré nada en MSDN sobre cómo hacer que los idiomas sean multilingües una vez que están en Unicode, solo unas pocas cosas más antiguas usando Google, y un libro sobre internacionalización usando VC ++ 6. (Ahora estamos usando Visual Studio 2008, en XP y Vista).
No reclamo la fuerza de mi Google-fu, y me complacería que me dirigieran a cosas que me he perdido.
¿Es razonable usar los métodos de VC ++ 6 o debería usar funciones posteriores?
Si debo usar funciones posteriores, ¿dónde puedo encontrar alguna referencia sobre ellas?
¿Hay algo de lo que debería preocuparme aparte de establecer la configuración regional, convertir todas las cadenas en recursos y duplicar recursos en diferentes idiomas?
Puedo encontrar más cosas sobre la internacionalización de .NET, pero no tengo experiencia en .NET. ¿Qué encontraré allí que sea aplicable a VC ++ y MFC?
Editar: me encontré con dificultades al tratar de poner cadenas Unicode en el recurso de tabla de cadenas. (Por lo que puedo decir, las cadenas Unicode deben ingresarse en el archivo .rc con un editor de texto, en formato L "0x0034". No he encontrado un editor de recursos para hacerlo). ¿Algún consejo sobre eso? ¿Algún otro recurso que pueda usar en VS2008 usando VC ++ y MFC?
Editar: Alguien en un foro de Microsoft sugirió que abriera el archivo .rc ofensor en el Bloc de notas y lo guardara en Unicode. Desafortunadamente, esto no parece arreglar los diálogos, aunque la tabla de cadenas parece funcionar en japonés.
Puede internacionalizar su aplicación de las siguientes maneras.
Después de convertir la aplicación a Unicode (ya lo hizo) y todas las cadenas deben cargarse desde la tabla de cadenas.
Para cada idioma, necesita cambiar la tabla de cadenas y compilar
Una forma más es mantener un archivo XML que contenga todas las cadenas en el formato localizado. Cargue el xml y las cadenas según el idioma.
También puedes crear un recurso solo dll
Consulte Cómo crear DLL de recursos localizados para la aplicación MFC para obtener más detalles.
Aquí hay un artículo mío CodeProject que describe un método muy "eficiente en codificación" para extraer cadenas de la tabla de cadenas (requerido para textos traducibles): http://www.codeproject.com/KB/string/stringtable.aspx
Aquí hay otra clase que ayuda a su aplicación a elegir el idioma de UI correcto. También lo 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 su aplicación, detectar qué cambios se realizaron en los recursos desde la última versión, crear EXE traducidos o DLL de recursos y mucho más: http://www.apptranslator.com
(Nota: soy el autor de appTranslator).