/*
 * $Id$
 */

/*
 * Las siguientes partes son derechos adquiridos de sus autores individuales.
 * www - http://www.harbour-project.org
 *
 * Copyright 2000-2004 Alejandro de G rate <alex_degarate@hotmail.com>
 *    Documentaci¢n en Espa¤ol de: HB_LANGSELECT(), HB_LANGNAME()
 *       HB_LANGERRMSG(), HB_LANGMESSAGE(), HB_SETCODEPAGE(), HB_TRANSLATE()
 *
 * Copyright 2000 Luiz Rafael Culik <culik@sl.conex.net>
 *    Documentaci¢n en Ingl‚s de: HB_LANGSELECT(), HB_LANGNAME()
 *
 * Copyright 2004 Chen Kedem <niki@actcom.co.il>
 *    Documentaci¢n en Ingl‚s de: HB_LANGERRMSG(), HB_LANGMESSAGE(),
 *                       HB_SETCODEPAGE(), HB_TRANSLATE()
 *
 * Vea doc/license.txt por los t‚rminos de la licencia.
 *
 */

/*  $DOC$
 *  $FUNCNAME$
 *      HB_LANGERRMSG()
 *  $CATEGORY$
 *      Nacion
 *  $ONELINER$
 *      Descripción de un código de error usando el idioma actual
 *  $SYNTAX$
 *      HB_LANGERRMSG( <nCodigoError> ) --> cMensajeError
 *  $ARGUMENTS$
 *      <nCodigoError> es uno de los código de error genéricos (EG_...)
 *                     definidos en include/error.ch
 *  $RETURNS$
 *      HB_LANGERRMSG() retorna la cadena con el mensaje de error que
 *      representa al código <nCodigoError>.
 *  $DESCRIPTION$
 *      Esta función devuelve el mensaje de error asociado con un código de
 *      error usando el idioma actual seleccionado.
 *  $EXAMPLES$
 *      #include "error.ch"
 *
 *      REQUEST HB_LANG_ES
 *
 *      FUNCTION Main()
 *      // English: Argument error
 *      ? "English:", HB_LANGERRMSG( EG_ARG )
 *      HB_LANGSELECT( "ES" )
 *
 *      // Spanish: Error de argumento
 *      ? "Spanish:", HB_LANGERRMSG( EG_ARG )
 *      RETURN NIL
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      Esta función es una Extensión de Harbour
 *  $PLATFORMS$
 *      Todas
 *  $FILES$
 *      Las Librerías asociadas son: rtl, lang
 *      El archivo de cabecera es error.ch
 *  $SEEALSO$
 *      HB_LANGSELECT(),NATIONMSG()
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      HB_LANGMESSAGE()
 *  $CATEGORY$
 *      Nacion
 *  $ONELINER$
 *      Retorna una cadena de errores y mensajes internacionales
 *  $SYNTAX$
 *      HB_LANGMESSAGE( <nMensaje> ) --> cMensaje
 *  $ARGUMENTS$
 *      <nMensaje> es el código numérico del mensaje 
 *  $RETURNS$
 *      HB_LANGMESSAGE() devuelve el texto asociado con el código <nMensaje>.
 *  $DESCRIPTION$
 *      HB_LANGMESSAGE() es similar a NATIONMSG() pero permite el acceso a
 *      la lista completa de mensajes para un idioma determinado: nombres
 *      de Día y Mes, mensajes de error genéricos, errores internos, etc.
 *
 *      Utilice el archivo de cabecera hblang.ch para obtener una lista de
 *      los valores de base para <nMensaje>.
 *  $EXAMPLES$
 *      #include "hblang.ch"
 *
 *      REQUEST HB_LANG_ES
 *
 *      FUNCTION Main()
 *      // English: Monday
 *      ? "English:", HB_LANGMESSAGE( HB_LANG_ITEM_BASE_DAY + 1 )
 *      HB_LANGSELECT( "ES" )
 *
 *      // Spanish: Lunes
 *      ? "Spanish:", HB_LANGMESSAGE( HB_LANG_ITEM_BASE_DAY + 1 )
 *      RETURN NIL
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      Esta función es una Extensión de Harbour
 *  $PLATFORMS$
 *      Todas
 *  $FILES$
 *      Las Librerías asociadas son: rtl, lang
 *      El archivo de cabecera es hblang.ch
 *  $SEEALSO$
 *      HB_LANGSELECT(),NATIONMSG(),REQUEST
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      HB_LANGSELECT()
 *  $CATEGORY$
 *      Nacion
 *  $ONELINER$
 *      Selecciona un m¢dulo de mensajes espec¡fico a una nacionalidad.
 *  $SYNTAX$
 *      HB_LANGSELECT(<cNuevoLeng>)   --> cViejoLeng
 *  $ARGUMENTS$
 *      <cNuevoLeng>  El c¢digo de identificaci¢n del m¢dulo de idioma del
 *                    pa¡s.
 *      Los valores posibles para <cNuevoLeng> estan mostrados abajo, tal
 *      como est n definidos en la librer¡a de Lenguajes, ordenados por
 *      idioma.
 *
 *      <table>
 *      Idioma               C¢digo de P gina   <cNuevoLeng>
 *      Vasco                850                EU
 *      Catal n              850                CA
 *      Chino Simplificado   936                ZHGB
 *      Chino Tradicional    950                ZHB5
 *      Croata               852                HR852
 *      Croata               ISO-8859-2         HRISO
 *      Checo                852                CS852
 *      Checo                ISO-8859-2         CSISO
 *      Checo                KAM                CSKAM
 *      Checo                Windows-1250       CSWIN
 *      Ingl‚s               437                EN
 *      Esperanto            850                EO
 *      Franc‚s              850                FR
 *      Gallego              850                GL
 *      Alem n               850                DE
 *      Alem n ANSI          ANSI               DEWIN
 *      Griego               737                EL
 *      Griego ANSI          Windows-1253       ELWIN
 *      Hebreo               862                HE862
 *      Hebreo               Windows-1255       HEWIN
 *      Hungaro              852                HU852
 *      Hungaro              CWI-2              HUCWI
 *      Hungaro              Windows-1          HUWIN
 *      Island‚s             850                IS850
 *      Indonesio            437                ID
 *      Italiano             437                IT
 *      Coreano              949                KO
 *      Polaco               852                PL852
 *      Polaco               ISO-8859-1         PLISO
 *      Polaco               Mozowia            PLMAZ
 *      Polaco               Windows-1250       PLWIN
 *      Portugu‚s            850                PT
 *      Rumano               852                RO
 *      Ruso                 866                RU866
 *      Ruso                 KOI-8              RUKOI8
 *      Ruso                 Windows-1251       RUWIN
 *      Serbio               852                SR852
 *      Serbio               ISO-8859-2         SRISO
 *      Serbio               Windows-1251       SRWIN
 *      Eslovenio            437                SL437
 *      Eslovenio            852                SL852
 *      Eslovenio            ISO-8859-2         SLISO
 *      Eslovenio            Windows-1251       SLWIN
 *      Espa¤ol              850                ES
 *      Espa¤ol ANSI         ANSI               ESWIN
 *      </table>
 *  $RETURNS$
 *      <cViejoLeng>   El identificador anterior de Lenguaje
 *  $DESCRIPTION$
 *      Esta funci¢n establece un m¢dulo de lenguaje o idioma para las
 *      advertencias internas, mensajes NatMsg y errores internos que
 *      utilizan nombres de fechas, d¡as, meses, etc.
 *      Cuando una IDentificaci¢n de Lenguaje es elegida todos los mensajes
 *      son mostrados de acuerdo al actual idioma, hasta que otro sea
 *      seleccionado, ¢ el programa termine.
 *      La ID son dos letras que establecen la correspondencia con un idioma
 *      dado de acuerdo a una tabla.
 *
 *      Nota: La tabla que se muestra arriba puede no estar completa.
 *  $EXAMPLES$
 *      * El siguiente ejemplo cambia el m¢dulo de idioma por defecto, y
 *        luego muestra por pantalla la ID del m¢dulo de lenguaje, el nombre
 *        del d¡a de la semana y el mes en varios idiomas.
 *
 *        REQUEST HB_LANG_PT
 *        REQUEST HB_LANG_RO
 *        REQUEST HB_LANG_ES
 *        LOCAL nViejo
 *
 *        HB_LANGSELECT("PT")    // el idioma por defecto es ahora Portugu‚s
 *        ? "La nueva ID de idioma elegida es ", HB_LANGSELECT()   // PT
 *        ? CDOW( DATE() )
 *        ? CMONTH( DATE() )
 *
 *        nViejo := HB_LANGSELECT("RO")  // el idioma por defecto es Romano
 *        ? "La vieja ID de idioma elegida era ", nViejo            // PT
 *        ? "La nueva ID de idioma elegida es  ", HB_LANGSELECT()   // RO
 *        ? CDOW( DATE() )
 *        ? CMONTH( DATE() )
 *
 *        HB_LANGSELECT("ES")      // el idioma por defecto es ahora Espa¤ol
 *        ? "La nueva ID de idioma elegida es  ", HB_LANGSELECT()   // ES
 *        ? CDOW( DATE() )
 *        ? CMONTH( DATE() )
 *
 *  $TESTS$
 *      Vea ..\tests\langapi.prg  tests\langmsg.prg
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      Esta funci¢n es una Extensi¢n de Harbour.
 *  $PLATFORMS$
 *      Todas
 *  $FILES$
 *      La librer¡a asociada es rtl
 *  $SEEALSO$
 *      HB_LANGNAME(),HB_SETCODEPAGE(),NATIONMSG(),REQUEST
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      HB_LANGNAME()
 *  $CATEGORY$
 *      Nacion
 *  $ONELINER$
 *      Retorna el nombre del m¢dulo actual de lenguaje en uso.
 *  $SYNTAX$
 *      HB_LANGNAME()   --> cNombreLenguaje
 *  $ARGUMENTS$
 *      Ninguno.
 *  $RETURNS$
 *      HB_LANGNAME() retorna <cNombreLenguaje>, el nombre del idioma en uso
 *  $DESCRIPTION$
 *      Esta funci¢n describe el nombre del idioma ¢ lenguaje correspondiente
 *      al que existe por defecto ¢ ha sido establecido por HB_LANGSELECT().
 *  $EXAMPLES$
 *      * El siguiente ejemplo cambia el m¢dulo de idioma por defecto, y
 *      luego muestra por pantalla la ID del m¢dulo de lenguaje, el idioma
 *      asociado a esa ID. y el d¡a de la semana y el mes en varios idiomas
 *
 *        REQUEST HB_LANG_PT
 *        REQUEST HB_LANG_ES
 *
 *        HB_LANGSELECT("PT")    // el idioma por defecto es ahora Portugu‚s
 *        ? "El idioma actual es ", HB_LANGNAME()               // Portugu‚s
 *        ? "La nueva ID de idioma elegida es ", HB_LANGSELECT()   // RO
 *        ? CDOW( DATE() )
 *        ? CMONTH( DATE() )
 *
 *        HB_LANGSELECT("ES")     // el idioma por defecto es ahora Espa¤ol
 *        ? "El idioma actual es ", HB_LANGNAME()         // Espa¤ol
 *        ? CDOW( DATE() )
 *        ? CMONTH( DATE() )
 *  $TESTS$
 *      Vea ..\tests\langapi.prg  tests\langmsg.prg
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      Esta funci¢n es una Extensi¢n de Harbour.
 *  $PLATFORMS$
 *      Todas
 *  $FILES$
 *      La librer¡a asociada es lang
 *      Nota: el nombre de la extensi¢n de la librer¡a, puede cambiar con 
 *            el sistema operativo (.lib .o , etc.)
 *  $SEEALSO$
 *      HB_LANGSELECT(),NATIONMSG()
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      HB_SETCODEPAGE()
 *  $CATEGORY$
 *      Nacion
 *  $ONELINER$
 *      Selecciona el c¢digo de página activo por la ID del idioma
 *  $SYNTAX$
 *      HB_SETCODEPAGE( [<cNuevoLeng>] ) --> cViejoLeng
 *  $ARGUMENTS$
 *      <cNuevoLeng>  El c¢digo de identificaci¢n opcional del m¢dulo de
 *                    idioma del pa¡s.
 *      Los valores posibles para <cNuevoLeng> estan mostrados abajo, tal
 *      como est n definidos en la librer¡a de Lenguajes, ordenados por
 *      idioma (según doc. original en inglés).
 *
 *      <table>
 *      Idioma               C¢digo de P gina   <cNuevoLeng>
 *
 *      Ingl‚s               437                EN
 *      Alem n               850                DE
 *      Alem n ANSI          ANSI               DEWIN
 *      Griego               737                EL
 *      Griego ANSI          Windows-1253       ELWIN
 *      Hungaro              852                HU852
 *      Hungaro              Windows-1          HUWIN
 *      Polaco               852                PL852
 *      Polaco               ISO-8859-2         PLISO
 *      Polaco               Mozowia            PLMAZ
 *      Polaco               Windows-1250       PLWIN
 *      Portugu‚s            850                PT
 *      Portugu‚s            ISO-8859-1         PTISO
 *      Ruso                 866                RU866
 *      Ruso                 KOI-8              RUKOI8
 *      Ruso                 Windows-1251       RUWIN
 *      Serbio               Windows-1251       SRWIN
 *      Eslovenio            437                SL437
 *      Eslovenio            852                SL852
 *      Eslovenio            ISO-8859-2         SLISO
 *      Eslovenio            Windows-1250       SLWIN
 *      Espa¤ol              850                ES
 *      Espa¤ol ANSI         ANSI               ESWIN
 *      </table>
 *  $RETURNS$
 *      <cViejoLeng>   El identificador anterior de Lenguaje
 *  $DESCRIPTION$
 *      HB_SETCODEPAGE() establece el código de página activo usado por 
 *      Harbour para ordenar y comparar cadenas.  El código de página por 
 *      defecto usa el orden ASCII del idioma inglés (cLang == "EN").
 *
 *      NOTA: Usted debe solicitar a través del comando 'REQUEST' cada 
 *            módulo de código de página que Ud. intente usar.
 *      Por ejemplo: para usar el código de página Ruso: RU866, Ud. debe
 *      agregar lo siguiente a su programa:
 *           REQUEST HB_CODEPAGE_RU866
 *  $EXAMPLES$
 *      REQUEST HB_CODEPAGE_HU852
 *
 *      FUNCTION Main()
 *      LOCAL cTxt := CHR( 71 ) + " > " + CHR( 144 ) + " is"
 *
 *       ? HB_SETCODEPAGE()               // EN
 *       ? cTxt, CHR( 71 ) > CHR( 144 )   // G >  is .F.
 *
 *       ? HB_SETCODEPAGE( "HU852" )      // EN
 *       ? cTxt, CHR( 71 ) > CHR( 144 )   // G >  is .T.
 *
 *       ? HB_SETCODEPAGE( "EN" )         // HU852
 *       ? cTxt, CHR( 71 ) > CHR( 144 )   // G >  is .F.
 *      RETURN NIL
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      Esta funci¢n es una Extensi¢n de Harbour.
 *
 *      Esta funci¢n es solamente visible si source/rtl/cdpapi.c fué
 *      compilado sin la bandera: HB_CDP_SUPPORT_OFF
 *  $PLATFORMS$
 *      Todas
 *  $FILES$
 *      La librer¡as asociadas son rtl, codepage
 *  $SEEALSO$
 *      HB_LANGNAME(),HB_LANGSELECT(),HB_TRANSLATE(),NATIONMSG(),REQUEST
 *  $END$
 */

/*  $DOC$
 *  $FUNCNAME$
 *      HB_TRANSLATE()
 *  $CATEGORY$
 *      Nacion
 *  $ONELINER$
 *      Traduce una cadena de un código de página a otro.
 *  $SYNTAX$
 *      HB_TRANSLATE( <cTextoOrig>, [<cCodPagOrig>], [<cCodPagDest>] ) 
 *                  --> cTextoDest
 *  $ARGUMENTS$
 *      <cTextoOrig>  Es la cadena original a traducir.
 *
 *      <cCodPagOrig> Es la ID opcional del código de página de la cadena 
 *                    original. Si no es especificada, es usado el código de 
 *                    página por defecto.
 *
 *      <cCodPagDest> Es la ID opcional del código de página de la cadena de
 *                    destino. Si no es especificada, es usado el código de 
 *                    página por defecto.
 *  $RETURNS$
 *      HB_TRANSLATE() devuelve la cadena de destino convertida a partir de
 *      la cadena original.
 *  $DESCRIPTION$
 *      HB_TRANSLATE() trata de convertir la cadena original desde un código 
 *      de página a otro. Si el código de página no es reconocido, ó no es
 *      enlazado, el código de página por defecto, es usado.
 *      HB_TRANSLATE() es generalmente usado para convertir entre los códigos
 *      de página de DOS y Windows, para un mismo idioma.
 *
 *      NOTA: Si el código de página de origen y el código de página de 
 *            destino, no tienen el mismo número de caracteres, la traducción
 *            no puede ser realizada y la cadena de destino es una copia de 
 *            la cadena de origen.
 *
 *      NOTA: Usted debe solicitar a través del comando 'REQUEST' cada 
 *            módulo de código de página que Ud. intente usar.
 *      Por ejemplo: para usar el código de página Ruso: RU866, Ud. debe
 *      agregar lo siguiente a su programa:
 *           REQUEST HB_CODEPAGE_RU866
 *  $EXAMPLES$
 *      REQUEST HB_CODEPAGE_DE
 *      REQUEST HB_CODEPAGE_DEWIN
 *
 *      FUNCTION Main()
 *      LOCAL cTxt := "A" + CHR( 142 ) + "BC"
 *
 *      ? "Texto Alemán 850 :", cTxt
 *      ? "Texto Alemán ANSI:", HB_TRANSLATE( cTxt, "DE", "DEWIN" )
 *      RETURN NIL
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      Esta funci¢n es una Extensi¢n de Harbour.
 *
 *      Esta funci¢n es solamente visible si source/rtl/cdpapi.c fué
 *      compilado sin la bandera: HB_CDP_SUPPORT_OFF
 *  $PLATFORMS$
 *      Todas
 *  $FILES$
 *      La librer¡as asociadas son rtl, codepage
 *  $SEEALSO$
 *      HB_LANGSELECT(),HB_SETCODEPAGE(),NATIONMSG(),REQUEST
 *  $END$
 */



