MySQL vs XML

oFF-sIDE

Hola,

tengo que hacer una web con 3 idiomas (nunca he hecho ninguna con más idiomas que el castellano) y nunca he usado, ni sé usar XML. He visto muchas webs que cargan los idiomas directamente de un fichero XML, así que me lo planteé como opción, así aprendía algo nuevo.

El caso es que googleando he visto que la gente no se pone de acuerdo sobre qué es más rápido o más eficiente, si usar XML o usar MySQL. No sé si me valdrá la pena aprender y hacerlo con XML o tirar de bases de datos.

¿Qué consideráis mejor?

En caso de que sea con MySQL... ¿de qué forma sería más óptimo?

Había pensado en una tabla con una fila por cada texto y 3 columnas con los respectivos idiomas, pero desde un punto de vista puramente intuitivo me atrae más la opción de 3 filas porque me da la sensación de que las búsquedas serían mucho más rápidas. Pero claro... crear una nueva columna por cada texto me parece una aberración.

Como veis estoy bastante perdido en esto del multilingüismo... ¿qué pensáis vosotros?

guner

Prueba gettext

http://www.gnu.org/software/gettext/

Contestando a tu pregunta usaría XML antes que base de datos.

oFF-sIDE

¿XML? Un voto a favor.

Lo malo es que la creación de esta web es algo que corre prisa. Tengo 1 mes para hacer esta y otra pequeñita, que es bastante tiempo, pero teniendo que empaparme de XML a saco para no hacer un burruño multilingüe no sé si me dará tiempo de dejarlo todo lo pulido que me gustaría.

¿El acceso a un fichero XML es más rápido que a una base de datos?
Es que me he fijado que la última web que he hecho es lentísimo el tiempo de acceso a MySQL (una página con consulta a 2 tablas tarda varios segundos en carga, sin imágenes ni cosas pesadas), pero me da la sensación de que es por el hosting, PiensaSolutions, porque en otros casos (1&1 y sobretodo aruba.it...) he comprobado que es mucho más rápido.

Lo del gettext estoy mirándolo, gracias, pero creo que hay que tocar cosas del php.ini y eso no puedo/debo hacerlo. Seguiré echándole un ojo.

NeB1

#3 yo lo haría en mysql, por que es más versátil a la hora de buscar una cadena en concreto, pero bueno, para gustos colores.

Otro método es hacer varios archivos con defines

[archivo es.php]
define('FRASE_X','El contenido de una frase en un idioma en concreto');
[archivo en.php]
define('FRASE_X','The content of a sentence in some lenguage');

y incluir el archivo que toca según el idioma seleccionado, quizás es menos profesional, pero muy rápido de implementar.

S

XML es más lento pero para trabajar sin necesidad de servidor ni demas xml te ofrece eso que trabajas directamente sobre un fichero y con relativa facilidad gracias a JS

Nucklear

A mi me gusta usar XML, me parece mucho mas cómodo y simple ademas usando persistencia con JDBC me quito de andas con la base datos a mano.

oFF-sIDE

Bufff, me dais muchos argumentos de peso en distintos casos.

Por un lado me mola la sencillez del método que propone NeB1 aunque ta, y tampoco me parece tan poco profesional. Coges el archivo que toque mediante una variable de sesion y cookies y carga más rápida que esa no creo que haya. El día que quieran añadir cosas sería casi tan simple como con un XML, añadir cosas al archivo, pero habría 3, pero eso digo "casi".

¿Qué inconvenientes le veis a esta forma de hacerlo?

Aún así, me gusta la idea del XML por eso de meterme en algo que "todavía" no controlo.

En términos de "velocidad de carga" qué os parece mejor?

S

#7 si es muy estatica, contenido que apenas varia cada 3 dias o mas asi pues si que estaria bien esa idea que propones se optimizaria bastante pero por velocidad de carga mysql es más rápido

Si te sirve de idea haz la pagina base en un idoma y en uno o varios xml pones el resto de idiomas para que cambie con ajax por ejemplo (en plan noticia disponible tambien en ingles, frances y blablabla)

#9 Yo me referia a XML vs MySQL, en general cualquier base de datos es más rápido que cargar y controlar datos de un XML/fichero

oFF-sIDE

#8 Sí va a ser muy estática, del orden de 1 modificación cada X meses.

Yo esperaba que el include de php fuera más rápido que MySQL, me dejas estupefacto. A lo mejor es por eso que la última página que hice tardaba tanto en cargar (1 include para etiquetas meta, otro para el pie de página y otro para funciones de php), y yo echándole la culpa al MySQL.

Respecto a lo de Ajax... nunca lo he usado. Hasta ahora me he apañado con PHP, JS y MySQL, y ahora mismo todavía no me apetece meterme en ello, primero quiero perfeccionar los efectos visuales con JS y empezar con XML, que tarde o temprano acabaré usándolo aunque sólo sea por conocerlo y saber cuando puede ser mejor opción que otras cosas.

Me está gustando hacia dónde me lleva el hilo, muchas gracias :)

Usuarios habituales