1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Site Multi-Linguagem

Discussão em 'Web Development' iniciada por FullDevr, 19 de Novembro de 2008. (Respostas: 7; Visualizações: 920)

  1. FullDevr

    FullDevr [email protected] Member

    Estou a criar um site pessoal, e queria que ele tivesse mais que uma linguagem (português e inglês).
    Não sei qual a melhor maneira de o fazer.
    Primeiro não quero nada de intro's com bandeiras nem nada disso.

    Há alguns sites que de acordo com o IP mudam a linguagem. Gostava de aplicar isso no meu site.

    Devo escrever em php algo do género: if language=pt {Olá, bem-vindo, blabla} else {Hello and welcome, blabla}, ou devo usar base de dados? Ou uso vários ficheiros html cada um com a sua linguagem?

    Cumprimentos
     
  2. RicardoMoreira

    RicardoMoreira Power Member

    Eu por exemplo uso um xml para cada lingua, com todos os textos do site.
     
  3. spastikman

    spastikman Banido


    Nem uma coisa nem outra. Eu já fiz bastantes projectos relacionados com isso.

    O que eu aconselho é :

    Crias um ficheiro para cada linguagem. Podes usar XML ou outro formato para gravar. No meu caso, costumo gravar directamente num array.

    exemplo do pt.php :

    PHP:
    <?php

    $lang
    [0] = "Benvindo";
    $lang[1] = "Isto é um texto ... ";
    ...
    $lang[x] = "blablabla";


    ?>
    de igual forma poderias fazer um em ingles :

    exemplo do en.php
    PHP:
    <?php

    $lang
    [0] = "Welcome";
    $lang[1] = "This is a text ... ";
    ...
    $lang[x] = "blablabla";


    ?>


    Na tua página, a única coisa que tens de fazer é nos sítios onde irias ter o texto, colocas antes as variáveis .

    Exemplo :


    html

    ...<H1> <?=$lang[0];?> </H1>
    ...
    ..
    ..
    etc ...

    Agora a parte mais importante, como detectar a origem.

    Existem bases de dados com 99% dos IPs e as suas origens. Apenas tens de criar uma função no inicio da página que leia o IP e verifique a origem.

    Sabendo a origem é só fazer um include.


    Exemplo :

    Switch getCountry($_SERVER['REMOTE_ADDR']){

    'PT':
    include("./lang/PT.php");
    break;
    'EN':
    include("./lang/EN.php");
    break;
    ..
    ..
    ..

    default:
    include("./lang/EN.php");

    }



    Existem dezenas de formas diferentes. Esta é apenas uma delas.
     
  4. boas
    podes ter uma pag php com uma array com todas as palavras do site, para cada linguagem

    quando queres que uma pag fique em ing fazes include da pag que tem as palavras em ingles quando queres em pt fazes include da pt

    quanto ao ip mudar a lingua, penso que tem de se fazer trace ao ip para detectar a origem, mas nao sei como

    ja agora tens aqui um site muito bom sobre php: h**p://www.w3schools.com/php/default.asp

    cumps
     
  5. p3dro

    p3dro Power Member

    Também uso este sistema, porém trabalho directamente com constantes, algo do tipo:

    PHP:
    define("LNG_REGISTO","Registo");
    define("LNG_REGISTO_ACTUALIZAR","Actualizar ".LNG_REGISTO);
    define("LNG_REGISTO_ADICIONAR","Adicionar ".LNG_REGISTO);
    define("LNG_REGISTO_EDITAR","Editar ".LNG_REGISTO);
    define("LNG_REGISTO_REMOVER","Remover ".LNG_REGISTO);
    ....
    Por curiosidade minha, sabes(m) se em termos de performance/ memória, este esquema é "mais dispendioso" que usar só com arrays?
     
  6. spastikman

    spastikman Banido


    Em termos de performance usar constantes tal como estas a fazer é melhor, pois o espaço alocado em memória é fixo e inicializado logo no arranque :)

    Normalmente faço da maneira que disse pois sou preguiçoso e quanto menos escrever melhor :D

    Para pequenos projectos é completamente negligenciável. Contudo é sempre bom fazer as coisas da forma mais eficaz possível.
     
  7. FullDevr

    FullDevr [email protected] Member

    Obrigado a ti e a todos os que responderam. Acho que vou usar a tua maneira, porque me parece mais eficaz, no caso de por exemplo, precisar de mudar alguma coisa, só mudo num ficheiro e não em todos os ficheiros.
    Vou começar agora a aplicar isso no meu site e mais tarde digo alguma coisa.

    Cumprimentos
     
  8. Frango.

    Frango. Power Member

    Boas.

    Aproveitei este tópico para esclarecer uma dúvida, porque este script irá fazer-me falta também..

    Gostava de saber como integro isto no meu site:

    PHP:
    Switch getCountry($_SERVER['REMOTE_ADDR']){

    'PT':
    include(
    "lang/pt.php");
    break;
    'EN':
    include(
    "lang/en.php");
    break;
    ..
    ..
    ..

    default: 
    include(
    "lang/pt.php");

    }
    Abrindo uma nova chaveta (<? ?>).

    PS: Sei que esta dúvida é um bocado estúpida, mas como sou iniciante em php ainda não sei ao certo colocar um código de modo a que funcione. :)
     

Partilhar esta Página