|
View:
New views
10 Messages
—
Rating Filter:
Alert me
|
|
|
site Multi IdiomaOlá para todos,
Estou desenvolvendo um site multi idioma e gostaria de saber se esta é a melhor e mais pratica solução: <?php //multiIdioma.php session_start(); if(!isset($_POST["por"]) AND !isset($_POST["ing"]) AND !isset($_POST["esp"])){ $idioma = "por";} else{ if(isset($_POST["por"])){$idioma = "por";} if(isset($_POST["ing"])){$idioma = "ing";} if(isset($_POST["esp"])){$idioma = "esp";} } echo($idioma); if($idioma=="por"){$idi[por][1] = "eu te amo muito!...";} if($idioma=="ing"){$idi[ing][1] = "I love you so much!...";} if($idioma=="esp"){$idi[esp][1] = "Yo te amo mucho!...";} ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br"> <head> <title></title> </head> <body> <form action="<?php echo $PHP_SELF; ?>" method="post"> <input type="submit" name="por" value="portugues"> <input type="submit" name="ing" value="ingles"> <input type="submit" name="esp" value="espanhol"> </form> <h1><?php echo $idi[$idioma][1]; ?></h1> <div id=""><?php echo($idi[$idioma][1]); ?></div> </body> </html> Ou seja colocar os dados em um array bidimensional e ir ecoando pelas paginas. Agradeço sugestões e comentários obrigado Oliveira |
|
|
Re: site Multi IdiomaCara.. faz isso não pq é 120% mais lento que qualquer outro método, vai
por mim! hehehe Dê uma olhada em http://www.php.net/manual/pt_BR/function.gettext.php. Ou então faça como o wordpress faz (que não depende de configuração no servidor) Dá uma procurada por gettext.... Vou tentar explicar como funciona: 1- Vá em http://download.savannah.gnu.org/releases/php-gettext/ e baixe a versão mais atual (php-gettext-1.0.3.tar.gz <http://download.savannah.gnu.org/releases/php-gettext/php-gettext-1.0.3.tar.gz>) 2- Você cria o site inteiro, e o que vc quizer que apareça traduzido vc coloca <?php echo __('Teste'); ?> 3- Crie a função __() e dentro dela vc usa a classe de tradução gettext. Dica: use a função sprintf() do PHP para que vc possa colocar __("Bom dia %s", $nomeUsuario) 4- Depois vc instala um programa chamado POEdit. É nesse cara que vc vai traduzir as expressões. 5- No diretório bin da instalação do POEdit (é bin tbm no windows) vai ter um script chamado gettext.bat, vc vai executar ele passando uns parâmentros, e dentre os parametros vc vai indicar que a função __() é a que contem as expressões a serem traduzidas. Eu num lembro os parametros, tem que procurar. 6- este script .bat vai gerar um arquivo .pot, que nada mais é que um índice com as expressões a serem tradizidas. Se vc abrir com o notepad vc vai ver que ele indica quais arquivos e devidas linhas usam aquela expressão. 7- Com o POEdit, vc vai abrir o arquivo .pot e vai traduzindo, ao salvar (Ctrl+s) é gerado um arquivo .mo que é o que vc vai colocar no site e o que a classe gettext vai usar e indexar. Eu sei, é meio confuso esse lance de .pot, .mo e __() ou _() e por ai vai.. mas vc consegue! =] Se precisar de explicações mais esmiuçadas de algum ponto ali pode pedir! Usei essa técnica durante 2 anos mais ou menos e nunca me deixou na mão! Esse projeto http://www.ilhadotabuleiro.com.br/anunciantes/ eu usei essa técnica. A tradução não fui eu quem fez, foi um professor lá... Dê uma olhada, teste! Vlw???? zipado50 escreveu: > > Olá para todos, > > Estou desenvolvendo um site multi idioma e gostaria de saber se esta é > a melhor e mais pratica solução: > > <?php > //multiIdioma.php > session_start(); > > if(!isset($_POST["por"]) AND !isset($_POST["ing"]) AND > !isset($_POST["esp"])){ > $idioma = "por";} > else{ > if(isset($_POST["por"])){$idioma = "por";} > if(isset($_POST["ing"])){$idioma = "ing";} > if(isset($_POST["esp"])){$idioma = "esp";} > } > > echo($idioma); > > if($idioma=="por"){$idi[por][1] = "eu te amo muito!...";} > if($idioma=="ing"){$idi[ing][1] = "I love you so much!...";} > if($idioma=="esp"){$idi[esp][1] = "Yo te amo mucho!...";} > > ?> > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd > <http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>"> > <html xmlns="http://www.w3.org/1999/xhtml > <http://www.w3.org/1999/xhtml>" xml:lang="pt-br" lang="pt-br"> > <head> > <title></title> > </head> > <body> > <form action="<?php echo $PHP_SELF; ?>" method="post"> > <input type="submit" name="por" value="portugues"> > <input type="submit" name="ing" value="ingles"> > <input type="submit" name="esp" value="espanhol"> > </form> > > <h1><?php echo $idi[$idioma][1]; ?></h1> > <div id=""><?php echo($idi[$idioma][1]); ?></div> > </body> > </html> > > Ou seja colocar os dados em um array bidimensional e ir ecoando pelas > paginas. > > Agradeço sugestões e comentários > > obrigado > Oliveira > > |
|
|
Re: site Multi Idiomausa uma classe de internacionalização irmãozinho com XML.
Uasden 2008/7/20 zipado50 <zipado50@...>: > Olá para todos, > > Estou desenvolvendo um site multi idioma e gostaria de saber se esta é > a melhor e mais pratica solução: > > <?php > //multiIdioma.php > session_start(); > > if(!isset($_POST["por"]) AND !isset($_POST["ing"]) AND > !isset($_POST["esp"])){ > $idioma = "por";} > else{ > if(isset($_POST["por"])){$idioma = "por";} > if(isset($_POST["ing"])){$idioma = "ing";} > if(isset($_POST["esp"])){$idioma = "esp";} > } > > echo($idioma); > > if($idioma=="por"){$idi[por][1] = "eu te amo muito!...";} > if($idioma=="ing"){$idi[ing][1] = "I love you so much!...";} > if($idioma=="esp"){$idi[esp][1] = "Yo te amo mucho!...";} > > ?> > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> > <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br"> > <head> > <title></title> > </head> > <body> > <form action="<?php echo $PHP_SELF; ?>" method="post"> > <input type="submit" name="por" value="portugues"> > <input type="submit" name="ing" value="ingles"> > <input type="submit" name="esp" value="espanhol"> > </form> > > <h1><?php echo $idi[$idioma][1]; ?></h1> > <div id=""><?php echo($idi[$idioma][1]); ?></div> > </body> > </html> > > Ou seja colocar os dados em um array bidimensional e ir ecoando pelas > paginas. > > Agradeço sugestões e comentários > > obrigado > Oliveira > > > -- Uasden Ferreira Analista de Sistemas www.bladop.com.br [As partes desta mensagem que não continham texto foram removidas] |
|
|
Re: site Multi IdiomaAcho que você pode usar constantes em php para isso.
É simples, vc define um arquivo com todos os textos que devem ser exibidos na tela em forma de contantes. De acordo com o idioma escolhido em sessão, você carrega o arquivo de constantes apropriado. É melhor assim pois facilita a inclusão de outros idiomas caso queira. <?php if ($_SESSION["idiomaDefault"] == "PT_BR") { include_once('arquivo_pt_br.inc.php'); } elseif ($_SESSION["idiomaDefault"] == "EN) { include_once('arquivo_en.inc.php'); } Os arquivos de constantes seria algo assim: <?php //arquivo_pt_br.inc.php define(_EU_TE_AMO,'Eu te amo'); ?> <?php //arquivo_en.inc.php define(_EU_TE_AMO,'I love you'); ?> para sair com o texto correto, use, depois de incluir o arquivo de constante correto: <?php print(_EU_TE_AMO); ?> Espero ter te ajudado. Um abraço! ------------------------------------------------- Alexandre de Andrade Barbosa alexandre@... <mailto:alexandre@...> http://www.andradebarbosa.com http://www.gestordeti.com.br http://www.desenvolvedorphp.com.br http://www.prevencao.odo.br Só sei que nada sei! ------------------------------------------------- zipado50 escreveu: > > Olá para todos, > > Estou desenvolvendo um site multi idioma e gostaria de saber se esta é > a melhor e mais pratica solução: > > <?php > //multiIdioma.php > session_start(); > > if(!isset($_POST["por"]) AND !isset($_POST["ing"]) AND > !isset($_POST["esp"])){ > $idioma = "por";} > else{ > if(isset($_POST["por"])){$idioma = "por";} > if(isset($_POST["ing"])){$idioma = "ing";} > if(isset($_POST["esp"])){$idioma = "esp";} > } > > echo($idioma); > > if($idioma=="por"){$idi[por][1] = "eu te amo muito!...";} > if($idioma=="ing"){$idi[ing][1] = "I love you so much!...";} > if($idioma=="esp"){$idi[esp][1] = "Yo te amo mucho!...";} > > ?> > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd > <http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>"> > <html xmlns="http://www.w3.org/1999/xhtml > <http://www.w3.org/1999/xhtml>" xml:lang="pt-br" lang="pt-br"> > <head> > <title></title> > </head> > <body> > <form action="<?php echo $PHP_SELF; ?>" method="post"> > <input type="submit" name="por" value="portugues"> > <input type="submit" name="ing" value="ingles"> > <input type="submit" name="esp" value="espanhol"> > </form> > > <h1><?php echo $idi[$idioma][1]; ?></h1> > <div id=""><?php echo($idi[$idioma][1]); ?></div> > </body> > </html> > > Ou seja colocar os dados em um array bidimensional e ir ecoando pelas > paginas. > > Agradeço sugestões e comentários > > obrigado > Oliveira > > [As partes desta mensagem que não continham texto foram removidas] |
|
|
Re: site Multi IdiomaCara.. segue a mesma idéia do array que ele fez, mas o array ainda é
mais rápido que a constante. Não em questão de acesso à informação desejada, mas sim que a constante utiliza mais recursos de servidor para poder manter ela como readonly e tals... Sinceramente, sem querer me gambar, a solução do gettext é a usada nos softwares OpenSource e o melhor é que não precisa ser vc para traduzir, basta o programa (POEdit) que um professor qualquer consegue traduzir. Clao que o pojeto é seu, vc faz o que bem entender... Mas se vc pensa em performance e comodidade caso tenha alguma outra implementação futura com certeza o lance dos POT e MO te darão uma resposta bem melhor. Outra desvantagem do tipo de tradução indexada na linguagem é a possibilidade de repetição da expressão, com o gettext ele elimina expressões iguais. Isso sem falar que vc vai ter o seguinte no seu codigo: <h1><?php echo __("Título do site"); ?></h1> e não: <h1><?php echo $traducao[$idioma_selecionado]["Título do site"]; ?></h1> ou <h1><?php echo TITULO_SITE; ?></h1> O lance da cnstante vc ainda pode passar a usar nomes de constantes que não sejam o texto real, por exemplo: define("TITULO_SITE", "Título do site") -> aqui tudo bem define("TITULO_SITE", "Organizações Tabajara") -> aqui vc já não tem no nome da constante o valor dela Cara.. eu poderia ficar aqui listando vários outros motivos do porque usar o gettext mas vou ficar muito chato hehehe No começo é um pouco difícil mesmo, mas depois com o tempo vc pega a manha e o legal é que fica nos padrões dos softwares OpenSource, facilita se alguém se encarna em traduzir o seu site pra vc! aew vc manda o arquivo .pot e o cara te devolve o .mo, sem percisar programar uma linha sequer vc disponibiliza o idioma no seu site! =] Vai por mim bicho, fizemos todo um estudo onde eu trabalhava para saber qual a melhor forma e decidimos por esta! =] Vlw mano, qualquer dúvida pergunta aew! Alexandre de Andrade Barbosa escreveu: > > Acho que você pode usar constantes em php para isso. > > É simples, vc define um arquivo com todos os textos que devem ser > exibidos na tela em forma de contantes. De acordo com o idioma escolhido > em sessão, você carrega o arquivo de constantes apropriado. > > É melhor assim pois facilita a inclusão de outros idiomas caso queira. > > <?php > > if ($_SESSION["idiomaDefault"] == "PT_BR") > { > include_once('arquivo_pt_br.inc.php'); > } > elseif ($_SESSION["idiomaDefault"] == "EN) > { > include_once('arquivo_en.inc.php'); > } > > Os arquivos de constantes seria algo assim: > > <?php > //arquivo_pt_br.inc.php > > define(_EU_TE_AMO,'Eu te amo'); > > ?> > > <?php > //arquivo_en.inc.php > > define(_EU_TE_AMO,'I love you'); > > ?> > > para sair com o texto correto, use, depois de incluir o arquivo de > constante correto: > > <?php print(_EU_TE_AMO); ?> > > Espero ter te ajudado. > > Um abraço! > ------------------------------------------------- > Alexandre de Andrade Barbosa > alexandre@... <mailto:alexandre%40andradebarbosa.com> > <mailto:alexandre@... > <mailto:alexandre%40andradebarbosa.com>> > http://www.andradebarbosa.com <http://www.andradebarbosa.com> > http://www.gestordeti.com.br <http://www.gestordeti.com.br> > http://www.desenvolvedorphp.com.br <http://www.desenvolvedorphp.com.br> > http://www.prevencao.odo.br <http://www.prevencao.odo.br> > Só sei que nada sei! > ------------------------------------------------- > > zipado50 escreveu: > > > > Olá para todos, > > > > Estou desenvolvendo um site multi idioma e gostaria de saber se esta é > > a melhor e mais pratica solução: > > > > <?php > > //multiIdioma.php > > session_start(); > > > > if(!isset($_POST["por"]) AND !isset($_POST["ing"]) AND > > !isset($_POST["esp"])){ > > $idioma = "por";} > > else{ > > if(isset($_POST["por"])){$idioma = "por";} > > if(isset($_POST["ing"])){$idioma = "ing";} > > if(isset($_POST["esp"])){$idioma = "esp";} > > } > > > > echo($idioma); > > > > if($idioma=="por"){$idi[por][1] = "eu te amo muito!...";} > > if($idioma=="ing"){$idi[ing][1] = "I love you so much!...";} > > if($idioma=="esp"){$idi[esp][1] = "Yo te amo mucho!...";} > > > > ?> > > > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" > > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd > <http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd> > > <http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd > <http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>>"> > > <html xmlns="http://www.w3.org/1999/xhtml > <http://www.w3.org/1999/xhtml> > > <http://www.w3.org/1999/xhtml <http://www.w3.org/1999/xhtml>>" > xml:lang="pt-br" lang="pt-br"> > > <head> > > <title></title> > > </head> > > <body> > > <form action="<?php echo $PHP_SELF; ?>" method="post"> > > <input type="submit" name="por" value="portugues"> > > <input type="submit" name="ing" value="ingles"> > > <input type="submit" name="esp" value="espanhol"> > > </form> > > > > <h1><?php echo $idi[$idioma][1]; ?></h1> > > <div id=""><?php echo($idi[$idioma][1]); ?></div> > > </body> > > </html> > > > > Ou seja colocar os dados em um array bidimensional e ir ecoando pelas > > paginas. > > > > Agradeço sugestões e comentários > > > > obrigado > > Oliveira > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > |
|
|
Re: site Multi IdiomaOlá alexandre;
Obrigado pela sugestão, é uma solução interessante é vai me ser muito útil. obrigado Zipado50 --- Em seg, 21/7/08, Alexandre de Andrade Barbosa <alexandre@...> escreveu: De: Alexandre de Andrade Barbosa <alexandre@...> Assunto: Re: [php-pt] site Multi Idioma Para: php-pt@... Data: Segunda-feira, 21 de Julho de 2008, 13:14 Acho que você pode usar constantes em php para isso. É simples, vc define um arquivo com todos os textos que devem ser exibidos na tela em forma de contantes. De acordo com o idioma escolhido em sessão, você carrega o arquivo de constantes apropriado. É melhor assim pois facilita a inclusão de outros idiomas caso queira. <?php if ($_SESSION[" idiomaDefault" ] == "PT_BR") { include_once( 'arquivo_ pt_br.inc. php'); } elseif ($_SESSION[" idiomaDefault" ] == "EN) { include_once( 'arquivo_ en.inc.php' ); } Os arquivos de constantes seria algo assim: <?php //arquivo_pt_ br.inc.php define(_EU_TE_ AMO,'Eu te amo'); ?> <?php //arquivo_en. inc.php define(_EU_TE_ AMO,'I love you'); ?> para sair com o texto correto, use, depois de incluir o arquivo de constante correto: <?php print(_EU_TE_ AMO); ?> Espero ter te ajudado. Um abraço! ------------ --------- --------- --------- --------- - Alexandre de Andrade Barbosa alexandre@andradeba rbosa.com <mailto:alexandre@andradeba rbosa.com> http://www.andradeb arbosa.com http://www.gestorde ti.com.br http://www.desenvol vedorphp. com.br http://www.prevenca o.odo.br Só sei que nada sei! ------------ --------- --------- --------- --------- - zipado50 escreveu: > > Olá para todos, > > Estou desenvolvendo um site multi idioma e gostaria de saber se esta é > a melhor e mais pratica solução: > > <?php > //multiIdioma. php > session_start( ); > > if(!isset($_ POST["por" ]) AND !isset($_POST[ "ing"]) AND > !isset($_POST[ "esp"])){ > $idioma = "por";} > else{ > if(isset($_POST[ "por"])){ $idioma = "por";} > if(isset($_POST[ "ing"])){ $idioma = "ing";} > if(isset($_POST[ "esp"])){ $idioma = "esp";} > } > > echo($idioma) ; > > if($idioma== "por"){$idi[ por][1] = "eu te amo muito!...";} > if($idioma== "ing"){$idi[ ing][1] = "I love you so much!...";} > if($idioma== "esp"){$idi[ esp][1] = "Yo te amo mucho!...";} > > ?> > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" > "http://www.w3. org/TR/xhtml1/ DTD/xhtml1- strict.dtd > <http://www.w3. org/TR/xhtml1/ DTD/xhtml1- strict.dtd>"> > <html xmlns="http://www.w3. org/1999/ xhtml > <http://www.w3. org/1999/ xhtml>" xml:lang="pt- br" lang="pt-br" > > <head> > <title></title> > </head> > <body> > <form action="<?php echo $PHP_SELF; ?>" method="post" > > <input type="submit" name="por" value="portugues" > > <input type="submit" name="ing" value="ingles" > > <input type="submit" name="esp" value="espanhol" > > </form> > > <h1><?php echo $idi[$idioma] [1]; ?></h1> > <div id=""><?php echo($idi[$idioma] [1]); ?></div> > </body> > </html> > > Ou seja colocar os dados em um array bidimensional e ir ecoando pelas > paginas. > > Agradeço sugestões e comentários > > obrigado > Oliveira > > [As partes desta mensagem que não continham texto foram removidas] Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses [As partes desta mensagem que não continham texto foram removidas] |
|
|
Re: site Multi IdiomaOlá Uasden,
Obrigado pela contribuição, vc conhece alguma que vc recomenda? Zipado50 --- Em seg, 21/7/08, Uasden Ferreira <uasden@...> escreveu: De: Uasden Ferreira <uasden@...> Assunto: Re: [php-pt] site Multi Idioma Para: php-pt@... Data: Segunda-feira, 21 de Julho de 2008, 9:53 usa uma classe de internacionalizaçã o irmãozinho com XML. Uasden 2008/7/20 zipado50 <zipado50@yahoo. com.br>: > Olá para todos, > > Estou desenvolvendo um site multi idioma e gostaria de saber se esta é > a melhor e mais pratica solução: > > <?php > //multiIdioma. php > session_start( ); > > if(!isset($_ POST["por" ]) AND !isset($_POST[ "ing"]) AND > !isset($_POST[ "esp"])){ > $idioma = "por";} > else{ > if(isset($_POST[ "por"])){ $idioma = "por";} > if(isset($_POST[ "ing"])){ $idioma = "ing";} > if(isset($_POST[ "esp"])){ $idioma = "esp";} > } > > echo($idioma) ; > > if($idioma== "por"){$idi[ por][1] = "eu te amo muito!...";} > if($idioma== "ing"){$idi[ ing][1] = "I love you so much!...";} > if($idioma== "esp"){$idi[ esp][1] = "Yo te amo mucho!...";} > > ?> > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" > "http://www.w3. org/TR/xhtml1/ DTD/xhtml1- strict.dtd"> > <html xmlns="http://www.w3. org/1999/ xhtml" xml:lang="pt- br" lang="pt-br" > > <head> > <title></title> > </head> > <body> > <form action="<?php echo $PHP_SELF; ?>" method="post" > > <input type="submit" name="por" value="portugues" > > <input type="submit" name="ing" value="ingles" > > <input type="submit" name="esp" value="espanhol" > > </form> > > <h1><?php echo $idi[$idioma] [1]; ?></h1> > <div id=""><?php echo($idi[$idioma] [1]); ?></div> > </body> > </html> > > Ou seja colocar os dados em um array bidimensional e ir ecoando pelas > paginas. > > Agradeço sugestões e comentários > > obrigado > Oliveira > > > -- Uasden Ferreira Analista de Sistemas www.bladop.com. br [As partes desta mensagem que não continham texto foram removidas] Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses [As partes desta mensagem que não continham texto foram removidas] |
|
|
Re: site Multi IdiomaOlá WebAdmin,
Obrigado pela sugestão, vou estudar esta opção sim e certamente é uma contribuição interessante, mas entrei no site exemplo http://www.ilhadota buleiro.com. br/anunciantes/ e lá não está funcionando só aparece em português, quando vc clica na opção inglês o listbox muda pra inglês mas o texto permanece em português. Obrigado Zipado50 --- Em seg, 21/7/08, WebAdmin <webadmin@...> escreveu: De: WebAdmin <webadmin@...> Assunto: Re: [php-pt] site Multi Idioma Para: php-pt@... Data: Segunda-feira, 21 de Julho de 2008, 8:52 Cara.. faz isso não pq é 120% mais lento que qualquer outro método, vai por mim! hehehe Dê uma olhada em http://www.php. net/manual/ pt_BR/function. gettext.php. Ou então faça como o wordpress faz (que não depende de configuração no servidor) Dá uma procurada por gettext.... Vou tentar explicar como funciona: 1- Vá em http://download. savannah. gnu.org/releases /php-gettext/ e baixe a versão mais atual (php-gettext- 1.0.3.tar. gz <http://download. savannah. gnu.org/releases /php-gettext/ php-gettext- 1.0.3.tar. gz>) 2- Você cria o site inteiro, e o que vc quizer que apareça traduzido vc coloca <?php echo __('Teste'); ?> 3- Crie a função __() e dentro dela vc usa a classe de tradução gettext. Dica: use a função sprintf() do PHP para que vc possa colocar __("Bom dia %s", $nomeUsuario) 4- Depois vc instala um programa chamado POEdit. É nesse cara que vc vai traduzir as expressões. 5- No diretório bin da instalação do POEdit (é bin tbm no windows) vai ter um script chamado gettext.bat, vc vai executar ele passando uns parâmentros, e dentre os parametros vc vai indicar que a função __() é a que contem as expressões a serem traduzidas. Eu num lembro os parametros, tem que procurar. 6- este script .bat vai gerar um arquivo .pot, que nada mais é que um índice com as expressões a serem tradizidas. Se vc abrir com o notepad vc vai ver que ele indica quais arquivos e devidas linhas usam aquela expressão. 7- Com o POEdit, vc vai abrir o arquivo .pot e vai traduzindo, ao salvar (Ctrl+s) é gerado um arquivo .mo que é o que vc vai colocar no site e o que a classe gettext vai usar e indexar. Eu sei, é meio confuso esse lance de .pot, .mo e __() ou _() e por ai vai.. mas vc consegue! =] Se precisar de explicações mais esmiuçadas de algum ponto ali pode pedir! Usei essa técnica durante 2 anos mais ou menos e nunca me deixou na mão! Esse projeto http://www.ilhadota buleiro.com. br/anunciantes/ eu usei essa técnica. A tradução não fui eu quem fez, foi um professor lá... Dê uma olhada, teste! Vlw???? zipado50 escreveu: > > Olá para todos, > > Estou desenvolvendo um site multi idioma e gostaria de saber se esta é > a melhor e mais pratica solução: > > <?php > //multiIdioma. php > session_start( ); > > if(!isset($_ POST["por" ]) AND !isset($_POST[ "ing"]) AND > !isset($_POST[ "esp"])){ > $idioma = "por";} > else{ > if(isset($_POST[ "por"])){ $idioma = "por";} > if(isset($_POST[ "ing"])){ $idioma = "ing";} > if(isset($_POST[ "esp"])){ $idioma = "esp";} > } > > echo($idioma) ; > > if($idioma== "por"){$idi[ por][1] = "eu te amo muito!...";} > if($idioma== "ing"){$idi[ ing][1] = "I love you so much!...";} > if($idioma== "esp"){$idi[ esp][1] = "Yo te amo mucho!...";} > > ?> > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" > "http://www.w3. org/TR/xhtml1/ DTD/xhtml1- strict.dtd > <http://www.w3. org/TR/xhtml1/ DTD/xhtml1- strict.dtd>"> > <html xmlns="http://www.w3. org/1999/ xhtml > <http://www.w3. org/1999/ xhtml>" xml:lang="pt- br" lang="pt-br" > > <head> > <title></title> > </head> > <body> > <form action="<?php echo $PHP_SELF; ?>" method="post" > > <input type="submit" name="por" value="portugues" > > <input type="submit" name="ing" value="ingles" > > <input type="submit" name="esp" value="espanhol" > > </form> > > <h1><?php echo $idi[$idioma] [1]; ?></h1> > <div id=""><?php echo($idi[$idioma] [1]); ?></div> > </body> > </html> > > Ou seja colocar os dados em um array bidimensional e ir ecoando pelas > paginas. > > Agradeço sugestões e comentários > > obrigado > Oliveira > > Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses [As partes desta mensagem que não continham texto foram removidas] |
|
|
Re: site Multi IdiomaOlá WebAdmin,
A performance é muito importante sim, vou estudar esta solução com muita atenção. obrigado Zipado50 --- Em ter, 22/7/08, WebAdmin <webadmin@...> escreveu: De: WebAdmin <webadmin@...> Assunto: Re: [php-pt] site Multi Idioma Para: php-pt@... Data: Terça-feira, 22 de Julho de 2008, 8:47 Cara.. segue a mesma idéia do array que ele fez, mas o array ainda é mais rápido que a constante. Não em questão de acesso à informação desejada, mas sim que a constante utiliza mais recursos de servidor para poder manter ela como readonly e tals... Sinceramente, sem querer me gambar, a solução do gettext é a usada nos softwares OpenSource e o melhor é que não precisa ser vc para traduzir, basta o programa (POEdit) que um professor qualquer consegue traduzir. Clao que o pojeto é seu, vc faz o que bem entender... Mas se vc pensa em performance e comodidade caso tenha alguma outra implementação futura com certeza o lance dos POT e MO te darão uma resposta bem melhor. Outra desvantagem do tipo de tradução indexada na linguagem é a possibilidade de repetição da expressão, com o gettext ele elimina expressões iguais. Isso sem falar que vc vai ter o seguinte no seu codigo: <h1><?php echo __("Título do site"); ?></h1> e não: <h1><?php echo $traducao[$idioma_ selecionado] ["Título do site"]; ?></h1> ou <h1><?php echo TITULO_SITE; ?></h1> O lance da cnstante vc ainda pode passar a usar nomes de constantes que não sejam o texto real, por exemplo: define("TITULO_ SITE", "Título do site") -> aqui tudo bem define("TITULO_ SITE", "Organizações Tabajara") -> aqui vc já não tem no nome da constante o valor dela Cara.. eu poderia ficar aqui listando vários outros motivos do porque usar o gettext mas vou ficar muito chato hehehe No começo é um pouco difícil mesmo, mas depois com o tempo vc pega a manha e o legal é que fica nos padrões dos softwares OpenSource, facilita se alguém se encarna em traduzir o seu site pra vc! aew vc manda o arquivo .pot e o cara te devolve o .mo, sem percisar programar uma linha sequer vc disponibiliza o idioma no seu site! =] Vai por mim bicho, fizemos todo um estudo onde eu trabalhava para saber qual a melhor forma e decidimos por esta! =] Vlw mano, qualquer dúvida pergunta aew! Alexandre de Andrade Barbosa escreveu: > > Acho que você pode usar constantes em php para isso. > > É simples, vc define um arquivo com todos os textos que devem ser > exibidos na tela em forma de contantes. De acordo com o idioma escolhido > em sessão, você carrega o arquivo de constantes apropriado. > > É melhor assim pois facilita a inclusão de outros idiomas caso queira. > > <?php > > if ($_SESSION[" idiomaDefault" ] == "PT_BR") > { > include_once( 'arquivo_ pt_br.inc. php'); > } > elseif ($_SESSION[" idiomaDefault" ] == "EN) > { > include_once( 'arquivo_ en.inc.php' ); > } > > Os arquivos de constantes seria algo assim: > > <?php > //arquivo_pt_ br.inc.php > > define(_EU_TE_ AMO,'Eu te amo'); > > ?> > > <?php > //arquivo_en. inc.php > > define(_EU_TE_ AMO,'I love you'); > > ?> > > para sair com o texto correto, use, depois de incluir o arquivo de > constante correto: > > <?php print(_EU_TE_ AMO); ?> > > Espero ter te ajudado. > > Um abraço! > ------------ --------- --------- --------- --------- - > Alexandre de Andrade Barbosa > alexandre@andradeba rbosa.com <mailto:alexandre% 40andradebarbosa .com> > <mailto:alexandre@andradeba rbosa.com > <mailto:alexandre% 40andradebarbosa .com>> > http://www.andradeb arbosa.com <http://www.andradeb arbosa.com> > http://www.gestorde ti.com.br <http://www.gestorde ti.com.br> > http://www.desenvol vedorphp. com.br <http://www.desenvol vedorphp. com.br> > http://www.prevenca o.odo.br <http://www.prevenca o.odo.br> > Só sei que nada sei! > ------------ --------- --------- --------- --------- - > > zipado50 escreveu: > > > > Olá para todos, > > > > Estou desenvolvendo um site multi idioma e gostaria de saber se esta é > > a melhor e mais pratica solução: > > > > <?php > > //multiIdioma. php > > session_start( ); > > > > if(!isset($_ POST["por" ]) AND !isset($_POST[ "ing"]) AND > > !isset($_POST[ "esp"])){ > > $idioma = "por";} > > else{ > > if(isset($_POST[ "por"])){ $idioma = "por";} > > if(isset($_POST[ "ing"])){ $idioma = "ing";} > > if(isset($_POST[ "esp"])){ $idioma = "esp";} > > } > > > > echo($idioma) ; > > > > if($idioma== "por"){$idi[ por][1] = "eu te amo muito!...";} > > if($idioma== "ing"){$idi[ ing][1] = "I love you so much!...";} > > if($idioma== "esp"){$idi[ esp][1] = "Yo te amo mucho!...";} > > > > ?> > > > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" > > "http://www.w3. org/TR/xhtml1/ DTD/xhtml1- strict.dtd > <http://www.w3. org/TR/xhtml1/ DTD/xhtml1- strict.dtd> > > <http://www.w3. org/TR/xhtml1/ DTD/xhtml1- strict.dtd > <http://www.w3. org/TR/xhtml1/ DTD/xhtml1- strict.dtd>>"> > > <html xmlns="http://www.w3. org/1999/ xhtml > <http://www.w3. org/1999/ xhtml> > > <http://www.w3. org/1999/ xhtml <http://www.w3. org/1999/ xhtml>>" > xml:lang="pt- br" lang="pt-br" > > > <head> > > <title></title> > > </head> > > <body> > > <form action="<?php echo $PHP_SELF; ?>" method="post" > > > <input type="submit" name="por" value="portugues" > > > <input type="submit" name="ing" value="ingles" > > > <input type="submit" name="esp" value="espanhol" > > > </form> > > > > <h1><?php echo $idi[$idioma] [1]; ?></h1> > > <div id=""><?php echo($idi[$idioma] [1]); ?></div> > > </body> > > </html> > > > > Ou seja colocar os dados em um array bidimensional e ir ecoando pelas > > paginas. > > > > Agradeço sugestões e comentários > > > > obrigado > > Oliveira > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses [As partes desta mensagem que não continham texto foram removidas] |
|
|
Re: site Multi IdiomaBom, note que o texto Login e senha muda para Login e Password...
É que o professor que estava traduzindo nunca mais edu as caras, hehehe! Ricardo Barros escreveu: > > Olá WebAdmin, > > Obrigado pela sugestão, vou estudar esta opção sim e certamente é uma > contribuição interessante, mas entrei no site exemplo > http://www.ilhadota buleiro.com. br/anunciantes/ e lá não está > funcionando só aparece em português, quando vc clica na opção inglês o > listbox muda pra inglês mas o texto permanece em português. > > Obrigado > Zipado50 > > --- Em seg, 21/7/08, WebAdmin <webadmin@... > <mailto:webadmin%40gam.com.br>> escreveu: > De: WebAdmin <webadmin@... <mailto:webadmin%40gam.com.br>> > Assunto: Re: [php-pt] site Multi Idioma > Para: php-pt@... <mailto:php-pt%40yahoogrupos.com.br> > Data: Segunda-feira, 21 de Julho de 2008, 8:52 > > Cara.. faz isso não pq é 120% mais lento que qualquer outro método, vai > > por mim! hehehe > > Dê uma olhada em http://www.php. net/manual/ pt_BR/function. gettext.php. > > Ou então faça como o wordpress faz (que não depende de configuração no > > servidor) > > Dá uma procurada por gettext.... Vou tentar explicar como funciona: > > 1- Vá em http://download. savannah. gnu.org/releases /php-gettext/ e > baixe > > a versão mais atual (php-gettext- 1.0.3.tar. gz > > <http://download. savannah. gnu.org/releases /php-gettext/ > php-gettext- 1.0.3.tar. gz>) > > 2- Você cria o site inteiro, e o que vc quizer que apareça traduzido vc > > coloca <?php echo __('Teste'); ?> > > 3- Crie a função __() e dentro dela vc usa a classe de tradução gettext. > > Dica: use a função sprintf() do PHP para que vc possa colocar __("Bom > > dia %s", $nomeUsuario) > > 4- Depois vc instala um programa chamado POEdit. É nesse cara que vc vai > > traduzir as expressões. > > 5- No diretório bin da instalação do POEdit (é bin tbm no windows) vai > > ter um script chamado gettext.bat, vc vai executar ele passando uns > > parâmentros, e dentre os parametros vc vai indicar que a função __() é a > > que contem as expressões a serem traduzidas. Eu num lembro os > > parametros, tem que procurar. > > 6- este script .bat vai gerar um arquivo .pot, que nada mais é que um > > índice com as expressões a serem tradizidas. Se vc abrir com o notepad > > vc vai ver que ele indica quais arquivos e devidas linhas usam aquela > > expressão. > > 7- Com o POEdit, vc vai abrir o arquivo .pot e vai traduzindo, ao salvar > > (Ctrl+s) é gerado um arquivo .mo que é o que vc vai colocar no site e o > > que a classe gettext vai usar e indexar. > > Eu sei, é meio confuso esse lance de .pot, .mo e __() ou _() e por ai > > vai.. mas vc consegue! =] > > Se precisar de explicações mais esmiuçadas de algum ponto ali pode pedir! > > Usei essa técnica durante 2 anos mais ou menos e nunca me deixou na mão! > > Esse projeto http://www.ilhadota buleiro.com. br/anunciantes/ eu usei > essa > > técnica. A tradução não fui eu quem fez, foi um professor lá... > > Dê uma olhada, teste! > > Vlw???? > > zipado50 escreveu: > > > > > > Olá para todos, > > > > > > Estou desenvolvendo um site multi idioma e gostaria de saber se esta é > > > a melhor e mais pratica solução: > > > > > > <?php > > > //multiIdioma. php > > > session_start( ); > > > > > > if(!isset($_ POST["por" ]) AND !isset($_POST[ "ing"]) AND > > > !isset($_POST[ "esp"])){ > > > $idioma = "por";} > > > else{ > > > if(isset($_POST[ "por"])){ $idioma = "por";} > > > if(isset($_POST[ "ing"])){ $idioma = "ing";} > > > if(isset($_POST[ "esp"])){ $idioma = "esp";} > > > } > > > > > > echo($idioma) ; > > > > > > if($idioma== "por"){$idi[ por][1] = "eu te amo muito!...";} > > > if($idioma== "ing"){$idi[ ing][1] = "I love you so much!...";} > > > if($idioma== "esp"){$idi[ esp][1] = "Yo te amo mucho!...";} > > > > > > ?> > > > > > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" > > > "http://www.w3. org/TR/xhtml1/ DTD/xhtml1- strict.dtd > > > <http://www.w3. org/TR/xhtml1/ DTD/xhtml1- strict.dtd>"> > > > <html xmlns="http://www.w3. org/1999/ xhtml > > > <http://www.w3. org/1999/ xhtml>" xml:lang="pt- br" lang="pt-br" > > > > <head> > > > <title></title> > > > </head> > > > <body> > > > <form action="<?php echo $PHP_SELF; ?>" method="post" > > > > <input type="submit" name="por" value="portugues" > > > > <input type="submit" name="ing" value="ingles" > > > > <input type="submit" name="esp" value="espanhol" > > > > </form> > > > > > > <h1><?php echo $idi[$idioma] [1]; ?></h1> > > > <div id=""><?php echo($idi[$idioma] [1]); ?></div> > > > </body> > > > </html> > > > > > > Ou seja colocar os dados em um array bidimensional e ir ecoando pelas > > > paginas. > > > > > > Agradeço sugestões e comentários > > > > > > obrigado > > > Oliveira > > > > > > > > > > > > > > > > > > Novos endereços, o Yahoo! que você conhece. Crie um email novo com a > sua cara @ymail.com ou @rocketmail.com. > http://br.new.mail.yahoo.com/addresses > <http://br.new.mail.yahoo.com/addresses> > > [As partes desta mensagem que não continham texto foram removidas] > > |
| Free Forum Powered by Nabble | Forum Help |