Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

En busca de un diseño eficiente para sitio multilenguaje grande

Estas en el tema de En busca de un diseño eficiente para sitio multilenguaje grande en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Estimados, luego de darle vueltas al tema durante unos días e investigar por Internet y con algunos colegas he decidido consultarles mi problema esperando leer ...
  #1 (permalink)  
Antiguo 22/03/2010, 16:57
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 19 años, 3 meses
Puntos: 2
Busqueda En busca de un diseño eficiente para sitio multilenguaje grande

Estimados, luego de darle vueltas al tema durante unos días e investigar por Internet y con algunos colegas he decidido consultarles mi problema esperando leer sus valiosas opiniones y consejos.

El tema es el siguiente: se quiere desarrollar un sitio web multilenguaje de un tamaño considerable; esto es muchas palabras, frases y textos en un mínimo de 3 lenguajes diferentes. Además se necesita que el usuario del sistema (usualmente redactores del sitio) tenga la posibilidad de añadir en un futuro nuevas palabras, frases y textos al repertorio sin que el proceso resulte demasiado dificultoso para él.

Dadas las características de los requerimientos creo que las aproximaciones más comunes utilizadas en estos casos como una serie de define o un array con las traducciones no resultarían convenientes ya que cargar a memoria una vasta cantidad de frases de las que solo se utilizarían algunas pocas sería bastante costoso para el servidor.
Tampodo me parece conveniente manejar las traducciones en base de datos y mediante un SELECT recuperar las correspondientes al idioma que se requiera ya que otra vez estaría cargando la memoria con muchos datos inútiles. Por otra parte realizar un SELECT solo por aquellas palabras, frases o textos que se van a utilizar en la página que se quiere cargar podría resultar dolorosamente lento ya que con facilidad la página podría incluir 50 palabras y en consecuencia serían 50 consultas.

He estado estudiando el hecho de colocar en las vistas algo como esto: $translator->registerTranslation("Buen día") y luego haciendo uso de los buffers generar, una vez que ya se han llamado a todos los registerTranslation(), una consulta del tipo SELECT english FROM translation WHERE english IN("Buen día", "Buenas noches", "Otras muchas frases y/o textos") logrando así consultar una sola vez a base de datos y solamente por aquellas frases que necesito. Pero siendo que el IN no retorna los resultados en el orden en cual se consultaron se requeriría algo de lógica adicional para ordenar los resultados y luego para reemplazar el texto de las vistas por su traducción correspondiente... osea otra vez muchos recursos para cada impresión del sitio.

Si no los aburrí y han leído hasta aquí mi pregunta es entonces ¿cuál podría ser la mejor aproximación para construir un sitio de estas características? He visto que el Zend Framework utiliza, entre otros adaptadores, archivos de texto plano INI y parece funcionar consultando al archivo por cada llamada a $translate->_("Frase") (o quizá carga todo en memoria).

Cualquier ayuda, consejo, opinión será muy valorada.
Agradezco de antemano.
Saludos.
__________________
R4DS en español | R4DS en inglés
  #2 (permalink)  
Antiguo 22/03/2010, 20:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: En busca de un diseño eficiente para sitio multilenguaje grande

Si ya haz visto Zend_Translate, te recomendaría seguir con ese esquema, en lo particular yo lo uso junto con el adaptador para gettext, ya que es bastante rápido y funciona para múltiples idiomas.

Saludos.
  #3 (permalink)  
Antiguo 23/03/2010, 07:31
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: En busca de un diseño eficiente para sitio multilenguaje grande

Una duda al respecto.
Como se puede utilizar Zend_Translate sin Zend Framework?
  #4 (permalink)  
Antiguo 23/03/2010, 08:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: En busca de un diseño eficiente para sitio multilenguaje grande

Simplemente ubica el path dentro de tu include path y cargalo usando require_once() o con el Autoloader de Zend.

Aunque no es necesario usar el MVC de Zend, es recomendable que dejes todo el framework en tu include path para poder usar los componentes por separado.

Saludos.
  #5 (permalink)  
Antiguo 23/03/2010, 14:55
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: En busca de un diseño eficiente para sitio multilenguaje grande

Gracias por los comentarios.

Ahora dado que el componente Zend_Translator no tiene desarrollado un adaptador para trabajar con SQL ¿cómo manejarían ustedes el tema de las traducciones evitando consultar a la BD por cada palabra o frase a traducir? ¿tal vez armando una consulta grande con la función IN? ¿habrá algo más efectivo?

Mil gracias.
Saludos.
__________________
R4DS en español | R4DS en inglés
  #6 (permalink)  
Antiguo 23/03/2010, 15:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: En busca de un diseño eficiente para sitio multilenguaje grande

Como te comente, yo optaría por usar gettext ya que el formato es binario y tiende a ser mucho más rapido que las busquedas de texto como tal.

Saludos.
  #7 (permalink)  
Antiguo 24/03/2010, 19:31
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: En busca de un diseño eficiente para sitio multilenguaje grande

Le pegaré un ojo a esa clase entonces y en particular a ese adaptador.

Gracias!
Saludos.
__________________
R4DS en español | R4DS en inglés
  #8 (permalink)  
Antiguo 25/03/2010, 05:45
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años, 5 meses
Puntos: 32
Respuesta: En busca de un diseño eficiente para sitio multilenguaje grande

Cita:
Iniciado por principianteZF Ver Mensaje
Una duda al respecto.
Como se puede utilizar Zend_Translate sin Zend Framework?
Que tal estimado

Porque así es la filosofía de Zend, un diseño "desacoplado" que permite usar tanto el esquema completo con MVC, como usar independientemente cada uno de sus componentes. Esto te permite crear una plataforma de desarrollo único, ya que puedes hacer aplicaciones que no necesiten de un MVC, pero reaprovechar todo el resto de componentes, sin tener que volver a desarrollarlos (ej: no tienes que volver a crear otra capa de persistencia, usas directamente Zend_Db y listo).

Saludos!
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #9 (permalink)  
Antiguo 25/03/2010, 11:16
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: En busca de un diseño eficiente para sitio multilenguaje grande

Aqui te dejo un link de un tutorial del Poedit... programa usado para generar archivos .po que contiene traducciones de cadenas que son inerpretadas con el php

http://www.mclibre.org/consultar/php...xt.html#Creaci
__________________
Quitenme la vida pero no la bebida.

Etiquetas: diseño, eficiente, grande, multilenguaje
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:12.