| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
limonaeg Cdt

Registrado: 17 Sep 2009Mensajes: 6
|
Publicado: Lun 02 Nov, 2009 2:32 pm Asunto: Alfabeto con caracteres "raros" |
|
|
Necesito que mi aplicación "hable" varios idiomas.
Para ello tengo un fichero .INI con las traducciones de todos los textos de mi aplicación a todos los idiomas.
Con idiomas con alfabetos "normales" (cuyos caracteres están en código ASCII) no hay problema. El problema surge con alfabetos como el cirílico o el polaco. En el fichero .INI tengo los códigos numéricos, así que lo he intentado con wchar_t, pero no aparece el caracter correctamente.
Por ejemplo, uno de los caracteres es "ś" (código numérico=347), pero aparece la s sin el "acento".
¿Qué estoy haciendo mal?
Muchas gracias y un saludo |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
limonaeg Cdt

Registrado: 17 Sep 2009Mensajes: 6
|
Publicado: Mar 03 Nov, 2009 12:33 pm Asunto: |
|
|
Disculpa mi ignorancia Ángel, pero qué es la página de códigos de Windows?
Si abro el Word y pulso ALT mientras tecleo el código 347, aparece el caracter correcto. Con lo cual entiendo que el código es correcto, no?
También probé poniendo en Project->Options->Language = Polaco, pero nada, sigue apareciendo lo mismo.
Gracias por la respuesta! |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 03 Nov, 2009 2:02 pm Asunto: |
|
|
| limonaeg escribió: | | Disculpa mi ignorancia Ángel, pero qué es la página de códigos de Windows? |
Si vas al panel del control del Windows y selecciones Configuración regional, aparece una lista con el idioma que está usando en ese momento el PC. AUnque ahí sólo veas un texto cada una de esas entradas está asociada a un código; a eso me refiero. No recuerdo los códigos, pero es fácil localizarlos.
| limonaeg escribió: | | Si abro el Word y pulso ALT mientras tecleo el código 347, aparece el caracter correcto. Con lo cual entiendo que el código es correcto, no? |
No te fíes, precisamente por lo que comento de la página de códigos. Ten en cuenta que Windows interpreta muchas cosas a su manera y no tiene por qué ser lo mismo que entienda Builder; en general, al menos hasta donde he visto, Builder se entiende con los 256 caracteres del código ASCII y no sé como entenderá los lenguajes "extendidos". _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
limonaeg Cdt

Registrado: 17 Sep 2009Mensajes: 6
|
Publicado: Mie 04 Nov, 2009 9:36 am Asunto: |
|
|
Gracias de nuevo, Ángel.
Pero he probado con un Windows polaco (con configuración en polaco) y sigo teniendo el mismo problema.
En el archivo de idioma, la cadena en polaco de la palabra "Cerrar" es así:
pl=Wyjście
Y debería aparecer así:
Wyjście
Hice un programilla de prueba, con un Edit, donde escribo la palabra en español, un label donde aparece la traducción a polaco y un botón para hacer la traducción.
Éste es el código:
| Código: |
AnsiString FicheroIdioma="Z:\\idioma_pol_3.INI";
TIniFile* Ini= new TIniFile (FicheroIdioma);
AnsiString espanol=Edit1->Text;
AnsiString ruso=Ini->ReadString(espanol, "pl", espanol);
wchar_t ruso_wide[400];
ruso.WideChar(ruso_wide, ruso.WideCharBufSize());
int caracter;
AnsiString ansi_caracter="";
wchar_t ruso_real[400];
int cont_real=0;
for (int i=0;i<ruso>Caption=ruso_real;
|
Al ir ejecutando el código paso a paso, me he fijado que ruso_real[3]=L'ś'
¿Por qué aparecen dos caracteres en lugar de aparecer solo 'ś'? |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 04 Nov, 2009 12:57 pm Asunto: |
|
|
| limonaeg escribió: | Al ir ejecutando el código paso a paso, me he fijado que ruso_real[3]=L'ś'
¿Por qué aparecen dos caracteres en lugar de aparecer solo 'ś'? |
¿Has probado a que imprima esa cadena ruso_real en lugar de "verla" con el debug? Tiene toda la pinta que el carácter de verdad es sólo ś. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
limonaeg Cdt

Registrado: 17 Sep 2009Mensajes: 6
|
Publicado: Vie 06 Nov, 2009 10:05 am Asunto: |
|
|
Gracias Ángel, sí he probado a que imprima la cadena ruso_real en un Label, pero nada, sale un caracter raro, que no tien nada que ver con ś.
Pensé que ésto sería fácil! |
|
| Volver arriba |
|
 |
|