| |||
Idioma en mi página hola monoswim. Bueno tengo una consulta quisiera que mi web sea multiidioma hasta ahroa el idioma esta en base de datos peor eos lo hace muy lento. quisiera hacerlo en archvisos los idiomas peor como designo q tal variable es la palabra del archivo. |
| |||
![]() Te recomiendo que mires la opción Negociación de Contenidos del Apache. Es el propio cliente el que solicita un idioma en preferencia a otros. Tu trabajo como webmaster es la de crear versiones de las páginas en diferentes idiomas, y luego, según como se indica en el enlace que te puse, es el propio servidor web el que sirve las páginas según el idioma que solicite el usuario. Por ejemplo. Si yo tengo un fichero index.html, puedo crear las versiones francesa (index.fr.html), inglesa (index.en.html) y española (index.es.html). Luego, activo el sistema MultiViews en el directorio donde están los ficheros y... listo. Ahora bien... ¿y si es un alemán el que visita la página? Bueno, podemos hacer un enlace simbólico index.en.html -> index.html.html y de esta manera saldrá la página en inglés, como página por defecto. Esto es lo sencillo... pero no es tan sencillo... Resulta que de inglés hay 13 variedades (13 dialectos de inglés), de francés hay 6, y de español hay 20 (toda sudamérica, España, ...). Si alguien desde Argentina se conecta y en su navegador está indicado que prefiere ver las páginas en Español de Argentina, tendrá en código es-ar, que será distinto del es-co de colombia, etc. etc. y desde luego, distinto del es que has configurado antes. Hay un truco. Bueno, hay más de una forma de hacerlo. Esta es una de ellas. Consiste en crear un fichero .htaccess que el servidor web lee antes de servir las páginas. Lo dejas en el mismo directorio. Dentro de él escribes:
Código:
y así con todas las variantes de los idiomas que quieres soportar.AddLanguage es .es1 AddLanguage es-ar .es2 AddLanguage es-bo .es3 AddLanguage es-cl .es4 AddLanguage es-co .es5 AddLanguage es-cr .es6 AddLanguage es-ec .es7 AddLanguage es-sv .es8 AddLanguage es-us .es9 AddLanguage es-gt .es10 AddLanguage es-hn .es11 AddLanguage es-mx .es12 AddLanguage es-ni .es13 AddLanguage es-pa .es14 AddLanguage es-py .es15 AddLanguage es-pe .es16 AddLanguage es-pr .es17 AddLanguage es-ve .es18 AddLanguage es-do .es19 AddLanguage es-uy .es20 AddLanguage en .en1 AddLanguage en-au .en2 AddLanguage en-bz .en3 AddLanguage en-ca .en4 ... Luego, las páginas 'oficiales' tendrán estos nombres:
Código:
Es decir, sin variar para nada su nombre. Eso nos facilitará su edición con nuestro programa gestor de sitios webs. Pero cada idioma, separado en su carpeta correspondiente (es/, en/, fr/, de/...)index.html contenido.html menu.html El truco viene ahora. Queremos que el servidor web acceda a la carpeta del idioma que el usuario ha solicitado. Eso quiere decir que tenemos que "guiar" al servidor web desde un fichero que vamos a colocar ahora, hasta el mismo fichero dentro del directorio de idioma. La forma de hacerlo será la de crear una batería de enlaces simbólicos, apuntando a los ficheros de idiomas distintos. Será mejor verlo con un ejemplo. Supongamos que un inglés accede a nuestro web y solicita la página index.html. Su cliente web tiene indicado que desea ver las páginas en inglés de Australia (en-au), y así nos llega en la cabecera HTTP: Accept-Language: en-au.Pero nosotros solo tenemos una variante de inglés hecha (en/index.html) así que esa es la página que queremos devolverle. Gracias a la presencia del fichero .htaccess, el servidor web sabe que
Código:
que quiere decir que cuando un australiano solicite una página de las nuestras, tiene que buscar por ficheros que tengan como extensión '.en2', en alguna parte del nombre del fichero.AddLanguage en-au .en2 Bien... pues lo que queda por nuestra parte es hacer un enlace simbólico que relacione un fichero con esa extensión, con el fichero en/index.html. Haremos en realidad dos enlaces simbólicos, así:
Código:
Fijarse que en la segunda línea hemos creado un fichero que contiene en su nombre todas las extensiones con las variantes de idiomas del inglés.index.html.en -> en/index.html index.html.en1.en2.en3.en4.en5.en6.en7.en8.en9.en10.en11.en12.en13 -> en/index.html El servidor web buscará por el directorio actual por un fichero que tenga 'index.html' y '.en2' en el nombre. Encontrará nuestro segundo enlace simbólico, que, finalmente, le redirige a nuestro deseado fichero en/index.html. Y ese es el fichero que se le devuelve al australiano. El primer enlace simbólico está puesto porque hay ocasiones en que las páginas hacen referencia entre sí (una página puede tener un enlace directo a index.html.en). No cuesta nada hacer un programa que crea y mantenga esos enlaces simbólicos cada vez que varía el árbol de dependencias del sitio web. Hay otras formas de hacerlo. Y también se puede variar la notación de las páginas y los enlaces entre ellas, pero lo más complicado de todo esto es mantener un orden para el servidor web y al mismo tiempo trabajar con el programa gestor de sitios. |
| |||
![]() Hola jferrero bueno entiendo algunas cosas pero tengo una bateria de preguntas.
Ok yo estab usando este metodo. Primero tenia un index.pl que me redireccionaba a una web deacuerdo al idioma de navegador y bien, x ejemplo si yo hablo español. me refirecionaba a miweb.com/index.pl?hl=es HL le puse a la variable del idioma. Y bien alli en el index.pl cargaba po rl REQUIRE 'idioma.pl' y mas abajo llamaba la funcion idioma$hl ($hl); La cual aki le enviaba a variable del idioma y una funcion llamanda: idiomaes{ ->contenidos en español } y ella me mandaba los respuestas de los botones en español de igual modo me envia en ingles o en otros idiomas. ¿mi pregunta es Esta bien esta forma? Me gustaria contactarte para que mires el problema ms de cerca necesita mucha ayua porfavor. es un proyecto educativo y espeor que sea grande. y semi-mundial. contactamne mi correo es [email protected] |