Jump to content
Sign in to follow this  
Lfscoutinho

[PHP] Website poliglota

Recommended Posts

Lfscoutinho

config.php

<?php

session_start();

define('SESS_LING',	'lingua' );	// Chave da $_SESSION que vai conter a língua
define('SESS_LING_DEF',	'pt_PT' );	// Língua por defeito

// Função para mudar a língua
function mudarLingua( $lingua ) {

$linguas = array( 'pt', 'br', 'fr', 'en', 'us' );

if( in_array( $lingua, $linguas ) ) {

	switch( $lingua ) {

		case 'pt' :
		case 'br' :
			$lingua = 'pt_PT';
			break;

		case 'fr' :
			$lingua = 'fr_FR';
			break;

		case 'en' :
		case 'us' :
			$lingua = 'en_UK';
			break;

	}

} else {

	$lingua = SESS_LING_DEF;

}

$_SESSION[sESS_LING] = $lingua;

}

// Verifica se o utilizador quer mudar de língua
if( isset( $_GET['ling'] ) ) {

mudarLingua( $_GET['ling'] );

} elseif( ! isset( $_SESSION[sESS_LING] ) ) {

$_SESSION[sESS_LING] = SESS_LING_DEF;

}

define('LOCAL', $_SESSION[sESS_LING] . '.UTF-8' );	// Define o local

setlocale( LC_ALL,	LOCAL );			// Define as informações locais
putenv( "LC_ALL="	. LOCAL );			// Necessário em alguns sistemas
putenv( "LANGUAGE="	. LOCAL );			// Necessário em alguns sistemas

textdomain( 'traducao' );				// Define o domínio padrão
bindtextdomain( 'traducao', './linguas' );		// Configura o caminho para um domínio
bind_textdomain_codeset( 'traducao', 'UTF-8' );		// Define a codificação dos caracteres

index.php

<?php

require 'config.php';	// Requer o ficheiro "config.php"

?>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="author" content="Luis Coutinho <Luis@lfscoutinho.net>" />
	<title>Website poliglota</title>
</head>
<body>
	<p><a href="?ling=pt">PT</a> <a href="?ling=fr">FR</a> <a href="?ling=en">EN</a></p>
	<p><?php echo gettext('Olá mundo!') ?></p>
	<p><?php echo _('Olá mundo!') ?></p>
	<p><?php printf( ngettext( '%d teste', '%d testes', 1 ), 1 ) ?></p>
	<p><?php printf( ngettext( '%d teste', '%d testes', 2 ), 2 ) ?></p>
</body>
</html>

Informações

Existem várias maneiras de se criar um website poliglota, como por exemplo: utilizando arrays ou constantes.

No entanto, na minha opinião esta é forma mais fácil, simples e elegante, ou seja, a melhor.

Ficheiros de tradução

  • Fazer download do Poedit
  • Abrir o Poedit
  • Clicar em "Ficheiro"
  • Clicar em "Novo catálogo"
  • Preencher todos os campos
    • Na aba "Dados do projecto"
      • Nos campos "Codificação" e "Codificação do código-fonte" escolher "UTF-8"
      • Nas formas plurais, depende da língua (podem ver neste site a forma plural da língua que querem traduzir)

      [*]Na aba "Pastas"

      • No campo "Pasta base" devem indicar a localização da pasta com os ficheiros a serem traduzidos, por exemplo "C:/wamp/www/website-poliglota"
      • Em baixo, devem carregar no segundo botão ("Nova entrada"), adicionar um "." (ponto-final) e carregar na tecla enter

    [*]Clicar em "OK"

    [*]Clicar em "Catálogo"

    [*]Clicar em "Actualizar a partir do código-fonte"

    [*]PUF... MAGIA ! Apareceram as strings a serem traduzidas

    [*]Clicar na string a ser traduzida

    [*]No fundo do programa, no segundo campo, escrever a tradução e carregar na tecla enter

    [*]Clicar em "Ficheiro"

    [*]Clicar em "Guardar"

Estrutura das pastas/ficheiros

A estrutura das pastas/ficheiros tem de ser a seguinte:

  • config.php
  • index.php
  • linguas
    • en_UK
      • LC_MESSAGES
        • traducao.mo
        • traducao.po

      [*]fr_FR

      • LC_MESSAGES
        • traducao.mo
        • traducao.po

Atenção

Por vezes, depois de criar/editar os ficheiros de tradução é possível que não apareçam as novas traduções/correcções. Sinceramente, não sei qual o motivo para isto acontecer, sendo que mesmo limpando a cache e afins, continuam a não aparecer. A solução que conheço para este problema é reiniciar o computador. Contudo, se conheceres outra solução estás à vontade para partilhá-la e o povo agradece.


O objectivo deste tutorial é divulgar esta simples e fácil forma de criar websites poliglotas que muita gente desconhece.

Críticas & Sugestões são bem-vindas :thumbsup:

[Artigo no Wiki]

Share this post


Link to post
Share on other sites
Localhost

Pah, melhora lá a formatação do tutorial da wiki. É muito melhor escreveres um tutorial directamente na wiki do que andares a escrever aqui. Para fazer a tabela de conteúdos utilizas as ícones de cabeçalhos (sexta ícone a partir da esquerda).


here since 2009

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Eu tenho criado aqui, porque o objectivo é que seja útil aos demais e infelizmente parece que as pessoas ainda não estão muito habituadas a pesquisar na wiki, como tal, penso que estando aqui pode chegar a mais utilizadores. No entanto, coloco sempre uma hiperligação para a wiki para começarem a procurar lá e não só no fórum.

Aliás, penso que seria engraçado que "unissem" as pesquisas do fórum com da wiki, ou seja, ao pesquisar no fórum também aparecerem os resultados da wiki, penso que seria uma forma de aumentar os resultados a wiki. Fica aqui a sugestão...

Tabela de conteúdos!? Não percebi, mas se te estavas a referir às listas, finalmente quase 1h depois consegui perceber como se faziam lista encadeadas e consegui deixar a formatação como fiz aqui. xD

Share this post


Link to post
Share on other sites
scorch

Não. Visualiza agora o artigo na Wiki, e vais ver os sub-titulos devidamente formatados, e uma Table Of Contents (TOC)


PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Obrigado mais uma vez pela vossa ajuda e peço desculpa.

Já percebi a parte dos sub-títulos e aproveitei para alterar no outro tutorial, mas a parte da tabela de conteúdos não percebi, não vi lá nada sobre isso. Se me poderem dizer como se faz, eu agradecia. Mais uma vez obrigado e desculpa.

Share this post


Link to post
Share on other sites
scorch

A tabela de conteúdos é gerada automaticamente quando vês um artigo, e baseia-se nos títulos e sub-títulos dentro do artigo. Podes vê-la no canto superior direito do artigo. :P

Btw, não precisas de pedir desculpa. Ninguém nasce ensinado, nem ninguém sabe tudo, estamos sempre a aprender. :)


PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Eu mudei o outro tutorial, mas nem reparei que a tabela já tinha aparecido  :P

Mais uma vez, obrigado !

Share this post


Link to post
Share on other sites
thoga31

Eu tenho criado aqui, porque o objectivo é que seja útil aos demais e infelizmente parece que as pessoas ainda não estão muito habituadas a pesquisar na wiki, como tal, penso que estando aqui pode chegar a mais utilizadores. No entanto, coloco sempre uma hiperligação para a wiki para começarem a procurar lá e não só no fórum.

De notar que a intenção é acabar com este quadro, passando tudo (o que é bom) para a Wiki. Mas assim fazes bem: crias aqui e na wiki, e fazes a ligação fórum>wiki. :)

Aliás, penso que seria engraçado que "unissem" as pesquisas do fórum com da wiki, ou seja, ao pesquisar no fórum também aparecerem os resultados da wiki, penso que seria uma forma de aumentar os resultados a wiki. Fica aqui a sugestão...

Gostei. Não sei se é possível, mas vou colocar essa questão e proposta directamente junto do staff. :P


Knowledge is free!

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Parece-me bem a ideia de acabar com esta secção passando tudo para a Wiki, mas acho que há pontos negativos nisso, se não forem feitas algumas alterações.

Por exemplo, no meu ponto de vista e devido aos números, recentemente, apresentados pelo staff parece-me que a Wiki ainda só é um "instrumento" para uma minoria dos utilizadores desta comunidade. Talvez as pessoas não saibam da Wiki, talvez se esqueçam de procurar na Wiki, talvez façam uma pesquisa no fórum sem sucesso e pensem que se não existe no fórum também não existe na Wiki, para outros fazer uma pesquisa é muito, quanto mais fazer duas (uma no fórum e outra na wiki) e com certeza que existem outros motivos.

Daí, a minha sugestão anterior... Penso que é uma pequena coisa que pode fazer uma grande diferença !

Share this post


Link to post
Share on other sites
thoga31

Não vou prolongar o off-topic, mas já coloquei a sugestão junto do staff. :P


Knowledge is free!

Share this post


Link to post
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
Sign in to follow this  

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