Índice
Um aspecto que deve ser levado em consideração é definir corretamente a estrutura do banco de dados. Embora possa haver diferentes formas de salvar os registros, teremos que ver como as informações devem ser estruturadas, isso é o que se chama de processo de normalização do banco de dados, que é um estudo das relações entre as tabelas. A primeira coisa que devemos deixar claro é que mesmo que tenhamos os registros no banco de dados, ele não sofrerá um carregamento de consulta, pois usaremos o próprio cache do MySQL para ter os registros em cache, digamos que não faz sentido obter o nome de uma cidade em cada consulta se vai ser sempre igual, ou seja, vamos configurar o tamanho do nosso cache com base no volume que nosso banco de dados pode gerar. Se você deseja alterar o tamanho do cache, você deve usar query_cache_size, pois é a variável MySQL que controla o tamanho total do cache.Vamos criar a relação de registros com InnoDB e o uso de chaves estrangeiras para relacionar tabelas, então por exemplo teremos uma tabela chamada Países e um campo será o id do idioma e outra tabela com os idiomas com traduções será, esta última tabela será a que possui os registros que serão traduzidos nome dos países em diferentes idiomas.
A partir de PHP A forma como controlamos o idioma é por meio de sessões, neste caso salvamos o ID do registro da tabela do banco de dados para identificar o idioma do usuário, podemos fazer isso por geolocalização ou usar um idioma padrão para a web e depois o usuário o altera.
Colocamos uma sessão com o id do idioma:
$ _SESSION ['languageid'] = 1 ou $ _SESSION ['languageid'] = 'es';
Graças a esta variável de sessão, quando consultarmos o banco de dados, usaremos uma cláusula WHERE como esta para consultar os registros de acordo com o idioma.
Selecione * em países WHERE languageid = '". $ _ SESSION [' languageid ']."' Selecione * em Produtos WHERE languageid = '". $ _ SESSION [' languageid ']."'
Com base neste método, devemos preparar nosso design para se adaptar às linguagens, criando todo o design para aceitar conteúdos dinâmicos. Por exemplo, no mysql para o título da página, teremos um campo para cada idioma:
title = este é o idioma do meu produto = is title = este é o idioma do meu produto = en
Assim como a consulta mysql traz a linguagem definida, podemos gerar o conteúdo.
Por exemplo, o título da página seria assim:
Um link também dinâmico com o atributo alternativo:
Também podemos fazer isso para vários elementos da web, como botões:
Isso nos permite abstrair do idioma do usuário para mostrar o conteúdo adaptado de acordo com o país e até mesmo seções diferentes. Além do Mysql, o mesmo método pode ser utilizado com arquivos texto ou xml de acordo com a necessidade de cada projeto.