Page 1 of 1

Error en FW_TransLang

PostPosted: Sun Jun 28, 2020 1:36 pm
by J. Ernesto
Buenos días Foro

Donde puedo encontrar ftranslate.prg.

Con textos de varios párrafos, me genera el siguiente error:

Error description: Error BASE/1068 Error de argumento: acceso al array
Args:
[ 1] = U
[ 2] = N 1

Stack Calls
===========
Called from: .\source\internal\FTRANSLATE.PRG => FW_TRANSLANG( 57 )
Called from: .\.\_fw_traductor_free.prg => (b)MAIN( 216 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 697 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 983 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1791 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 2006 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3546 )
Called from: => DIALOGBOXINDIRECTW( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 304 )
Called from: .\.\_fw_traductor_free.prg => MAIN( 251 )

Re: Error en FW_TransLang

PostPosted: Sun Jun 28, 2020 2:37 pm
by cnavarro
La function la desarrollé y de momento no está el código disponible.
Cual es el origen del texto que estás pasando a la function?
En qué terminan las líneas, en Chr( 10 ) o en CRLF ?

Re: Error en FW_TransLang

PostPosted: Sun Jun 28, 2020 9:05 pm
by J. Ernesto
Cristobal, buenas tardes

Estoy tomando textos desde word y desde correos.

Re: Error en FW_TransLang

PostPosted: Sun Jun 28, 2020 9:12 pm
by J. Ernesto
Cristobal. Este es un fragmento de un texto cualquiera donde aparece el error:

Windows, como cualquier otro sistema operativo, nos permite crear nuevos directorios, lo que conocemos como carpetas, para organizar y guardar los datos que queramos. El sistema operativo nos permite dar a estas carpetas el nombre que queramos. Sin embargo, Windows no nos deja usar determinados caracteres a la hora de crear la nueva carpeta, así como tampoco nos deja, por ejemplo, empezar el nombre de la nueva carpeta por un punto. Aunque esta última limitación se puede saltar con relativa facilidad.

En Linux, un punto al principio de un archivo o una carpeta significa que la carpeta o el archivo está oculto. Sin embargo, en Windows no hace nada.

Microsoft sí que deja usar un punto al nombrar archivos o carpetas del sistema operativo, pero la única condición es que haya texto antes y después de dicho punto. Por lo tanto, en condiciones normales, un nombre de un archivo o de carpeta ni puede empezar en punto ni acabar en punto. Esto se debe a que, generalmente, Microsoft interpreta el punto como parte de una extensión de archivo.

Re: Error en FW_TransLang

PostPosted: Mon Jun 29, 2020 9:43 am
by cnavarro
Ernesto, prueba de esta manera, antes de enviarlo.

cString := StrTran( cString, CRLF, "####" )
cString := StrTran( cString, Chr( 10 ), CRLF )
cString := StrTran( cString, "####", CRLF )


Aunque creo que el problema es que han actualizado el API y el formato de devolución de la respuesta, si así te sigue fallando revisaré la function.

Re: Error en FW_TransLang

PostPosted: Wed Jul 01, 2020 6:24 am
by nageswaragunupudi
J. Ernesto wrote:Cristobal. Este es un fragmento de un texto cualquiera donde aparece el error:

Windows, como cualquier otro sistema operativo, nos permite crear nuevos directorios, lo que conocemos como carpetas, para organizar y guardar los datos que queramos. El sistema operativo nos permite dar a estas carpetas el nombre que queramos. Sin embargo, Windows no nos deja usar determinados caracteres a la hora de crear la nueva carpeta, así como tampoco nos deja, por ejemplo, empezar el nombre de la nueva carpeta por un punto. Aunque esta última limitación se puede saltar con relativa facilidad.

En Linux, un punto al principio de un archivo o una carpeta significa que la carpeta o el archivo está oculto. Sin embargo, en Windows no hace nada.

Microsoft sí que deja usar un punto al nombrar archivos o carpetas del sistema operativo, pero la única condición es que haya texto antes y después de dicho punto. Por lo tanto, en condiciones normales, un nombre de un archivo o de carpeta ni puede empezar en punto ni acabar en punto. Esto se debe a que, generalmente, Microsoft interpreta el punto como parte de una extensión de archivo.


I am able to translate this text into Spanish.
Windows, como cualquier otro sistema operativo, nos permite crear nuevos directorios, lo que conocemos como carpetas, para organizar y guardar los datos que queremos. El sistema operativo nos permite dar a estas carpetas el nombre que queremos. Sin embargo, Windows no nos permite usar ciertos caracteres al crear la nueva carpeta, ni nos permite, por ejemplo, comenzar el nombre de la nueva carpeta con un punto. Aunque esta última limitación se puede omitir con relativa facilidad. .

En Linux, un punto al comienzo de un archivo o carpeta significa que la carpeta o el archivo está oculto. Sin embargo, en Windows no hace nada. .

Microsoft permite que se use un punto al nombrar archivos o carpetas del sistema operativo, pero la única condición es que haya texto antes y después de ese punto. Por lo tanto, en condiciones normales, el nombre de un archivo o carpeta no puede comenzar en un punto o terminar en un punto. Esto se debe a que Microsoft generalmente interpreta el período como parte de una extensión de archivo. .


I have also translated to a Unicode language and it translated perfectly.
విండోస్, ఇతర ఆపరేటింగ్ సిస్టమ్ మాదిరిగానే, క్రొత్త డైరెక్టరీలను సృష్టించడానికి, ఫోల్డర్లుగా మనకు తెలిసినవి, మనకు కావలసిన డేటాను నిర్వహించడానికి మరియు సేవ్ చేయడానికి అనుమతిస్తుంది. ఆపరేటింగ్ సిస్టమ్ ఈ ఫోల్డర్లకు మనకు కావలసిన పేరు ఇవ్వడానికి అనుమతిస్తుంది. అయినప్పటికీ, క్రొత్త ఫోల్డర్‌ను సృష్టించేటప్పుడు కొన్ని అక్షరాలను ఉపయోగించడానికి విండోస్ అనుమతించదు, లేదా క్రొత్త ఫోల్డర్ పేరును కాలంతో ప్రారంభించడానికి ఇది అనుమతించదు. ఈ చివరి పరిమితిని సాపేక్ష సౌలభ్యంతో దాటవేయవచ్చు. .

Linux లో, ఫైల్ లేదా ఫోల్డర్ ప్రారంభంలో ఒక చుక్క అంటే ఫోల్డర్ లేదా ఫైల్ దాచబడి ఉంటుంది. అయితే, విండోస్‌లో అది ఏమీ చేయదు. .

ఆపరేటింగ్ సిస్టమ్ ఫైల్స్ లేదా ఫోల్డర్‌లకు పేరు పెట్టేటప్పుడు మైక్రోసాఫ్ట్ ఒక పాయింట్‌ను ఉపయోగించడానికి అనుమతిస్తుంది, కానీ ఒకే షరతు ఏమిటంటే, ఆ సమయానికి ముందు మరియు తరువాత టెక్స్ట్ ఉంది. అందువల్ల, సాధారణ పరిస్థితులలో, ఫైల్ లేదా ఫోల్డర్ పేరు పాయింట్‌పై ప్రారంభం కాదు లేదా పాయింట్‌పై ముగుస్తుంది. మైక్రోసాఫ్ట్ సాధారణంగా ఫైల్ ఎక్స్‌టెన్షన్‌లో భాగంగా ఈ కాలాన్ని వివరిస్తుంది. .


The translation is perfect.

I split the entire text into paragraphs and each paragraph into sentences programmatically. I translated each sentence and re-assembled the results into paragraphs and into full text.

But when I tried to repeat more times, I started getting the same errors as pointed out above. I have a feeling that there is a limitation on the number of times we can use this API from a particular IP Address in a day.

When I changed my internet connection to a different provider, I could do the transalatios again.

Re: Error en FW_TransLang

PostPosted: Wed Jul 01, 2020 7:20 am
by cnavarro
Mr Rao, provide your prg used for test it

Re: Error en FW_TransLang

PostPosted: Wed Jul 01, 2020 12:22 pm
by nageswaragunupudi
Code: Select all  Expand view
function TestTranslate()

   local cText, aText, aTran, cTran
   local i, j
   local cLangFrom := "en"
   local cLangTran := "te" // "es"

   FW_SetUnicode( .t. )

   cText    := HB_MEMOREAD( "ENGLISH.TXT" )
   FW_MEMOEDIT( cText )

   aText    := HB_ATokens( cText, CRLF )
   AEval( aText, { |c,i| If( Empty( c ),,aText[ i ] := HB_ATokens( c, "." )) } )

   aTran    := {}

   for i := 1 to Len( aText )

      if Empty( aText[ i ] )
         AAdd( aTran, CRLF )
      else
         cTran := ""
         for j := 1 to Len( aText[ i ] )
            cTran += " " + FW_TransLang( AllTrim( aText[ i, j ] ) + ".", cLangFrom, cLangTran,  )
         next
         AAdd( aTran, LTrim( cTran ) + CRLF )
      endif

   next i

   cTran := ""
   AEval( aTran, { |c| cTran += c } )

   FW_MEMOEDIT( cTran )

return nil

 


The file english.txt is what is copied from the above post and saved in ANSI.

Re: Error en FW_TransLang

PostPosted: Wed Jul 01, 2020 4:50 pm
by cnavarro
nageswaragunupudi wrote:The translation is perfect.
But when I tried to repeat more times, I started getting the same errors as pointed out above. I have a feeling that there is a limitation on the number of times we can use this API from a particular IP Address in a day.

When I changed my internet connection to a different provider, I could do the transalatios again.


Sí, efectivamente, ese ha sido siempre una limitación del acceso al Translate de Google, cuando no se accede a través de su API.
De todas formas, voy a modificar la function para que no dé error de ejecución, aunque devuelva la cadena en blanco.

Re: Error en FW_TransLang

PostPosted: Thu Jul 02, 2020 3:14 am
by nageswaragunupudi
Sí, efectivamente, ese ha sido siempre una limitación del acceso al Translate de Google, cuando no se accede a través de su API.
De todas formas, voy a modificar la function para que no dé error de ejecución, aunque devuelva la cadena en blanco.


More important, please advise how to get over the limit.

Re: Error en FW_TransLang

PostPosted: Thu Jul 02, 2020 10:31 am
by cnavarro
This is not possible without using the GTranslate API.

Re: Error en FW_TransLang

PostPosted: Thu Jul 02, 2020 10:35 am
by nageswaragunupudi
cnavarro wrote:This is not possible without using the GTranslate API.

Can you please guide us in the right direction please?