Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: StegoNeo en Septiembre 20, 2014, 06:55:18 am

Título: Ayuda UNICODE: Aplicación Multilenguaje VB6 a Chino
Publicado por: StegoNeo en Septiembre 20, 2014, 06:55:18 am
Hola a tod@s

Mi problema es simple y complejo a un tiempo. Necesitaria vuestra ayuda si alguien se ha pegado con anterioridad con aplicaciones vb6 multilenguaje, sobretodo unicode (UTF-8), es decir Chino y Vietnamita.

Tengo una aplicación vb6 creada en castellano al 100% pero con soporte multilenguaje.

Dispongo de una rutina que convierte/traduce los caption, labels, etc... de los controles antes de mostrar los forms al lenguaje elegido. Para ello me sirvo de un simple access con terminos, mensajes, etc... que busca desde Español al lenguaje deseado.  Con los lenguajes occidentales, no problem. Asi ha estado funcionando varios años. Pero ay! ahora toca chino, vietnamita... unicode vaya.

Llevo como un mes, probando controles (FM20), componenteone vsflex8, unicontrols, estos no dan problemas insalvables aparentemente (no olvidemos que es chino, aunque ya este el access traducido).

He asumido que tengo que modificar todos los forms hacia controles que admiten unicode, pero aunque parece que avanzo siempre tengo tropiezos, tan simples como los fonts a aplicar.

Si alguien tiene una experiencia similar, por favor que me oriente (nunca mejor dicho, jeje)



Título: Re:Ayuda UNICODE: Aplicación Multilenguaje VB6 a Chino
Publicado por: raul338 en Septiembre 20, 2014, 11:59:35 am
Todo va a tener que estar en unicode: Strings (vb6 ya estan en unicode), fuentes que soporten el lenguaje que vas a usar (hay que buscar porque no todos tienen), Los strings en access y la cadena de conexion que especifique que vas a usar Unicode. Nunca probe.

Que tipos de controles buscas? (grids, listas, cosas... (?))
Título: Re:Ayuda UNICODE: Aplicación Multilenguaje VB6 a Chino
Publicado por: Albertomi en Septiembre 20, 2014, 12:59:19 pm
Estimado StegoNeo

Aquí tienes algo de lectura y códigos de ejemplo que te podrían brindar luces. Espero te sean de utilidad.

Unicode Tutorial Vb
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=60608&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=60608&lngWId=1)

Unicode in VB made easy
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=58014&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=58014&lngWId=1)

Five ways to display UTF-8 without unicode controls + all 150 UTF-8 character code tables
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=73598&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=73598&lngWId=1)

UniControls: Unicode aware controls
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=69738&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=69738&lngWId=1)

UniCaption - unicode caption for your forms
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=70718&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=70718&lngWId=1)

UniText RC3 & UniList RC1
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=70658&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=70658&lngWId=1)

Unicode Calendar
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=48174&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=48174&lngWId=1)

Unicode ucComboBoxEx
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=66273&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=66273&lngWId=1)

UniLabel 2.3 - Unicode label
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=56259&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=56259&lngWId=1)

vkControls : 16 GRAPHICALS usercontrols
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=68734&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=68734&lngWId=1)

Unicode - Drag n Drop Unicode FileNames
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=68408&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=68408&lngWId=1)

Unicode RichEdit (don't support Pictures)
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=67699&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=67699&lngWId=1)

Special Right To Left Support Tooltip Control
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=56471&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=56471&lngWId=1)

Unicode Convertor
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=54103&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=54103&lngWId=1)

Urdu Unicode Word Processor
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=53414&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=53414&lngWId=1)
 

Saludos, desde algún lugar de Lima-Perú
Título: Re:Ayuda UNICODE: Aplicación Multilenguaje VB6 a Chino
Publicado por: StegoNeo en Septiembre 21, 2014, 09:55:39 am
Gracias por las respuestas. Os aclaro por partes...es una aplicación "grande" de producción, es decir 50% gestión y 50 % automatización a máquinas y demás.

CONTROLES Y FUENTES
Controles ya tengo y probé bastantes, (UniSuite (lite), los de ComponentOne y los de FM20.dll) y los controles de usuario de planetsource, aunque si conoceís más os lo agradezco. Hay alguno por ahi mejorable, por eso, bien venidos sean. Veries lo que me desconcierta de los controles es que los que utilizan la fuente "@Arial Unicode MS", en teoria la que vale para casi todo, las fm20 si lo admiten, asi como C1, pero la UniSuite utilizan UTF-16, con lo que no se representa el Chino tradicional por ejemplo. Por ello preguntaros si conoceis alguna fuente universal de unicode que estandarice esto. Además algunos caracteres aparecen al revés (o a mi me lo parece) Ej: 阈值不正确 en el access. Aparece girado 90 grados en el UniSuiteButton por ejemplo. De igual modo en C1. De chino no sé nada, pero si conozco que el chino simplificado es el de china y el chino tradicional corresponde a Korea y Hong Kong. Esto espero aclararlo con chinos de verdad. Pero sobre el tema programatorio me parece que nada de nada.

De por si es aburrido utilizar una sola fuente, pero la necesidad obliga. Supongo que tendre que agenciarme un pc con windows en chino, para saber realmente si lo muestra en condiciones, y sobretodo como se hace la entrada de datos.

El que más me preocupa de todos es Crystal Reports 8... pero eso ya es rizar el rizo. C1 lleva un generador de informes que nunca probé, y espero me indiqueis sugerencias. Aunque suene raro, lo utilizó mucho para generar etiquetas con las Zebra (sin EPL/ZPL), y funciona muy bien. El problema es que utilizo formulas en su mayor parte y he de probar con las string unicode.

Chamaleonbutton es uno de los controles que más utilizo, pero me resulta inservible aqui, a no ser que sólo utilice iconos que por otra parte es un lenguaje universal.

MENUS

Este es un quebradero de cabeza, el menu estandar de VB6 no reacciona a nada de esto. Todo son ??.

SOBRE EL ENLACE

Quizá tengas razón en la conexión, aún no probé. Esto lo harçe con ese windows chino.

Acepto cualquier sugerencia y ayuda, teneis un foro estupendo, del que desde ayer prometo participar activamente, quedamos pocos románticos del vb clasico.

Un saludo a tod@s



Título: Re:Ayuda UNICODE: Aplicación Multilenguaje VB6 a Chino
Publicado por: raul338 en Septiembre 21, 2014, 12:29:43 pm
Sobre fuentes puedes usar las fuentes que se utilizan en android (android tambien esta en chino, esta xiaomi que es un android chino puro :P) que son libres para usar.
https://www.google.com/get/noto/#/family/noto-sans-hans (https://www.google.com/get/noto/#/family/noto-sans-hans)
Noto Sans CJK TC = Traditional Chinese
Noto Sans CJK SC = Simplified Chinese

Sobre el chameleon button... Es cuestion de probar, habria que cambiar cosas (?)...
EDIT: Para que funcione el chameleon button tienes que cambiar la declaracion de la API DrawText a DrawTextW (A es ANSI y W es unicode) y cambiar todas sus llamadas para que usen StrPtr. Ponle la fuente noto sans y funciona barbaro! (Cuando lo edites recuerda cerrar y guardarlo!. Si no te sale, re abre el proyecto. Cierra todas las ventanas de codigo/diseño y prueba otra vez)

Puedes usar esta pagina para "hardcodear" strings... http://macchiato.com/unicode/convert.html

(http://i60.tinypic.com/97oe4i.jpg)

Sobre los menus: Probaste a usar menús con hooks? Items del menú personalizados (http://leandroascierto.com/blog/items-del-menu-personalizados/)
Título: Re:Ayuda UNICODE: Aplicación Multilenguaje VB6 a Chino
Publicado por: StegoNeo en Septiembre 21, 2014, 03:23:06 pm
Raúl, eres un crack! Acabas de resolverme un par de quebraderos de cabeza.

No pensé ni por asomo en las fuentes de Android! Bajando...
Sobre los menús haré pruebas con el HookMenu y estas fuentes.
Muy útil el conversor de UTF!
En cuanto al chamaleon button, tengo la ocx, buscaré el código abierto para realizar los cambios que me indicas. Ya veo por la imágen que funciona.
Muchísimas gracias. Os iré poniendo post de como va el "proyectito chino". Curiosamente en vietnamita no estoy teniendo estos problemas con las fuentes (@Arial Unicode MS) parece funcionar muy bien. Pero visto éstas de Android/Google a poco estarán más logradas y actualizadas.

Título: Re:Ayuda UNICODE: Aplicación Multilenguaje VB6 a Chino
Publicado por: raul338 en Septiembre 21, 2014, 03:28:41 pm
Lo acabo de subir para que lo puedas probar.

https://www.mediafire.com/?ga74er5t6ldx65a

Solo toma el archivo ctl y ctx si quieres importarlo directo a tu proyecto
Título: Re:Ayuda UNICODE: Aplicación Multilenguaje VB6 a Chino
Publicado por: StegoNeo en Septiembre 21, 2014, 03:41:15 pm
OK, Lo bajo y pruebo mañana...muchas gracias
Título: Re:Ayuda UNICODE: Aplicación Multilenguaje VB6 a Chino
Publicado por: StegoNeo en Febrero 14, 2015, 03:33:36 pm
Hola de nuevo. Un dia por otro no contesté y me comprometí a ello.

Descargue el chamaleonbutton 2.0, funciona muy bien, lo incorporé como control de usuario, tal y como me sugeriste.

Aun sigo con este dichoso proyecto, algo peculiar.
Os pongo al día, con los controles terminé sustituyendo los estandar de windows por los de UniLite, me quité ese quebradero de cabeza. Representan bien los caracteres asignandole una fuente correcta. Para ello previo a la carga de los controles, en función al idioma seleccionado, utilizo una función que sustituye el charset (134 para China) del font. Y el propio font.name. Para China finalmente las Noto Sans y las fuentes SimSun son las más estandar. En castellano Arial, etc... aunque casi todas las fuentes UTF valen. Es rápido y simple. Al mismo tiempo sustituyo el text, caption, tx, etc... por la "palabra" traducida. Y voilá funciona. Problemas, siempre hay (Los controles de Sheridan, que son más viejos que T-Rex, pero quedamos románticos aún), solución... quitá el texto y pon un bonito icono de 16x16 en SSTAb, por ejemplo. Un icono es internacional Los Tabstrip que hay por ahi no me gustan, jeje

Para la traducción utilizo una base en access que incluye las palabras, busco del español al chino y remplazo. Y listo. Si no existe, pues... conecto a google tanslator con una función, es rápido si solo tiene que consultar una o dos palabras. Sino es mejor entretenerse a que la palabra esté en la base de datos.

Con el crystal reports claudiqué, formularios traducidos por chinos y listo. Es "IMPOSIBLE".

Conclusión... funcionará...pero hay que pasarse a NET, jeje nos guste o no.