[duda]webs con varios idiomas

cracking

wenas, pues el tema es simple, todos hemos visto alguna vez la tipica web, q tiene sus banderitas de los idiomas, q segun la banderita q pulsemos (esto es lo de menos XD) pues nos sale la web en un idioma u otro.. me he puesto a pensar, y la verdad esq no se me ocurre cómo hacer esto, sin que sea un trabajo de chinos claro...

alguna idea? q es lo q se suele hacer en estos casos? trabajando con estilos? nose, la mecánica un poco de esto? saludos y gracias

Soltrac

Generalmente, tienes unas variables con las frases en varios idiomas q cargas dependiendo del idioma cargado.

P ej....imaginate un mensajes.ES.inc y un mensajes.EN.inc que será el q incluyas dependiendo del idioma q quieres q se cargue.

cracking

jum cierto wena idea, alguna mas? gracias soltrac

SeiYa

Esa es la mejor idea, otra cosa es comprar un producto que vende mi empresa pero que claro, es carísimo y es para empresas que tienen 1500 páginas repletas de texto, así que nada XD

B

Yo he utilizado lo que dice #2 y es bastante comodo...

cracking

ok gracias es wena idea en verdad y comoda, muchas gracias

bLaCkH0Le

asi es como se hace en oscommerce y va de maravilla.

cabron

Según el número de cosas que quieras traducir y en cuantos sitios, otra opción es tener un fichero con todas las frases de cada idioma, y cargar uno u otro según un código de idioma, me explico, el contenido del fichero podría ser una cosa así:

[es-01]

Productos
Comprar
Carro de compra

[eng-02]

Products
Buy
Shopping Cart

[fran-03]

Les productés
gastar dineré
Carré de la compré

Etc

Al cargar la página, tienes una función a la que le pasas el código de idioma, y que te cargue una estructura de datos con las frases en el idioma que sea.

Después en la página, nunca pintas texto literal directamente, usas siempre los datos donde se cargan las frases.

Luego para añadir futuros idiomas, no tienes que cambiar nada, solo añadir un código más al fichero, y la traducción de las frases en el nuevo idioma.

El fichero y el formato es un ejemplo, lo puedes complicar todo lo que quieras, desde hacerlo con xml, hasta usar una base de datos.

SeiYa

Cabrón! (de mierda XD) así es como han dicho me parece.

Yo en un curro, me tocó de machaca de cambiar toooooooodos los textos de unas cuantas páginas (ordenadas como el culo) y sustituirles por buscaetiqueta(numero); donde numero era la línea del nuevo documento de texto donde estaban metidos con el formato:

.#.numero.#.texto

Y en función del idioma cargaba una lista u otra.

De todos modos, para páginas pequeñas tiraría de doble contenido por eso de ahorrar cargas a la BBDD.

neo-ns

Para paginas pequeñas usa una BD si es una web pequeña no tendras ningun problema con la bd.

http://bixus8.es/ <- no esta acabada!

Yo tengo el mismo texto en los 2 idiomas en la bd pero diferenciando con un SET el idioma y entonces me carga uno u otro! Y para el flash imágenes y eso sigo una serie de nombres en las imágenes flash para que todo tenga el mismo nombre!

Mi sistema:

$idioma = $_POST['idioma'];

if($idioma != ''){$_SESSION['idioma'] = $idioma;}

else{if($SESSION['idioma'] == ''){if($idioma==''){$idioma='cat'; $SESSION['idioma'] = $idioma;}}

else{$idioma = $_SESSION['idioma'];}}

por ejemplo para las imagenes: "title" => $var.$idioma.'.png'

yEnS

Utiliza un archivo .php para cada idioma con las variables con su mismo nombre, y eso junto con un switch segun el idioma en la sesion será más que suficiente.

Almacenar textos estáticos en una base de datos es perder recursos innecesariamente.

Ejemplo:

es.php
uk.php

y en ambos tener variables rollo:

$lang_account = "Cuenta";
$lang_account = "Account";

Sustituyes en el archivo que sea, metes el script que toque con un require_once y palante

neo-ns

textos estáticos en una BD claro que no! dinámicos si!

Si no siempre puedes usar plantillas php, yo para la mía tengo plantilla y en funcion del idioma carga unos archivos acabados en loquesea_es.extensión o loquesea_cat. o en o lo que quieres referente al idioma y tirando y eso en 5m lo tienes echo :)

Te creas un php, haces los define los incluyes y tirando si si no funciones ;)

K

$phrase[principal] = Principal (ESP.php)
$phrase[principal] = Home (ENG.php)

etc

<a href="">$phrase[principal]</a>

neo-ns

no esta mal tampoco usar un array!

ViPeRDaRk

aunque esto ya está respondido, añadir que esto se llama i18n y hay varias formas de hacerlo (por si quieres buscar más info). en php hay frameworks que lo hacen, por ejemplo el zend framework que además es opensource.

saludos

Usuarios habituales

  • ViPeRDaRk
  • neo-ns
  • yEnS
  • SeiYa
  • cabron
  • cracking
  • Soltrac