 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Mónica Cmdr

Registrado: 27 Sep 2002Mensajes: 136Ubicación: Pontevedra (España)
|
Publicado: Lun 06 Jun, 2011 9:58 am Asunto: Aplicación en ruso |
|
|
Buenas,
tengo que traducir la aplicación que tengo hecha a ruso (y a otros idiomas con caracteres que no son ASCII)
Tengo ya la traducción de los textos. Para los caracteres que no son ASCII, tengo su código UNICODE.
Así que lo que intento hacer es utilizar wchar_t en una Label que tengo de prueba, pero no se muestra en pantalla el carácter "raro", sino un "equivalente" en ASCII. Por ejemplo, si se trata de una "S" con acento, se muestra sin acento.
He estado buscando y creo que es necesario poner "_TCHAR maps to": wchar_t, pero soy incapaz de encontrar dónde está esa opción en mi Builder (uso Builder 6)
Muchas gracias! |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 06 Jun, 2011 10:55 am Asunto: |
|
|
Las únicas versiones de C++Builder que soportan Unicode son 2009/2010/XE.
Las anteriores solo lo soportan pero a nivel de API, o sea que los componentes que traen de fábrica no soportan Unicode.
Quizás te sirva algún paquete de terceros como este:
[TMS Unicode Component Pack]
http://www.tmssoftware.com/site/tmsuni.asp
| Mónica escribió: | He estado buscando y creo que es necesario poner "_TCHAR maps to": wchar_t, pero soy incapaz de encontrar dónde está esa opción en mi Builder (uso Builder 6)
|
No lo encuentras simplemente porque esa opción solo viene en las versiones que soportan Unicode como ya digo más arriba.. |
|
| Volver arriba |
|
 |
Mónica Cmdr

Registrado: 27 Sep 2002Mensajes: 136Ubicación: Pontevedra (España)
|
Publicado: Lun 06 Jun, 2011 11:57 am Asunto: |
|
|
Muchísimas gracias, Leo!
Ufff... ya podía yo darle vueltas al tema!!!
Echaré un vistazo al enlace que me mandas. Gracias de nuevo. |
|
| Volver arriba |
|
 |
Mónica Cmdr

Registrado: 27 Sep 2002Mensajes: 136Ubicación: Pontevedra (España)
|
Publicado: Mie 08 Jun, 2011 11:43 am Asunto: |
|
|
Leo, perdona que insista, pero es totalmente imposible traducir una aplicación a ruso o a polaco con el Builder 6?
Por ejemplo, los rusos no pueden diseñar aplicaciones en cirílico con el Builder 6?
Gracias de nuevo. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 08 Jun, 2011 1:41 pm Asunto: |
|
|
Supongo que si, pero sin Unicode, o sea cambiando la página de códigos de Windows y con una cantidad de caracteres limitada, aunque nunca lo he probado. Pero para lo que quieres hacer vas a necesitar una versión nueva con la VCL que soporte Unicode, o bien con los componentes de la web que te puse más arriba (salen por unos 30 euros creo).
Con la página de códigos cambiada el problema que tendrías es que tienes que crear varios ejecutables independientes y con bastante trabajo, además de que probablemente la cantidad de caracteres va a ser limitada... seguramente si tu ejecutas un programa hecho en un Windows ruso con el BCB6 en tu Windows en español lo que verías sería un montón de caracteres ????? o cuadraditos o algo así, ya que no se está usando Unicode..
Otra opción que tienes, es usar el API, o modificar los componentes que te interesen usando el API.... pero claro por los 30 euros que cuestan los componentes de arriba te sale más barato que el tiempo que habría que perder con todo ese trabajo.
Creo que esos mismos componentes, que antes pertenecían a otra empresa (creo que se llamaban TNT, me suena que TMS los compro) son los que uso Skype en su momento cuando aún Delphi no soportaba Unicode. |
|
| Volver arriba |
|
 |
Mónica Cmdr

Registrado: 27 Sep 2002Mensajes: 136Ubicación: Pontevedra (España)
|
Publicado: Mie 08 Jun, 2011 2:05 pm Asunto: |
|
|
Muchísimas gracias de nuevo, Leo.
Te comento cómo lo voy a intentar, a ver qué te parece.
Selecciono una fuente con Unicode para asegurarme de que incluye caracteres cirílicos, por ejemplo Lucida Sans Unicode
Selecciono el charset =RUSSIAN_CHARSET
Hago una "tabla de equivalencias" entre los caracteres de mi fuente en unicode y los correspondientes al charset cirílico de windows (lo voy mirando en el charmap)
En el código leo el número correspondiente al caracter en unicode, lo busco en "mi mapa" y lo asigno al texto del componente.
De momento he probado solo con un caracter y ha funcionado.
Pero aún así hay cosas que no entiendo:
-Si selecciono una fuente unicode y hago un char de ese código numérico, por qué no muestra en el texto del componente el caracter ruso?
Gracias de nuevo, Leo. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 08 Jun, 2011 2:18 pm Asunto: |
|
|
| Mónica escribió: | | Si selecciono una fuente unicode y hago un char de ese código numérico, por qué no muestra en el texto del componente el caracter ruso? |
Tienes varias pegas con el BCB6 para trabajar en Unicode, la que ya sabemos, que los componentes visuales no soportan Unicode, pero es que el IDE tampoco lo soporta, por lo que en el editor no puedes escribir directamente caracteres en Unicode con copiar y pegar como haces en las nuevas, esto solo sería visible si cambiaras la página de códigos a nivel del sistema, pero igualmente cuando vuelvas a cambiar la página a español y cargues los fuentes nuevamente veras todos los caracteres mal.
Por tanto al no poder poner los caracteres directamente habría que poner sus códigos, aquí un ejemplo usando el API para escribir en japonés Unicode:
- Ponemos el código siguiente en el evento OnPaint del Form:
| Código: | WideString str = L"\x30B9\x30DA\x30A4\x30F3";
RECT rect = {0, 0, 200, 100};
Canvas->Font->Name = "Arial";
Canvas->Font->Size = 48;
DrawTextW(Canvas->Handle, str.c_bstr(), -1, &rect, DT_LEFT); |
Por poder hacerlo complicándote un poco podrías, pero claro no tan fácil como usar esos componentes que te decía o una versión más actual.
Si no necesitas algo realmente complejo se me ocurre que interceptando las rutinas de pintado de los componentes y luego usando el API puedes pintar los textos, esto es fácil para componentes sencillos como etiquetas o componentes que solo visualizan texto no editable... sino la cosa se va complicando más.. |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|