Cosas web, algunas úles, algunas buenas.
Fushioko, tiendas de productos de Asia

viernes, septiembre 01, 2006

Multilenguaje mediante XHTML

Esto realmente es una pregunta al aire (¿hay alguien que aún me lea?, jeje). Pensando en aplicaciones multilenguaje en las que he trabajado, siempre se nos presenta la duda de cómo hacer el multilenguaje. Hay gente que prefiere los ficheros de properties, los hay que prefieren la base de datos, incluso quienes prefieren variables estaticas (¡dios mio!).

A mí se me ha ocurrido lo siguiente, lo he intentado varias veces, pero por la falta de tiempo no he podido sacarlo o saber si se puede hacer o realmente es un imposible. XHTML es un XML, un XML está definido por una DTD, en la cabecera del XHTML se define cual es la DTD que valida el documento (xhtml1-transitional.dtd). Ahora bien, si yo me creo una DTD que incluya la DTD del XHTML, podré definirme mis propias entidades y usarlas en un XHTML, por ejemplo, si tengo una palabra en castellano "Inicio" y quiero que si se elige el idioma en inglés se escriba "Home", me podré definir una entidad "&INICIO;" que la traduzca por una u otra según el idioma que se ha seleccionado.

Problemas, tan solo uno: no soy capaz de hacerlo. Mis conocimientos de XML creo que son los de la mayoría, en todas las aplicaciones que he necesitado usar XML no ha sido necesario hacer grandes alardes de conocimiento, con lo justo bastaba. Pero aún así sé que se puede hacer lo que pretendo, porque por ejemplo la DTD MathML creo que incluye la de XHTML.

Otro problema que se me plantearía, cuando resolviera lo de que me sacara las entidades, sería lo de mostrar un valor u otro según un idioma seleccionado. No sé si se puede elegir una DTD u otra dependiendo de un parámetro. De todas formas, se podría hacer mediante PHP, claro, que sería mucho más elegante usar unicamente XHTML.

Mientras escrito todo esto, caigo en la cuenta de que creo que no he probado que me muestre las entidades haciendo que el navegador trate el documento como un XHTML y no simplemente crearlo como XHTML y que luego lo trate como HTML.

Si alguien consigue sacarlo, por favor, que me lo diga. A partir de ese momento le consideraré la máquina de la güeb, si es que no lo hago ya ahora, claro.