Buenos días a todos,
Trabajo con una versión de C++ Builder un tanto antiogua. Es del año 2006.
Voy a comenzar una aplicación que va a tener que ser distribuida por todo el mundo, de modo que quiero que sea traducible a una gran cantidad de idiomas.
He creado una formulario base que incorporará lo necesario para que traduzca cualquier elemento visual que caiga sobre ella o sus descendientes. Para hacerlo, en el create del formulario he añadido el siguiente código, que lo que hace es patearse todos los elementos visuales y actuar sobre ellos en función de su clase, modificando los strings necesarios.
Aquí tenéis un ejemplo donde, en el caption de las labels, añado "lb_", y en el caption del título de las columnas de una grid, añado "cl_". La idea es ir añadiendo todos los casos necesarios a medida que avanzo por ellos. A la vez, en vez de añadir un prefijo (que es el ejemplo mostrado), buscaré una traducción concreta en una lista de traducciones que tendré en memoria.
Código:
void __fastcall TFFormBase::FormCreate(TObject *Sender)
{
TDBGrid* pDBGrid;
int i, j;
//Traducción de los componentes visuales
for (i = 0; i <= this->ComponentCount -1 ; i++) {
if (this->Components[i]->ClassNameIs("TLabel")){
((TLabel*)this->Components[i])->Caption =
"lb_" + ((TLabel*)this->Components[i])->Caption;
}
else if (this->Components[i]->ClassNameIs("TDBGrid")) {
pDBGrid = (TDBGrid*)(this->Components[i]);
for (j = 0; j <= pDBGrid->Columns->Count - 1; j++) {
pDBGrid->Columns->Items[j]->Title->Caption =
"cl_" + pDBGrid->Columns->Items[j]->Title->Caption;
}
}
}
}
Mi diccionario será una lista donde cada ítem estará identificador por un string (que asignaré en diseño) y tendrá un puntero a sus traducciones. Y muy posiblemente, alguna de sus traducciones tenga símbolos de alfabetos que requieren más de un byte para cada letra, y no sé cómo incorporar esas traducciones al código en C++.
Estoy seguro de que la idea funcionará, pero, a pesar de que ya he estado haciendo pruebas, no sé cómo puedo incorporar en la lista de traducciones símbolos similares al siguiente --> 支庁 <--.
No sé si me he explicado suficientemente bien. Si es necesario detallo todavía más las cosas.
¿Alguien tiene alguna idea?
Muchas gracias por adelantado.