Wiki source for MultiLangSite


Show raw source

======Procedimiento para Creación de Sitios Multilenguaje======

""<div style="float:right;width:250px;padding:4px;background-color:#ccc;border:1px dashed #fff; margin-right:10px; margin-bottom:10px;font-size:10px;color:red;">Este documento esta en desarrollo los aportes son bienvenido</div>""===Prologo===

Este documento pretende unificacar la funcionalidad y guiar en el proceso de desarrollo de sitios web multilenguaje, en otras palabras ser una base (guideline) practica que se pueda seguir y someter a mejoras continuas, al mismo tiempo que se formaliza el proceso.

1) ===Estructura del Sistema de Archivo===

A continuación se muestra la estructura simple de lo que sería un sitio web multilenguaje utilizando smarty.

- classes/lang/
- es.ini.php
- en.ini.php
- ...
- public_html/
- .htaccess
- index.php
- pages/
- portada.ini.php
- noticia.ini.php
- galeria.ini.php
- ...
- files/
- templates/
- noticia.tpl
- portada.tpl
- galeria.tpl
- templates_c/

Dentro de la primera carpeta __class/lang/__ se almacenan los archivos .ini.php que serviran para cada idioma del sitio, ellos almacenaran todos los titulos estaticos incustados en el sitio, para ello se hara uso de la variable $_LANG.

Ejemplo del contenido de un archivo .ini.php.

//es.ini.php//
%%(php)
<?php
$_LANG['alt_btnSearch'] = 'Buscar';
$_LANG['val_Search'] = 'entre clave';
$_LANG['news_and_events_title'] = 'Noticias y Eventos';
$_LANG['outstanding_title'] = 'Destacados';
$_LANG['fact_and_figures_title'] = 'Hechos y Cifras';
$_LANG['read_more'] = 'Leer más';
?>
%%

Ahora para incluirlo el archivo en cualquier archivo php tenemos usar un archivo que sea comunmente requerido por cada php en el sitio, por esa razón usamos el app.class.php. Lo editamos y añadimos al final lo siguiente:

%%(php)
...
if(ADMIN!==true) {
# Aqui defino a $lg con lenguaje por defecto el español
$lg = ($_REQUEST['lg']?$_REQUEST['lg']:'es');

switch($lg) {
case 'es':
require_once('lang/es.ini.php');
break;
}
# Hago el paso de $_LANG a smarty, notece que le paso a la funcion assign el arreglo completo y no le defino nombre esto es por que
# esa función de smarty puede recibir una cadena o un arreglo en caso de que sea un arreglo recorre el arreglo y le asigna las llaves del arreglo
# como nombres de las variables es por ello que en smarty por ejemplo no usariamos el valor de $_LANG['alt_btnSearch'] así {$alt_btnSearch}.
if($_LANG) $smarty->assign($_LANG);
}
...
%%

En la carpeta __public_html__ tendremos los archivos .htaccess, index.php y la carpeta pages. El archivo .htaccess contendra lo siguiente:

%%(apache)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ /index.php?lg=$1 [L]
RewriteRule ^$ /es/ [R]
</IfModule>
%%

Esto solo debe agragarse al final, después de la última linea del archivo, ahora expliquemos el archivo, esto activa el mod_rewrite (RewriteEngine on), claro si el modulo ha sido cargado (eso se consulta con <IfModule mod_rewrite.c>...</IfModule>), las siguientes lineas solo establecen que si el directorio o archivo no existe lo rediriga

::c::
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki