Jump to content

[PHP] GetText


Zeux

Recommended Posts

Enquanto estava a desenvolver o meu último projecto, tive a necessidade de traduzir a página para várias línguas, e após investigar um pouco descobri o gettext 😄

Procurei aqui no fórum e não encontrei nada sobre isso, por isso, ou eu sou muito noob e só eu é que não sabia ou então pode ser uma dica boa.

Então aqui vai um pequeno manual de como usar o gettext para trauzir páginas:

1. Na página PHP sempre que quiserem colocar uma frase que irá estar traduzida em várias linguas metam:

<?php echo gettext("texto para traduzir"); ?>

2. Após a página ter tudo escrito desta forma, usar o programa poEdit para criar as legendas propriamente ditas:

- Ficheiro - Novo Catálogo

- Depois é só colocar a informação que quiserem relativa à tradução

- Na tab "Pastas" coloquem como pasta base a pasta que contem as páginas php a serem traduzidas e carreguem no botão que é uma pasta com uma estrela (Nova Entrada) e depois basta colocar apenas um ponto (.) na textfield que aparece

- Carreguem em OK e o programa irá percorrer procurar todas as palavras que tiverem com o gettext nos ficheiros da pasta que indicaram

- Nota: o texto que escrevem dentro da tag "gettext()" não pode ter acentos nem nada desse género, têm de usar o respectivo HTML encoding

- Após isto deve aparecer uma lista com todas as palavras/frases encontradas, carreguem em cima do texto a traduzir e no quadrado inferior esquerdo coloquem a tradução respectiva à lingua que escolheram.

- No fim de terem traduzidos todos os textos vão a "Ficheiro - Guardar como" e guardem com o nome messages.po dentro da pasta da lingua correspondente, seguindo esta estrutura:

               - Pasta com a página

                        - Locales

                                   - pt_PT

                                   - en_EN

                                   - ....

3. Agora para mudar de língua têm de codificar o botão para executar este código, onde a variável $locale irá conter o nome da língua que terá de ser igual ao nome da pasta como referi atrás, ou seja, "pt_PT", "en_EN", etc...:

putenv("LANGUAGE=$locale");
putenv("LANG=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
textdomain("messages");

4. Por último basta reiniciarem o Apache e testarem (cada vez que mudam o ficheiro .po têm de reiniciar o apache para mudar as alterações) 😄

Não sei se esta maneira é a mais fácil ou não, mas foi assim que eu consegui por a funcionar 😄

Se tiver aqui alguma coisa de mal, agradecia aos entendidos no assunto que dissessem como corrigir 😄

Link to comment
Share on other sites

Muito bom este tutorial 😄 eu não conhecia isto e agora vai dar-me muito jeito para uma página que estou a desenvolver para uma empresa portuguesa de informatica e contabilidade e eles querem o site em português, espanhol e inglês.

Keep with the good work

Our lives begin to end the day we become silent about things that matter - Martin Luther King

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.