Página 1 de 1

Aplicacao Multi Idioma

Enviado: 01 Jan 2024 14:51
por mauricioportela
Ola!

Um modelo para atuar em outros idiomas.

a principio, ele trabalho com as traduções das mensagens internas do sistema.

para os textos referente ao sistema, terei que criar uma base de dados com suas referencias.

Segue o exemplo:
* dá pra melhorar!

Código: Selecionar todos

#include "box.ch"
#include "hblang.ch"
#include "inkey.ch"
// -----------------------------------------------------------------------------
REQUEST HB_LANG_PT_BR   // Portugues Brasil *
REQUEST HB_LANG_PT      // Portugues
REQUEST HB_LANG_EN      // Ingles
REQUEST HB_LANG_ES      // Espanhol
// -----------------------------------------------------------------------------
REQUEST HB_CODEPAGE_PTISO   // Portugues *
REQUEST HB_CODEPAGE_PT850   // Portugues
REQUEST HB_CODEPAGE_EN      // Ingles
REQUEST HB_CODEPAGE_ES850   // Espanhol
// -----------------------------------------------------------------------------
FUNCTION Main()
    Set( _SET_DATEFORMAT, "dd/mm/yyyy" )
    // 1=Portugues Brasil / 2=Ingles / 3=Espanhol
    SelecionaIdioma(1)
    cCodigoPagina := hb_cdpSelect()
    cDia := CDOW(DATE())
    cMes := CMONTH(DATE())
    @ 00, 00, 24, 79 box B_SINGLE + space(1)
    @ 03, 50 SAY "Codigo de Pagina: " + cCodigoPagina
    @ 04, 50 SAY "-- Data --"
    @ 05, 50 SAY "Dia: " + cDia
    @ 06, 50 SAY "Mes: " + cMes
    INKEY(0)
    @ 23, 0
RETURN Nil

FUNCTION SelecionaIdioma(nIdioma)
    LOCAL aLista
    // 1=Portugues Brasil / 2=Ingles / 3=Espanhol
    IF (nIdioma == Nil)
        nIdioma := 1
    ENDIF
    @ 00, 00, 24, 79 BOX SPACE(9)
    @ 01, 02 SAY "Seleciona o Idioma para o Sistema:"
    @ 23, 02 SAY "Pressione ESC para Sair"
    aLista := {"Portugues","Ingles","Espanhol"}
    nItemIdioma := nIdioma // Padrao para o primeiro item.
    WHILE .T.
        @ 02, 02, 06, 12 GET nItemIdioma LISTBOX aLista
        READ
        DO CASE
            CASE nItemIdioma == 1
                hb_langSelect("pt")
                hb_cdpSelect("PT850")
            CASE nItemIdioma == 2
                hb_langSelect("en")
                hb_cdpSelect("EN")
            CASE nItemIdioma == 3
                hb_langSelect("es")
                hb_cdpSelect("ES850")
            OTHERWISE
                hb_langSelect("pt")
                hb_cdpSelect("PT850")
        ENDCASE
        cDia := CDOW(DATE())
        cMes := CMONTH(DATE())
        @ 10, 10, 11, 40 BOX SPACE(9)
        @ 10, 10 SAY "Dia: " + cDia
        @ 11, 10 SAY "Mes: " + cMes
        IF LASTKEY() == K_ESC
            EXIT
        ENDIF
    ENDDO
RETURN Nil

Aplicacao Multi Idioma

Enviado: 01 Jan 2024 19:38
por JoséQuintas
Não seria mais fácil usar o esquema multi-idioma do harbour/hbmk2 ?

Aplicacao Multi Idioma

Enviado: 01 Jan 2024 22:22
por mauricioportela
Olá, Quintas!

Boa noite!

Mas, o esquema que você menciona, não é esse?

A ideia é deixar o aplicativo, com as configurações devidas, ser usado nos três idiomas (ou até mais).

Por exemplo: quando houver mensagens, como erros e avisos, a estrutura deve externar no idioma configurado.

Quanto ao conteúdo do desenvolvedor (textos, botões, menus, etc.), estou pensando em usar arquivos .PO (Portable Object)

Att.
Mauricio Portela

Aplicacao Multi Idioma

Enviado: 03 Jan 2024 13:09
por JoséQuintas
Ok, é que a mensagem deu a impressão de que iria criar outra forma diferente do HBMK2.

Mesmo assim, pode verificar como o HBMK2 seleciona automaticamente o idioma.
Não sei dizer se ele faz isso também para o linux.