Buenas tardes,
Yo crearía una carpeta llamada lang/ en mi aplicación. Dentro de ellas iría agregando por ejemplo los siguientes ficheros.
settings_es.php //Para Español
settings_en.php //Para Inglés
settings_zh.php //Para chino
Dentro de ésta agregaría una matriz asociativa donde las claves sean los items a traducir y los valores la traducción en cada uno de los idiomas.
Ej.
settings_es.php
Código:
<?php
$settings_text = array
(
'txt_app_name' => 'Nombre de la Aplicación',
'txt_app_slogan' => 'Slogan de la aplicación',
'txt_app_tip1' => 'Tip 1',
'txt_app_tip2' => 'Tip 2',
'txt_btn_1' => 'Botón 1',
);
?>
settings_en.php
Código:
<?php
$settings_text = array
(
'txt_app_name' => 'Application Name',
'txt_app_slogan' => 'Application Slogan',
'txt_app_tip1' => 'Tip 1',
'txt_app_tip2' => 'Tip 2',
'txt_btn_1' => 'Button 1',
);
?>
settings_zh.php
Código:
<?php
$settings_text = array
(
'txt_app_name' => '应用程序名称',
'txt_app_slogan' => '应用程序的口号',
'txt_app_tip1' => '第 1',
'txt_app_tip2' => '第 2',
'txt_btn_1' => '按钮 1',
);
?>
Posteriormente lo que haría sería si el usuario debe loguearse, es poner un desplegable donde seleccione el idioma. Ese desplegable arrojará vía GET o POST o simplemente una variable de SESSION el valor seleccionado que será la variable que recoja la aplicación para seleccionar entre settings_es, settings_en o settings_zh. Una vez almacenado ese valor de las options del desplegable validaríamos con algo así:
Código:
<?php $lenguaElegida = session::get('lenguaje'); ?>
<?php
if (isset($lenguaElegida)) {
require_once APP_LANG . 'settings_' . $lenguaElegida . '.php'; //Donde APP_LANG hace referencia a la carpeta donde está alojado cada fichero de traducción
};
?>
Eso sí deberías hacer la labor de traducción de cada item de menú, texto de botón, etc.
Así aislas cada fichero de traducción de lo que a la página principal o páginas se refiere, y simplemente luego sólo tienes que referenciar a ese fichero que usas en require_once como vertebrador de los items que mostrarás ya que usarás la CLAVE del array para referenciarlos en todas las páginas. Y no debes cambiarlo en cada página o tener una por cada idioma. Simplemente usas un array asociativo con las mismas claves pero distintos valores según el idioma. Así si cambias un fichero por ejemplo el settings_zh.php en algún item su traducción no afectará ni a la aplicación ni al resto de traducciones.
Saludos cordiales.
Francisco J.