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 242 vezes
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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