Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Aplicación multilingue

1 view
Skip to first unread message

Jordi

unread,
May 15, 2000, 3:00:00 AM5/15/00
to
Necesito crear una aplicación que tiene que estar en varios idiomas. Me
gustaria saber si en FoxPro se puede hacer de forma facil con alguna tabla
de recursos,... También me interesa saber como se podría hacer para poner
variables en el menú en vez de texto. Yo he modificado el código del
generador de menús, pero supongo que debe haber alguna forma más sencilla de
hacerlo.
Gracias de antemano por su colaboración

Victor Espina

unread,
May 15, 2000, 3:00:00 AM5/15/00
to
Revisate la página de Steven Black (www.stevenblack.com) El tiene un
producto llamado INTL o algo así que es, precisamente, lo que estás
buscando.

Victor

Jordi <jra...@tinet.fut.es> escribió en el mensaje de noticias
8fpof1$8bv$1...@talia.mad.ttd.net...

Juan Carlos Requena

unread,
May 16, 2000, 3:00:00 AM5/16/00
to
Yo lo que hago es que tengo todo el texto de la aplicacion en un fichero de
texto que cargo en una matriz al abrir el programa.
ej:
1;menu archivo
2;utilidades
3;informes
etc

luego en todos los sitios donde van mensages pongo el que le corresponde de
la matriz
en el menu seria esto: &PU_MSGX(1)
en los campos de los forms seria con un = ej:
=pu_msgx(182) en el caption.
Te paso la funcion para rellenar la matriz:
Set FUNCTION F1 TO ';'
fILINP=FOPEN('&path\MSG.TXT') &fichero donde esta la traduccion
Public DIMENSION pu_msgx(1)
Do WHILE .t.
area=FGETS(fILINP)
If FEOF(fILINP)
=FCLOSE(fILINP)
Exit
Endif
Store ALLTRIM(area) TO area
If LEN(area) = 0
Loop
Endif
If SUBSTR(area,1,1) = '*'
Loop
Endif
Store ATC(';',area) TO m.virg
If m.virg = 0
Loop
Endif
Store VAL(SUBSTR(area,1,m.virg-1)) TO m.x1
If m.x1 > ALEN(pu_msgx)
Dimension pu_msgx(m.x1)
Endif
Store SUBSTR(area,m.virg+1,LEN(area)-m.virg) TO pu_msgx(m.x1)
Enddo

saludos


"Jordi" <jra...@tinet.fut.es> escribió en el mensaje

news:8fpof1$8bv$1...@talia.mad.ttd.net...

Carlos Yohn Zubiria

unread,
May 16, 2000, 3:00:00 AM5/16/00
to
¿Lo has probado Victor?
Yo estoy a punto de desarrollar algo en mis clases para que sean
mutilenguaje y tengo dudas de si me serviría de algo el producto de Steven.
¿Cómo trabaja?
Por lo poco que he leído en su web, da la sensación de que no necesitas
indicarle los textos en el nuevo idioma, parece que el propio objeto lo va a
traducir, lo cual me parece imposible. Además yo necesito hacerlo en
Euskera.

--
Saludos,
-----------------------------
Carlos Yohn Zubiria
A.G.P.

Victor Espina <ves...@zeus-soft.com> escribió en el mensaje de noticias
O56Djiuv$GA.272@cppssbbsa03...


> Revisate la página de Steven Black (www.stevenblack.com) El tiene un
> producto llamado INTL o algo así que es, precisamente, lo que estás
> buscando.
>
> Victor
>

> Jordi <jra...@tinet.fut.es> escribió en el mensaje de noticias

Victor Espina

unread,
May 16, 2000, 3:00:00 AM5/16/00
to
No lo sé Carlos. Yo estoy en el mismo punto, aunque creo que aún me faltan
algunos meses para que me ocupe de esa parte de la aplicación. Yo también
estaba pensando desarrollar una tecnología propia, pero he escuchado buenos
comentarios sobre el producto de Steven Black y sus artículos sobre Design
Patterns me han impresionado y cambiado mi forma de ver los objetos y sus
funciones. Te recomiendo que te des una pasada por su sitio y leas los
documentos sobre DPs... son excelentes.

Volviendo al tema, estaba pensando visitar de nuevo la página a ver si
tienen un demo o algo así. Si lo haces tu primero, por favor hazme llegar
tus comentarios y conclusiones.

Victor

Carlos Yohn Zubiria <a...@kender.es> escribió en el mensaje de noticias
eMs7Q6wv$GA.332@cppssbbsa04...

José Constant

unread,
May 17, 2000, 3:00:00 AM5/17/00
to
Hola Victor y Carlos,

He usado INTL en tiempo de FPD y FPW 2.6 y me anduvo muy bien. En aquella
epoca se trataba de un add-in para GenScreenX et GenMenuX que cada vez que
encontraba una etiqueta la redondeaba por un función llamada I. "cEtiqueta"
=> I("cEtiqueta")

La función I() hacia lo siguiente:
buscar en STRINGS.DBF por la cadena "cEtiqueta"
si no existe, injertarla
si se esta el el idioma de base, retornar inmediatamente
si se esta en otro idioma, devolver el string correspondiente a la columna
del idioma.

Como bien se pueden imaginar no existe nada como una traducción automatica,
pero si me acuerdo bien, el STRINGS venia ya lleno de strings comunes para
inglès, francés, español y alemán.

El INTL actual debe seguir un camino parecido, salvo que GenScreenX se ha
reemplazado por un objeto (creo tipo linea) que se hecha sobre un form para
que sepa que se deben localizar las etiquetas.

Otra parte del Kit es el MSGSVC() que internacionaliza los mensajes de los
dialigos. Hay una versión pública de MSGSVC en el sitio de Steven.

Si no me equivoco, debo haber escrito un articulo en un FoxPress de 1995 al
respecto.

José

Victor Espina <ves...@zeus-soft.com> a écrit dans le message :
OtAq4p0v$GA.300@cppssbbsa05...

Santa Cruz Soluciones

unread,
May 17, 2000, 3:00:00 AM5/17/00
to
Yo lo que utilizo es una tabla etiquetas, con el siguiente formato

idioma C(2)

y a continuación tantos campos como textos a mostrar, p. ej. si quiero
mostrar el texto "código" hago un campo codigo C(30).

Luego añado un registro por idioma y en el programa de inicio de la
aplicación la abro y busco el idioma deseado.

Ejemplo de tabla

Idioma codigo nombre direccion << Campos de la tabla
00 Código Nombre Dirección
01 Code Name Adress

Luego en el init del formulario hago thisform.label1.caption =
alltrim(etiquetas.codigo) y ya está....

Espero que os sirva de ayuda...


Carlos Yohn Zubiria

unread,
May 17, 2000, 3:00:00 AM5/17/00
to
José,
¿Acierto si creo entenderte que entonces se trata de una utilidad para
tiempo de diseño?
Mi intención es desarrollar algo (que hasta donde lo he pensado es muy
sencillo) que actúe en tiempo de ejecución. Es decir que con el mismo
ejecutable el usuario pueda cambiar entre distintos idiomas sin mas
intervención que una simple llamada a un menú.
Creo que voy a seguir por mi camino.

--
Saludos,
-----------------------------
Carlos Yohn Zubiria
A.G.P.

José Constant <jo...@village.uunet.be> escribió en el mensaje de noticias
OWLt8i8v$GA.282@cppssbbsa03...

Carlos Yohn Zubiria

unread,
May 17, 2000, 3:00:00 AM5/17/00
to
¡¡pero esto puede dar como resultado infinidad de campos, y el límite es
255!!
Mi intención era crear una tabla con los siguientes campos:

idioma c(20)
objeto c(254)
texto c(254)

Por cada objeto (label, form, pageframe) y cada idioma un registro único con
su texto. En el 'init' del objeto busca en la tabla el idioma activado y su
nombre (incluyendo la ruta de objetos padre hasta el formulario) y ajusta la
propiedad 'caption'.

--
Saludos,
-----------------------------
Carlos Yohn Zubiria
A.G.P.

Santa Cruz Soluciones <s...@stacruz.com> escribió en el mensaje de noticias
ewN7fT9v$GA.259@cppssbbsa05...

Juan Carlos Requena

unread,
May 17, 2000, 3:00:00 AM5/17/00
to
Esoy de acuerdo con Carlos en que aqui el problema que tendras sera cuando
tu aplicacion crezca y necesites + de 255 textos, yo por ejemplo en alguna
aplicacion he llegado a los 2400 textos,
ten en cuenta que tienes que traducirlo todo, forms, reportes, mensajes de
programas, etc.
En cuanto a la tabla, no creeis que es mas comodo crear una tabla para cada
idioma (en mi caso un fichero de texto) y en el momento de instalar la
aplicacion poner el que corresponda, porque si lo pones todo junto tienes
que hacer busquedas o filtros para cada uno de los campos.
Otra de las ventajas que veo en hacerlo con una matriz como yo hago es que
incluso en tiempo de diseño puedes ver los textos originales del fichero
solo con cargar la matriz en memoria

saludos


"Santa Cruz Soluciones" <s...@stacruz.com> escribió en el mensaje

news:ewN7fT9v$GA.259@cppssbbsa05...

Victor Espina

unread,
May 17, 2000, 3:00:00 AM5/17/00
to
Creo que yo te sigo Carlos. Déjame investigar el INTL por mi cuenta y si lo
que dice Jose es cierto quizas podriamos ponernos de acuerdo para
desarrollarlo en conjunto.

Victor

Carlos Yohn Zubiria <a...@kender.es> escribió en el mensaje de noticias
OhWRQ3#v$GA.320@cppssbbsa04...


> José,
> ¿Acierto si creo entenderte que entonces se trata de una utilidad para
> tiempo de diseño?
> Mi intención es desarrollar algo (que hasta donde lo he pensado es muy
> sencillo) que actúe en tiempo de ejecución. Es decir que con el mismo
> ejecutable el usuario pueda cambiar entre distintos idiomas sin mas
> intervención que una simple llamada a un menú.
> Creo que voy a seguir por mi camino.
>

> --
> Saludos,
> -----------------------------
> Carlos Yohn Zubiria
> A.G.P.
>
>
>

> > > > --
> > > > Saludos,
> > > > -----------------------------
> > > > Carlos Yohn Zubiria
> > > > A.G.P.
> > > >
> > > >
> > > >

> > > > Victor Espina <ves...@zeus-soft.com> escribió en el mensaje de
> noticias

Carlos Yohn Zubiria

unread,
May 18, 2000, 3:00:00 AM5/18/00
to
'... es mas cómodo crear una tabla para cada idioma...'
No es mi opinión. La búsqueda hay que hacerla de cualquier manera a través
de un 'seek' y va a ser igualmente rápido con un idioma que con muchos.
Una sola tabla incluida en el proyecto no molesta nada ni ocupa memoria como
una matriz. Cargar una matriz de miles de elementos en memoria no me parece
muy optimizado.

--
Saludos,
-----------------------------
Carlos Yohn Zubiria
A.G.P.

Juan Carlos Requena <jrequenam....@nexo.es> escribió en el mensaje de
noticias OG4L$zAw$GA....@cppssbbsa02.microsoft.com...

Juan Carlos Requena

unread,
May 18, 2000, 3:00:00 AM5/18/00
to
Tienes razon en lo de la memoria, pero tambien te evitas los miles de seek.
En los reports como lo haras?
Yo la forma mas simple que vi fue la matriz, aunque si me convences de lo
contrario quiza cambie.

saludos

"Carlos Yohn Zubiria" <a...@kender.es> escribió en el mensaje
news:uw#PTEKw$GA.248@cppssbbsa05...

Carlos Yohn Zubiria

unread,
May 19, 2000, 3:00:00 AM5/19/00
to
Los 'miles de seek' ralentizan tu aplicación de esta manera:
.- Si el idioma no es el habitual
.- 1000 seeks en una tabla optimizada pueden tardar 0,02 segundos
.- En el momento de cargar el formulario.
La matriz ocupa memoria en todo momento
Supongamos un caso pequeño:
40 formularios, 20 informes
Esto supondría aproximadamente 3000 objetos por 2 propiedades al menos
(caption y tooltiptext). Mas todos los mensajes de 'wait' y de
'messagebox'...

Los informes se tratan a través de una función del objeto aplicación que
también accede a través de 'seek' De las misma manera los 'wait' y los
'messagebox'

No pretendo sentar cátedra ni mucho menos, pero me gusta mas la opción de la
tabla.

--
Saludos,
-----------------------------
Carlos Yohn Zubiria
A.G.P.

Juan Carlos Requena <jrequenam....@nexo.es> escribió en el mensaje de

noticias #hCrPSKw$GA....@cppssbbsa02.microsoft.com...

Victor Espina

unread,
May 19, 2000, 3:00:00 AM5/19/00
to
Carlos, estuve escarbando un poco en la página de Steven Black y me parece
que el INTL es exactamente lo que necesitamos. He aqui algunos pros y
contras que encontré:

PROS:
1) La traducción se hace en RUNTIME por lo que puedes cambiar el idioma "al
vuelo"
2) El producto viene con el código fuente! yo he visto la tecnica de
programación de Steven y es una oda a la simplicidad, por lo que
personalizar su código se me antoja una tarea atacable.

CONTRAS:
1) Es algo caro; alrededor de 500$
2) No tiene una versión demo así que no hay forma de evaluar si realmente
cumple con las necesidas particulares de una implantación

Me gustaría que echaras tu un vistazo por tu cuenta y luego me comentaras
tus impresiones.

Victor

Carlos Yohn Zubiria escribió en mensaje ...

Carlos Yohn Zubiria

unread,
May 22, 2000, 3:00:00 AM5/22/00
to
Victor,
Estoy absolutamente convencido de que el trabajo es muy pequeño para
desarrollar un sistema así, siempre y cuando todo el trabajo la hagamos
basado en clases genéricas nuestras.
El mayor trabajo será siempre rellenar de datos los textos de cada control y
eso (en Euskera o Catalán o Gallego...) no nos lo puede solucionar Steven.
Voy a dirigir mis esfuerzos en esa dirección. Cuando tenga algo terminado lo
pondré en común si queréis.

--
Saludos,
-----------------------------
Carlos Yohn Zubiria
A.G.P.

Victor Espina <ves...@olimpo-soft.com> escribió en el mensaje de noticias
e$sk#sbw$GA.173@cppssbbsa05...

Victor Espina

unread,
May 22, 2000, 3:00:00 AM5/22/00
to
Quizás tengas razón. En todo caso, siempre podemos comparar experiencias y
soluciones.

Victor

Carlos Yohn Zubiria <a...@kender.es> escribió en el mensaje de noticias
O#AxXB8w$GA.267@cppssbbsa04...

José Constant

unread,
May 23, 2000, 3:00:00 AM5/23/00
to
Me habia olvidado de este thread... Mira, como lo has descubierto, el INTL
hace la traducción en runtime. En 2.6 teniamos dos posibilidades, la de una
traducción al vuelo (runtime) y otra que era de construir un EXE
mono-idioma, pero en el idioma que querias: supongamos que desarolles en
español, el INTL te dejaba armar un EXE con todas las strings reemplazadas
en INGLES.

José

--
José Constant
Constant Software Systems
http://gallery.uunet.be/jose

Victor Espina <ves...@zeus-soft.com> a écrit dans le message :

Osdw0wFw$GA.193@cppssbbsa05...


> Creo que yo te sigo Carlos. Déjame investigar el INTL por mi cuenta y si
lo
> que dice Jose es cierto quizas podriamos ponernos de acuerdo para
> desarrollarlo en conjunto.
>

> Victor
>
> Carlos Yohn Zubiria <a...@kender.es> escribió en el mensaje de noticias

> OhWRQ3#v$GA.320@cppssbbsa04...
> > José,
> > ¿Acierto si creo entenderte que entonces se trata de una utilidad para
> > tiempo de diseño?
> > Mi intención es desarrollar algo (que hasta donde lo he pensado es muy
> > sencillo) que actúe en tiempo de ejecución. Es decir que con el mismo
> > ejecutable el usuario pueda cambiar entre distintos idiomas sin mas
> > intervención que una simple llamada a un menú.
> > Creo que voy a seguir por mi camino.
> >

> > --
> > Saludos,
> > -----------------------------
> > Carlos Yohn Zubiria
> > A.G.P.
> >
> >
> >

> > > > Victor
> > > >
> > > > Carlos Yohn Zubiria <a...@kender.es> escribió en el mensaje de
noticias

> > > > eMs7Q6wv$GA.332@cppssbbsa04...
> > > > > ¿Lo has probado Victor?
> > > > > Yo estoy a punto de desarrollar algo en mis clases para que sean
> > > > > mutilenguaje y tengo dudas de si me serviría de algo el producto
de
> > > > Steven.
> > > > > ¿Cómo trabaja?
> > > > > Por lo poco que he leído en su web, da la sensación de que no
> > necesitas
> > > > > indicarle los textos en el nuevo idioma, parece que el propio
objeto
> > lo
> > > va
> > > > a
> > > > > traducir, lo cual me parece imposible. Además yo necesito hacerlo
en
> > > > > Euskera.
> > > > >

> > > > > --
> > > > > Saludos,
> > > > > -----------------------------
> > > > > Carlos Yohn Zubiria
> > > > > A.G.P.
> > > > >
> > > > >
> > > > >

> > > > > Victor Espina <ves...@zeus-soft.com> escribió en el mensaje de
> > noticias

Victor Espina

unread,
May 23, 2000, 3:00:00 AM5/23/00
to
¿Tu lo has usado, José? ¿Podrías comentarme cuales han sido tus
experiencias? El proyecto que manejo actualmente pronto llegará a ese punto
y la verdad no me gustaría inventar de nuevo la rueda...

Victor

José Constant <jo...@village.uunet.be> escribió en el mensaje de noticias

el62eYIx$GA.253@cppssbbsa05...

José Constant

unread,
May 24, 2000, 3:00:00 AM5/24/00
to
Si Victor, lo he usado, pero en 94 o 95, en DOS 2.6 y funcionaba de
maravilla. No lo he practicado desde esta temporada. INTL sigue el lider
de facto para este tipo de productos. Habia otro que publico algo en
Foxtalk o FP Advisor, creo que se trata de Bob Grommes que fue editor de
FoxTalk antes de Whil Hentzen. Pero su producto ha tenido poco exito
comercial, según entiendo.

José

Victor Espina <ves...@zeus-soft.com> a écrit dans le message :

#FiLYxLx$GA.197@cppssbbsa05...

Victor Espina

unread,
May 24, 2000, 3:00:00 AM5/24/00
to
Gracias, José. Creo que mi único problema será convencer a los jefes de
comprar un producto de 500$ que no podemos probar antes...

Victor

José Constant <jo...@village.uunet.be> escribió en el mensaje de noticias

esCKgVWx$GA....@cppssbbsa02.microsoft.com...

José Constant

unread,
May 24, 2000, 3:00:00 AM5/24/00
to
Victor, lo puedes probar, ya que tiene una garantia de un mes. Si no te
sirve lo devuelve y te reembolsará.

José

"Victor Espina" <ves...@zeus-soft.com> a écrit dans le message news:
Of4d7kXx$GA.259@cppssbbsa05...

Victor Espina

unread,
May 24, 2000, 3:00:00 AM5/24/00
to
Excelente!! esto es lo que me faltaba para presentar la sugerencia. Gracias
José.

Victor

José Constant <jo...@village.uunet.be> escribió en el mensaje de noticias

eYajerbx$GA.208@cppssbbsa03...

0 new messages