Aplicacao Multi Idioma

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
mauricioportela
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 29 Jul 2016 04:22
Localização: Vitoria da Conquista/Bahia

Aplicacao Multi Idioma

Mensagem 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
Anexos
app_multi_idioma.prg
(8.36 KiB) Baixado 236 vezes
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Aplicacao Multi Idioma

Mensagem por JoséQuintas »

Não seria mais fácil usar o esquema multi-idioma do harbour/hbmk2 ?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
mauricioportela
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 29 Jul 2016 04:22
Localização: Vitoria da Conquista/Bahia

Aplicacao Multi Idioma

Mensagem 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
Anexos
harbour_idiomas.png
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Aplicacao Multi Idioma

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder