La relación de registros la crearemos con InnoDB y el uso de claves foráneas para relacionar tablas, así tendremos por ejemplo una tabla que se llamará Paises y un campo el id del idioma y otra tabla con los idiomas con traducciones será , esta última tabla será la que tenga los registros que estarán traducidos los nombre de los países en diferentes idiomas.
Desde PHP la manera que tenemos de controlar el idioma es haciendo uso de sesiones, en este caso guardamos el ID del registro de la tabla de la base de datos para identificar el idioma del usuario, podemos hacerlo por geolocalización o bien utilizar un idioma por defecto para la web y luego que el usuario lo cambie.
Ponemos una sesión con el id del idioma:
$_SESSION['idiomaid'] = 1 o $_SESSION['idiomaid'] = 'es';
Gracias a esta variable de sesión, cuando hagamos consultas a la base de datos utilizaremos una clausula WHERE como esta para consultar los registros según el idioma.
Select * from Paises WHERE idiomaid='".$_SESSION['idiomaid']."' Select * from Productos WHERE idiomaid='".$_SESSION['idiomaid']."'
Basándonos en este método deberemos preparar nuestro diseño para que se adapte a los idiomas, creando todo el diseño para aceptar contenido dinámico. Por ejemplo en mysql para el titulo de la pagina tendremos un campo para cada idioma:
titulo=este es mi producto idioma=es titulo=this is my product idioma=en
Así como la consulta mysql trae el idioma definido podemos generar el contenido.
Por ejemplo el titulo de la pagina quedaría así:
<title><? echo $titulo ?></title>
Un enlace también dinámico con el atributo alternate:
<a href=”midominio.com/pagina.php” rela=”alternate”><? Echo $fila['titulo'] ?></a>
Tambien podemos hacerlo para diversos elementos de la web cómo botones:
<input type="submit" value="<? Echo $tituloboton ?>">
Esto nos permite abstraernos del idioma del usuario para mostrar contenido adaptado según el pais e incluso secciones diferentes. Ademas de Mysql puede utilizarse el mismo metodo con archivos de texto o xml según las necesidades de cada proyectos.