pvbrowser manual
Back Content Forward

Traducción de idioma

El texto del menu de pvbrowser se puede cambiar a un idioma distinto mediante el archivo INI "~/.pvbrz". Si prefieres no usar caracteres latinos y usar por ejemplo caracteres chinos o arabicos, configura "codec=utf8 ## Unicode, 8-bit" en el archivo INI. Luego puedes usar estos caracteres en el archivo INI y en tu código fuente. Para usar UTF-8 en Linux debes definirlo en tu ~/.bashrc o en tu perfil de sistema.

Ejemplo:

export LC_ALL=de_DE.utf8
export LANG=de_DE.utf8
export LANGUAGE=de_DE.utf8

Puedes encontrar los locales instalados usando el siguiente comando:

locale -a

Para usar UTF-8 bajo Windows necesitas Visual Studio .Net. Allí debes incluir y configurar el locale.

<locale.h>
...
setlocale(LC_ALL,"de_DE.utf8"); 

Hasta el momento no esta probado ni implementado completamente por que sólo tenemos MSDEV 6.0. Pero es posible usarlo con un pvserver corriendo bajo Linux desde un cliente Windows.

Mientras corre pvbrowser puedes cambiar desde un idioma a otro, si lo programas adecuadamente en tu pvserver. Existe un "#define DEFAULT_LANGUAGE 0" en processviewserver.h. Ahora debes definir en ( pvapp.h):

#define GERMAN_LANGUAGE  DEFAULT_LANGUAGE+1
#define FRENCH_LANGUAGE  DEFAULT_LANGUAGE+2
#define SPANISH_LANGUAGE DEFAULT_LANGUAGE+3
#define ITALIAN_LANGUAGE DEFAULT_LANGUAGE+4
#define CHINESE_LANGUAGE DEFAULT_LANGUAGE+5
...

Ahora configura el parámetro de idioma en "PARAM *p a tu idioma (permie al usuario elegir su propio idioma)"

p->language = GERMAN_LANGUAGE; // the default is: p->language = DEFAULT_LANGUAGE;

Dentro de "slotInit" escribe y reemplaza todo el texto de todos los objetos al nuevo idioma.

static int slotInit(PARAM *p, DATA *d)
{
  if(p == NULL || d == NULL) return -1;
  switch(p->language)
  {
    case GERMAN_LANGUAGE:
      pvPrintf(p,idOfAnObject,"%s","Dies ist der deutsche Text");
      break;
    case FRENCH_LANGUAGE:
      break;
    case SPANISH_LANGUAGE:
      break;
    case ITALIAN_LANGUAGE:
      break;
    case CHINESE_LANGUAGE:
      break;
    default:
      // nothing todo, because generated_defineMask has already set the text
      break;
  }
  return 0;
}

Back Content Forward