Esta vez vengo a pedir ayuda para mi, a ver si alguien tiene mas idea o suerte que yo.
Se que hay gente por aqui con conocimientos y que disfrutan con los retos.
Siguiendo mi linea, es algo que hago por hobby y no tiene nada que ver con bases de datos. El caso es que se me estan quemando los fusibles.
Voy a extenderme un poco, pero es para que quede claro el tema y para evitar que os molesteis en darme ideas que ya he probado, etc.
Encontre un codigo que sirve para mandar texto para traducir online con google web translate.
Lo modifique para que capture el portapapeles y devuelva el resultado al mismo portapapeles.
De este modo solo tienes que copiar un texto y el solo se traduce con la opcion "detect".
Si pongo un programa de texto a voz que capture tambien el portapapeles, al momento despues de copiarlo estoy escuchando la traduccion.
Esto como es obvio viene muy bien para navegar por la red, aunque yo lo estoy usando tambien para otros temas.
El caso es que intento que el programa traduzca textos en japones.
Tengo el idioma japones instalado y utilizo textbox del Forms 2.0 para poder verlo bien sin usar AppLoc.
El texto aparece bien en el textbox, y si lo mando a una variable y de esta a otro textbox se copia perfectamente.
El problema es que cuando intento traducirlo, el resultado es ??????? haga lo que haga.
Esta es la funcion que uso para pedir la traduccion:
En la variable sUrl ponemos la direccion web y el texto a traducir, parametros, etc...
y despues filtramos el resultado para encontrar la traduccion.
Código vb:
Ver original
Public Function GetHTMLFromURL(ByVal sUrl As String) As String Dim S As String Dim hOpen As Long Dim hOpenUrl As Long Dim bDoLoop As Boolean Dim bRet As Boolean Dim sReadBuffer As String * 2048 Dim lNumberOfBytesRead As Long hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0) hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0) bDoLoop = True While bDoLoop sReadBuffer = vbNullString bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead) S = S & Left$(sReadBuffer, lNumberOfBytesRead) If Not CBool(lNumberOfBytesRead) Then bDoLoop = False Wend If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl) If hOpen <> 0 Then InternetCloseHandle (hOpen) GetHTMLFromURL = S End Function
He descubierto que si pego el texto en japones en la pagina del traductor de Google, en la dirección aparece el texto en hexadecimal.
Si copio y pego ese texto hexadecimal en mi programa ¡se traduce!.
ejm: %E5%8A%A0%E5%A5%88%E5%A7%89%E3%81%A1%E3%82%83%E3%8 2%93%E3%81%AB
(a mi me da que %E5 y %E3 son codigos y los 2 siguientes valores el caracter)
No es una simple conversion a hexadecimal, ya que cuando lo intento yo el resultado es:
%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F.....
La conversion esta bien porque con textos en ingles parece convertirlos bien y se traducen, pero no es valida para el japones.
Supongo que tendra codigos de control que no conozco, pero pienso que sabiendo del tema debe ser facil.
He encontrado esta página que convierte texto a hexadecimal de la forma que yo necesito:
http://www.asciitohex.com/
Ahi si pegas un texto en japones te lo pasa al hexadecimal adecuado. En la ventana "Url Encoded" aparece como yo lo necesito.
Esta otra pagina por ejemplo lo convierte a F3 como mi funcion.
http://www.string-functions.com/string-hex.aspx
Necesitaria saber como lo hacen en http://www.asciitohex.com/ y pasarlo a VB6.
Estas serian mis preguntas:
Como mando el texto en japones al traductor?
Alguien tiene alguna idea mas para convertir el japones al ascii adecuado?
Me conformaria con un conversor que solo sirva para japones, o uno para cada idioma. Con solo seleccionar el idioma de origen podria saber que conversor usar.
Otra opcion es intentar usar http://www.asciitohex.com/ como conversor.
Si consiguiera de forma oculta pedir la conversion a esa pagina como pido la traduccion al google translate, aunque no sea el mejor metodo me valdria.
Sin embargo creo que solo funciona desde el explorer, y no se como: rellenar el campo "text ascii", pinchar en "convert" y recibir el contenido de una de las ventanas en hex, o aunque sea todo el codigo fuente resultante.
La cosa es que en este tema estoy "pez", como con las bases de datos.
Llevo un par de dias dandole vueltas y me temo que si lo consigo por mi mismo me va a costar un gran esfuezo y mucho tiempo, de modo que he pensado que quizas alguien entienda del tema y me pueda echar una mano. Mi cabeza ya no es lo que era.
Si necesitais mas explicaciones o funciones solo decidlo.
Gracias por llegar hasta aqui ;D