Ver Mensaje Individual
  #29 (permalink)  
Antiguo 07/12/2013, 18:18
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: Idiomas en la web, como lograrlo?

Cita:
Iniciado por Dalam Ver Mensaje
Código PHP:
Ver original
  1. <?php
  2. //uso con arrays
  3. $lang = 'es'; // O si recibes la variable or GET o POST definiendola como proceda
  4. if($lang == 'es'){
  5.     $days = array( 'Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado');
  6.     $months = array( 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
  7. }
  8.  
  9. echo $dias[date('w')].' '.date('d').' de '.$meses[date('n')-1]. ' del '.date('Y') ;
  10. //Resultado: Sabado 07 de Diciembre del 2013
Como decía antes, el soporte de varios idiomas en la web, tiene muchos ángulos.En el ejemplo de Dalam, está gestionando características propias del idioma (uno de los problemas) , con técnicas (ficheros de "recursos") de gestión de constantes de código (otro problema no necesariamente igual).
Una lista rápida de cosas que hay que gestionar:
- Contenido textual dinámico (noticias)
- Contenido textual estático (páginas HTML estáticas)
- Datos constantes ("propiedades") existentes en bases de datos/XML/etc:(ej, Nombres de países)
- Peculiaridades del lenguaje (moneda, fecha, dirección de escritura,collations) y temas relacionados con éstos (encoding).
- Contenido multimedia estático y generado (imágenes, vídeos).
- Metadata de contenidos multimeda (alts, titles,etc), usado para SEO, accesibilidad,etc
- Textos usados en las páginas (etiquetas de formularios, títulos,etc)
- Textos generados desde código (mensajes de error), tanto por el lado del servidor (php) como del lado del cliente (javascript).Parametrización de los mensajes.
- Texto o contenido obtenido de fuentes externas (web services)
- Texto no mostrado, relacionado con SEO (description, keywords)
- Urls existentes en el sitio web, para la creación de urls amigables y SEO.Incluye gestión de subdominios.
- Adecuación a los requisitos legales existentes en países con leyes que pueden afectar a la visualización o lógica de tu web.Como ejemplos, normativa alemana sobre e-commerce, normativa europea con respecto a cookies.
- Cuestiones de diseño, relacionados con el distinto tamaño u orientación de textos en distintos idiomas.
- Cuestiones de rendimiento.
- Cuestiones de cachés de páginas.

La solución a la mayor parte de los puntos anteriores, suele depender también (aunque no debería) de la pregunta "Quién va a hacer las traducciones?".Así que es mejor buscar una forma de gestionar las traducciones que esté en un formato fácil de importar, modificar y guardar, directamente, o a través de un cms.También al parecer PHP tiene un par de clases no documentadas que solucionan todo eso, o eso dicen.

Y ahi es donde vuelvo al ejemplo que ha puesto Dalam.El formato de los arrays no debe ser cualquiera.Si cosas como los meses del año se van a meter en un fichero de "traducciones", mejor que sea un formato fácil de gestionar, y si empiezas a usar arrays "sueltos" ($days,$months), posiblemente termines con problemas.Una solución simple es usar definiciones del tipo constante=>valor.
Cita:
$lang['es']=array(
"LOCALE_MONTH_January"=>"Enero",
"LOCALE_MONTH_February"=>"...."
o, más simple aún, tan sólo parejas de clave=>valor, aunque esto tiene el peligro de los sinónimos: una palabra, según el contexto, puede tener más de un significado en otro idioma.Las claves deben estar suficientemente contextualizadas (por eso el prefijo).

Una cosa interesante a notar en la solución de Dalam, es lo siguiente:
Cita:
Código PHP:
Ver original
  1. echo $dias[date('w')].' '.date('d').' de '.$meses[date('n')-1]. ' del '.date('Y') ;
Ese formato de fecha, forma parte de las características del idioma.Debería estar junto con los arrays de traducciones.

Última edición por dashtrash; 07/12/2013 a las 18:44