Ver Mensaje Individual
  #1  
Antiguo 10-05-2013
rcuevas rcuevas is offline
Miembro
 
Registrado: nov 2006
Ubicación: Rosas - Gerona - España
Posts: 39
Reputación: 0
rcuevas Va por buen camino
Caracteres chinos en C++ Builder 2006

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.
Responder Con Cita