Site Multi-Linguagem

FullDevr

Portugal@Home 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
 
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


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.
 
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
 
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.

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?
 
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?


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.
 
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.

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
 
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. :)
 
Back
Topo