| ||||
Respuesta: Idiomas en la web, como lograrlo? un contenido tiene una id única en la DB y uno o varios id foráneos que apuntan a cada versión del contenido en otro idioma. este contenido lo puedes mostrar según el lenguaje que seleccione el usuario con un botón. de manera que si el usuario pulsa sobre la versión en inglés, una variable de sesión con valor string "english" por ejemplo puede servir como parámetro a una consulta a una BD. esa es la idea. pronto tendré que ponerme a trabajar sobre esto y esa es la idea que he planteado para solucionar este problema. saludos :)
__________________ Ayúdame a hacerlo por mi mismo. |
| ||||
Respuesta: Idiomas en la web, como lograrlo? OK , Me pudieras explicar mejor sobre esto? Entiendo lo que dices pero creo que dando esto como parámetro en la consulta no resuelvo mi problema. Por ejemplo, una noticia que actualice hoy, la tengo en la db guardada en español y si hago la consulta que dices me la mostrará en español no? Lo que quiero lograr es que te la muestre en otro idioma, es buena essa idea que das pero no se, a lo mejor es qu einterpreto mal lo que dices por eso te pido que si puedes me explique mejor, y disculpa la molestia. |
| ||||
Respuesta: Idiomas en la web, como lograrlo? es relativamente fácil. a la hora de crear cada contenido para tu web debes hacerlo en tantos idiomas como quieras tener disponibles. son versiones o réplicas de un mismo contenido. de manera que a la hora de escribir una noticia, la tienes que crear en español y en otra tabla guardas una versión en inglés, en otro campo de esa misma tabla guardas la versión en francés, ruso, etc. en esta última tabla (antes lo dije al revés, disculpa mi error) debes tener una llave foránea que contenga el id único existente en la tabla con la noticia principal en el idioma por defecto de la web, en este caso supongo que español. de manera que al hacer el código, lo que tienes que hacer es guardar qué idioma ha elegido el usuario, inglés, francés o ninguno = español en una variable de sesión. cuando el usuario vea una noticia, tú seleccionas la noticia original y en la otra tabla seleccionas el campo english, french, german, russian, etc. que el usuario haya elegido donde las id de ambas tablas sean iguales. como solo puede haber una coincidencia entonces la consulta te devolverá la versión de la noticia que tú quieres, en este caso la versión es de lenguaje, pero igualmente este sistema puede servirte para otros fines, como versiones de guardado de seguridad etc. imaginación al poder :) no puedo escribirte el código porque aquí está prohibido escribir código SQL y además no ganarías nada dándote yo mismo el código. piensa. saludos! :D
__________________ Ayúdame a hacerlo por mi mismo. |
| ||||
Respuesta: Idiomas en la web, como lograrlo? O en vez de pensar en cómo resolverlo, puedes haberte dado cuenta de ¿Es un problema común lo que yo tengo? Si es un problema poco usual, tendrás que calentarte la cabeza o pedir ayuda para resolverlo, pero si no lo es, puedes fijarte en cómo ha sido resuelto por la comunidad desarrolladora, que seguro que lo ha hecho de la mejor forma posible, o al menos, mejor que como lo podrías resolver tú por tí mismo. Y la localización de la web al idioma del usuario fue uno de los primeros problemas que afrontaron los desarrolladores. ¿Para qué pensar y crear yo un sistema de localización desde cero, pudiendo ver y aprender cómo han resuelto los profesionales del desarrollo web este contratiempo? Este problema típico se llama en inglés "Internationalization", o más brevemente, i18n. (Hay 18 letras entre la i y la n). Busca las soluciones más usadas, y quédate la que más te guste. Última edición por marlanga; 05/12/2013 a las 11:02 |
| ||||
Respuesta: Idiomas en la web, como lograrlo? Ahora si entiendo amigo, ya queda aclarada la pregunta que hacia. Ya tengo implementado el sistema del cambio de lenguaje, me funciona perfecto pero solo con contenido estático, en el caso del dinámico tenía dudas porque la mayo parte de la información la guardo en una db y esto me dificultaba a la hora de mostrar el contenido en varios idiomas. Ya veo que para poder lograrlo tendré que hacer eso especificamente. guardar en la db los artículos en varios idiomas, lo malo es que me ocuparía espacio en el servidos o me equivoco? Bueno muchas gracias por la ayuda, dejo el tema abierto para seguir compartiendo ideas en cuanto a esto, puede uq ealguien encuentre soluciones mejores. saludos |
| ||||
Respuesta: Idiomas en la web, como lograrlo? te ocuparía espacio en la BD, pero es algo inevitable porque no hay otra manera de hacerlo, en algún sitio tendrán que estar las versiones en otros idiomas del artículo original ¿no? :D espero haberte ayudado. saludos! :D
__________________ Ayúdame a hacerlo por mi mismo. |
| ||||
Respuesta: Idiomas en la web, como lograrlo? Fue de gran ayuda, ya lo implementé y funciona perfecto menos un problemita con la fecha. Explico, tengo una carpeta llamada lenguja deonde estan los archivos php(los que contienen las variables en cada lengueje mediante una $_session['lang'] ) entonces fuera de es carpeta tengo un archivo llamado funciones donde implemento las fechas de esta forma: $mes = date("n"); function mes_letra_completo($mes){ switch ($mes) { case "01": $mes_letra = "Enero"; break; case "02": $mes_letra = "Febrero"; break; case "03": $mes_letra = "Marzo"; break; case "04": $mes_letra = "Abril"; break; case "05": $mes_letra = "Mayo"; break; case "06": $mes_letra = "Junio"; break; case "07": $mes_letra = "Julio"; break; case "08": $mes_letra = "Agosto"; break; case "09": $mes_letra = "Septiembre"; break; case "10": $mes_letra = "Octubre"; break; case "11": $mes_letra = "Noviembre"; break; case "12": $mes_letra = $mes[12]; (asi es como lo tengo para probarlo y no funciona) break; } return $mes_letra; } Cuando el mes es algo cualquiera que no sea 12 el me funicona, es decir me dice el nombre del mes, pero cuando es 12 no, la variable $mes[12], es la que tengo en los archivos php dentro de la carpeta que mencioné de la siguiente forma: $mes[12]= "Diciembre"; archivo 1.php $mes[12]= "December"; archivo 2.php En fin mi index.php llama a los archivos funciones.php por required, y al index que de encuentra dentro de la carpeta lenguaje de la misma forma, todo hasta el moemto esta bien menos esta parte, cuando le paso esta variable a esta funcion no me sirve entienden? |
| ||||
Respuesta: Idiomas en la web, como lograrlo? no entiendo cómo es que usas en date el parámetro n si resulta que es la representación numérica de un mes SIN CERO DELANTE. deberías utilizar el parámetro m. tampoco entiendo por qué en todos los meses igualas enero, febrero, etc. y en el mes de diciembre tienes esto
Código PHP:
Ver original ¿no sería esto?
Código PHP:
Ver original :)
__________________ Ayúdame a hacerlo por mi mismo. |
| ||||
Respuesta: Idiomas en la web, como lograrlo? si seria eso en ves de $mes[12]; Lo que pasa es que $mes[12]; es una variable que tengo en un archivo php donde $mes[12] = "Diciembre"; //en el archivo español $mes[12] = "December"; //en el archivo ingles lo que tengo que lograr es precisamente esto $mes_letra = $mes[12]; para que la funcion me devuelba el mes el el idioma que quiero, comprende? |
| ||||
Respuesta: Idiomas en la web, como lograrlo? Explico mejor, en mi index del sitio tengo lo siguiente: require_once("languages/index.php"); require_once("funciones.php"); languaje es la carpeta que contiene los archivos php de los lenguajes, consta de tres: el index.php, conf_ES.php y conf_EN.php dentro del index aarece esto: <?php if(@$_GET['l']){ $_SESSION['lang'] = $_GET['l']; } if(@$_SESSION['lang'] == ""){ $_SESSION['lang'] = "ES"; } include("config_".$_SESSION['lang'].".php"); ?> entonces dentro de las conf_?.php declaro las variables de esta forma: $nombre_variable[0]= "valor"; (el valor lo doy en dependencia del lenguaje) $nombre_variable[1]= "valor variable 1"; etc... en dependecnia de las variables... entonces desde mi index las llamo de la siguiente manera: <?php echo $nombre_variable[0]; ?> (esto funciona perfecto) Ahora es donde entra la página funciones.php que es la que contiene la funcion de la fecha, con esa funcion puedo mostrar el mes en formato de texto completo pero solo en español, lo que quiero es que al cambial el lenguaje tambien lo pueda ver en ingles |
| ||||
Respuesta: Idiomas en la web, como lograrlo? Para las fechas no es necesario que utilices la traduccion, php dispone de las funciones ya en su core. Por ejemplo
Código PHP:
pero si tu server admite la opcion de setlocaleVer original
Código PHP:
Como te dijo marlanga, mira los problemas y encuentra las soluciones.Ver original De este modo que te digo, no tendras que cargar nada mas que lo indispensable en la base de datos. Pero no la cargues con datos inecesarios. Porque dependiendo de cuanta informacion agregues a la DB tendras una cantidad de datos desmesurada. Otra opcion que tienes, si no quieres usar la DB y la traduccion no la quieres exacta, puedes usar el traductor de google mediante file_get_contents y asi mostrar el contenido en el idioma especificado y no usar tu hosting para la traduccion. Última edición por Dalam; 06/12/2013 a las 12:38 |
| ||||
Respuesta: Idiomas en la web, como lograrlo? creo que aquí hay mezclados varios temas y eso no conduce a nada. empezando por tu problema con las fechas: no puedes poner en el case de diciembre que la variable $mes pueda valer 12 pero luego le pases el string Diciembre porque entonces nunca encontrará dicha igualdad. tienes un problema estructural en el código: no puedes pasarles números enteros y de repente un array. eso hace que tu código sea muy limitado en tanto que: -para llegar al mes de diciembre $mes tendrá que ser un array. -si ese array no fue tratado antes del switch case entonces no llegará nunca al mes que esperas. -en otro ambiente donde tengas que utilizar la función para los meses tendrás que adaptar tu código de manera que para 11 meses pases valores enteros y para diciembre un array. esas tres cosas te pueden dar muchísimos dolores de cabeza. el formato en inglés no es el formato en español. en eso estamos de acuerdo. si estás trabajando con código funcional y no orientado a objetos, entonces tendrás que crear dos funciones distintas, una para cada formato. Dalam, lo que dijo marlanga ha quedado probado que leonaryoel no lo necesita. ¿para qué tener código de más utilizando una librería de otro programador que va a contener funcionalidades que él no necesita haciendo el directorio de la web más pesado e invirtiendo tiempo en aprender sobre el código adquirido? lamentablemente hoy día los traductores disponibles no sirven en muchos ámbitos. no acaparan lenguajes técnicos y la traslación (no la traducción literal) de un idioma a otro en muchísimos casos es tremendamente pobre. por eso esta medida sería más bien para presentar un contenido que no sea relevante y puede que el resultado logre más impresiones negativas que positivas hacia el usuario final. sea google, yahoo, bing, el que sea, ninguno sirve para dicho fin si se quiere tener un contenido bien presentado, como debe ser.
__________________ Ayúdame a hacerlo por mi mismo. |
| ||||
Respuesta: Idiomas en la web, como lograrlo? No suelo dar codigo pero esto le vendra bien a la gente que tenga problemas con las traducciones.
Código PHP:
Como veras es facil de usar para traducir cualquier texto.Ver original No hay que abusar de esta funcion, pues cada vez que se instancia realiza una peticion GET , y si se usa mucho el tiempo de ejecucion sera muy prolongado. Tendrias que mirar la lista de idiomas que tiene google translate para que no cometas errores a la hora de definir el idioma que quieres recibir. A quien le sea util este codigo que me de +1 si quiere. P.D. : Esta funcion no chequea si son recibidos datos de translate, tendrias que implementarlos para que no te diera error si no se reciben datos o si los datos obtenidos tienen un formato distinto al actual. Última edición por Dalam; 06/12/2013 a las 13:37 |
| ||||
Respuesta: Idiomas en la web, como lograrlo? Cita: Parece ser que no lo has entendido bien del todo.
Iniciado por guardarmicorreo Dalam, lo que dijo marlanga ha quedado probado que leonaryoel no lo necesita. ¿para qué tener código de más utilizando una librería de otro programador que va a contener funcionalidades que él no necesita haciendo el directorio de la web más pesado e invirtiendo tiempo en aprender sobre el código adquirido? I18n no es código. Es una idea para resolver el problema de la localización de webs tanto a nivel de datos estáticos como de datos dinámicos. Te dicen cuáles son los pasos necesarios y comunes para gestionar los idiomas de la mejor forma posible. y Esto es así porque miles de programadores durante años han ido mejorando y puliendo la idea con su experiencia. Por otro lado, varios de esos pasos se pueden "generalizar", así que programadores desinteresados han creado código genérico para que cualquiera que quiera tener una web multilenguaje, no tenga que escribir siempre las mismas rutinas una y otra vez. Incluso el core de PHP tiene su propio código de i18n, se llama intl. http://es1.php.net/intl Nótese la ironía de que critiques el uso de códigos ajenos porque quizás no se utilicen todas sus funciones, cuando tú no conoces ni las posibilidades de PHP a secas. El otro consejo que te dan es que lo hagas todo desde cero, con ideas poco sopesadas. Parece como si fueras reparando con parches los problemas conforme surgen. Por si no fuera poco, probablemente tengas poca experiencia de desarrollo web, o peor, de programación general. El cóctel perfecto para hacer una balsa de cañas que apenas flota cuando lo que buscabas era un petrolero. Ya lo he dicho en otros hilos, saber mover las fichas del ajedrez, no es saber jugar al ajedrez. Conocer estructuras condicionales y crear clases, es poco más que saber mover las piezas del ajedrez, que es lo fácil. Última edición por marlanga; 06/12/2013 a las 14:04 |
| ||||
Respuesta: Idiomas en la web, como lograrlo? guardarmi correo, como a dicho marlanga i18n es una forma de programar, son una serie de estandares que han ido evolucionando a lo largo del tiempo, que ni tu ni yo ni todos los programadores de forosdelweb juntos podriamos hacer en poco tiempo. Yo si se lo que le dije, y me sigo reafirmando a lo que e dicho, si lees mal el castellano ya no te se decir como lees codigo, pero le e dicho que haga lo que le dijeron, que busque soluciones ya existentes a sus problemas, puesto que seguramente ya los hallan tenido antes programadores mas experimentados. Y te digo otra cosa que me llevo dando cuenta un tiempo, y es que marlanga hay donde le ves 'El zagalico" te podria enseñar bastantes cosas que ni siquiera creo que podrias llegar a pensar en la vida. |
| ||||
Respuesta: Idiomas en la web, como lograrlo? Harás que me ponga rojo, dalam. PD. Para añadir mas chicha a este mensaje, aprovecho para poner este grandísimo video que no tiene nada que ver,pero que aún hace que me parta el culo de risa. Aparezco en él. http://www.youtube.com/watch?v=NCwBkNgPZFQ |
| ||||
Respuesta: Idiomas en la web, como lograrlo? en fin, parece ser que yo no se leer castellano, tampoco escribirlo. lo siguiente que responderé es porque ya me habéis faltado al respeto, siendo que en ningún momento os lo he faltado a vosotros, pero las cosas claras, que una cosa es ser neutro y otra distinta es dejar que cualquiera me pisotee. Si bien dije Cita: Dalam, lo que dijo marlanga ha quedado probado que leonaryoel no lo necesita. Cita: ha quedado probado que leonaryoel no lo necesita. Cita: leonaryoel no lo necesita. Cita: decir que no lo necesita, no es lo mismo que decir está equivocado, es un error, no le hagas caso.no lo necesita. pero las ganas de el ad-hominem y de personalizar un hilo enfocándolo a increpar a una persona luciendo chapas de "dios de la programación" es más importante que encontrar y ayudar a alguien con un problema: tarea de este foro. si tú Dalam consideras a marlanga un pro, un tío genial, díselo a él por privado. es algo que a nadie le importa y es algo totalmente off-topic. personalmente, he tratado de ayudar a esta persona. para eso no hace falta venir aquí a restregar que se es o no es un dios de la programación. da igual ser dicho dios si lo primero que se aporta es una síntesis de la wikipedia que ni va ni viene. si bien dijistes marlanga Cita: pues ahora no salgas por los cerros de úbeda (que ni tiene cerros...).¿Para qué pensar y crear yo un sistema de localización desde cero, pudiendo ver y aprender cómo han resuelto los profesionales del desarrollo web este contratiempo? fijarse en cómo han resuelto este problema otros programadores sin pensar y crear un sistema de localización desde cero es utilizar código de otros, ¿sí o no? ¿o es que las librerías de PHP al respecto son mágicas y lo hacen todo solas y fin del problema? ya me dirás qué tiene que ver tener una entrada en una web en diferentes idiomas con tener un sistema donde las monedas, horas, pesos, medidas, etc. estén presentadas acorde con el idioma establecido por el usuario final. la entrada no la va a traducir PHP, si así lo hiciera ya está demostrado desde hace tiempo y hoy se sigue cumpliendo que ningún traductor hace la traslación cultural de un idioma a otro de manera efectiva. no es lo mismo decir morcilla de avena que decir black pudding (morcilla gigante hecha en irlanda). eso PHP no lo va a traducir haciendo la traslación, tampoco google, bing, yahoo, ni normas generales de programación, patrones, convenios, estándares, licencias ni nada por el estilo. esta persona preguntó por Cita: la noticia. la noticia.Mi web tiene la opción de varios idiomas, tengo una página donde declaro las variebles y le doy los valores en los diferentes idiomas, es decir una página para cada idioma. El problema lo tengo a la hora de actualizarla, le hice un sistema administrativo para poder actualizar las noticias las cuales se guardan en una bd en mysql, pero no tengo ni la más remota idea de como hacer para que la noticia se vea en varios idiomas, alguin me puede ayudar??? ¿entendeis lo que es una noticia en otro idioma donde poco o nada tiene que ver con mostrar un simple formato de fecha y hora específico y mostrar por defecto la página web en el idioma del lector según geolocalización? él quiere mostrar una noticia en varios idiomas y preguntó por cómo hacerlo. ni con todas las funciones de PHP podríais lograr una traducción limpia. eso se hace escribiendo cada noticia en cada idioma pertinente. sí, podría procesar cada noticia en busca de fechas, medidas y demás para convertirlo al idioma correspondiente, pero ¿qué pasa con el resto de la noticia, lo obviamos? ¿entendéis que él quería saber cómo se hace para poder mostrarlo? eso se hace con una consulta a la BD y trayendo el artículo. que es lo que le he dicho y le he especificado cómo hacerlo, en base a una idea. y ¿sabéis qué? le funciona y parece que es lo que quería. si lo entendéis, entonces también entendéis que todo lo que habéis dicho en vuestros dos últimos post no viene a cuento del hilo para nada y no aportan nada. entonces me pregunto ¿participáis para aportar o para presumir de medallas de dioses de la programación?
__________________ Ayúdame a hacerlo por mi mismo. |
| ||||
Respuesta: Idiomas en la web, como lograrlo? Cita: Intentando aportar algo, aunque en este foro se está poniendo difícil ultimamente...
Iniciado por leonaryoel Mi web tiene la opción de varios idiomas, tengo una página donde declaro las variebles y le doy los valores en los diferentes idiomas, es decir una página para cada idioma. El problema lo tengo a la hora de actualizarla, le hice un sistema administrativo para poder actualizar las noticias las cuales se guardan en una bd en mysql, pero no tengo ni la más remota idea de como hacer para que la noticia se vea en varios idiomas, alguin me puede ayudar??? En principio, la opción de guardarmicorreo es correcta: Cita: Pero hay un pequeño matiz que puede ser una ventaja, a partir de la frase:
Iniciado por guardarmicorreo un contenido tiene una id única en la DB y uno o varios id foráneos que apuntan a cada versión del contenido en otro idioma. este contenido lo puedes mostrar según el lenguaje que seleccione el usuario con un botón. de manera que si el usuario pulsa sobre la versión en inglés, una variable de sesión con valor string "english" por ejemplo puede servir como parámetro a una consulta a una BD. Cita: El anterior, es 1 de al menos 2 posibles casos:
Iniciado por guardarmicorreo apuntan a cada versión del contenido en otro idioma. este contenido lo puedes mostrar según el lenguaje que seleccione el usuario con un botón - Todas las noticias (contenidos) *tienen* que estar traducidas en todos los idiomas de la web.Existe un id de contenido, que tiene traducciones. Un ejemplo de esto sería el manual de PHP.Cada página de manual tiene un id, y en otra tabla existen versiones en cada idioma de esa página de manual. Es posible que tú quieras navegar de la versión en castellano, a la versión en inglés de ese mismo *contenido*. Pero hay otra opción: - Las noticias (contenidos) no tienen por qué estar traducidas en todos los idiomas.No puedes navegar de una versión en castellano a una versión en inglés de ese mismo contenido. Pero , lo que ocurre, es que éste caso es común. Si lo que tienes son noticias, el visitante no va a navegar de la versión en castellano a la versión en inglés de la noticia; el visitante usará la versión en castellano o en inglés de *tu web* al completo. Entonces, es posible que tengas simplemente noticias en castellano, y noticias en inglés.Lo que ocurre es que las noticias en inglés, son traducciones de las noticias en castellano...o no. En el primer caso, tienes 1 tabla llamada "noticias", que tiene un campo "id", y otra tabla "noticiasLenguaje" que tiene un id_noticia, id_lenguaje, textoNoticia. En el segundo caso, no necesitas la tabla "noticias".Con "noticiasLenguaje" es suficiente.Pero la noticia "A" escrita en español, y la noticia "A" escrita en inglés, no tienen relación ninguna entre sí.Son 2 noticias independientes. El primer modelo te permite identificar qué noticias no han sido traducidas a todos los lenguajes. El segundo te hace más fácil tener contenidos en un lenguaje, que no tiene sentido que sean traducidos a otros lenguajes. (esto crearía "excepciones" en el primer modelo, que tendrías que distinguir de los casos en los que realmente faltan traducciones).Ejemplos de este tipo de noticias (o contenidos), son promociones en sitios de e-commerce que sólo existen para un país (cuando es igualable país a idioma, como italiano-Italia) |
| ||||
Respuesta: Idiomas en la web, como lograrlo? I18n no sólo sirve para formatear las monedas y las fechas; esa casuística también la cubre, por supuesto, si no el sistema sería un cagarro. Lo que le interesaba conocer es cómo crear la estructura para tener la web en varios idiomas el texto estático y el texto dinámico de una web de la forma más sencilla posible. Usar un traductor online para traducir la web no tiene relación alguna con i18n; sólo fue una alternativa rápida para salir del paso que propuso dalam para traducir artículos sin guardar traducciones en la BD; y por eso no insistió en ella. No puedes criticar algo si tu primera referencia a i18n ha sido a través de la definición general que da la wikipedia. Si mira cómo lo hacen los demás, aunque no use todas sus características, puede aprender cosas que quizás le sirvan más adelante, además de resolver su problema actual. Y frases que no puedo replicar, porque no las entiendo, como ésta:
Código BASH:
Ver original Ya sabemos que dasthras jamás recomienda seguir buenas prácticas de desarrollo web si son populares; si hubiera considerado buena idea leer sobre cómo adaptar i18n o l10n a PHP me hubera caído del caballo de la sorpresa. Y lo más irónico es que algunos de sus consejos son resueltos igual con i18n, como no podía ser de otra forma (ya te dije que i18n son ideas sencillas y pulidas que mucha gente puede llegar a adaptar en sus desarrollos incluso sin saberlo). Última edición por marlanga; 07/12/2013 a las 02:31 |
| ||||
Respuesta: Idiomas en la web, como lograrlo? Cita: Aiiiiinsss...Marlanga!! Que grande la tienes!! Más que ninguno de este foro!! Qué listo y que requetelisto que eres, hijodemivida. Gracias por volver a aportar en este foro, que cualquier cosa uno se pregunte, está en internet! que ya está hecho! Qué haríamos sin tí!Yo había oído algo de Google, pero, hasta que lo oí de tus labios (lo leí de tus letras), no había pensado en ello! Tío, tienes que sentirte taaan bien por ir enmendandole la plana a tooodo el que se te cruza por el foro, y eso, sin echar en falta las neuronas que necesitarías para decir algo relacionado con los posts!! Jo, tio, qué grande eres Sigue así, me gusta tu programa, y lo sigo siempre. Me das un autógrafo o algo? Al iniciador del post: El problema de la traducción de contenidos *propios*, y el problema de las peculiaridades propias de cada lenguaje, no es el mismo. Como ejemplo, problemas como los formatos de fecha, los tienes muy posiblemente sin necesidad de que tu web necesite existir en varios idiomas.Bases de datos y servicios web son dos cosas que posiblemente te estén dando datos formateados en las peculiaridades propias del lenguaje inglés, y que tú quieres mostrar en, digamos, castellano.Aunque tu web sólo existiera en castellano, ya tienes problemas propios de i18n. Otra cosa es que PHP, siendo el lenguaje que es, tenga 200 formas de hacer lo mismo, "gracias" a los cambios de rumbo que le han dado al lenguaje.Verás miles de ejemplos en internet de number_format (más antiguo, más simple), y muy pocos de las clases de internacionalización, añadidos más tarde, y, en muchos casos, ni documentadas. Según ciertas filosofías, de usar lo más popular, esto llevaría a que usaras sin dudar number_format para este tipo de problemas, pero, reaccionario que soy, te digo que lo antes que te acostumbres a usar las clases de i18n, mejor.Pero, repito, esto no tiene por qué tener que ver con webs en varios idiomas. El problema de traducir una web tiene muchas capas, desde la más alta (qué quieres, un sitio web traducido, o, versiones de una misma web para cada idioma?), hasta la más baja (cuando creas un timestamp de un campo, qué fecha es la que realmente necesitas?La local?La del servidor?).Tienes que tener estrategias para cada problema, y no mezclarlos si es posible. Marlanga te va a dar un link donde PHP ya ha resuelto todo esto.Básicamente, le pasas toda tu web como parámetro a una función aprobada por la "comunidad de usuarios", y te retorna un objeto WebTraducida.Como es un problema habitual, ya existen funciones que lo hacen, como bien dicen. No hay nada como fiarse de una comunidad tan reputada como la de PHP, que ya nos da soluciones. Última edición por dashtrash; 07/12/2013 a las 07:22 |
| ||||
Respuesta: Idiomas en la web, como lograrlo? Creo que vale ya de que hos deis puntaditas, por que os estais comportando como niños. Volviendo al tema. Lo bueno que presenta php esque es un lenguaje que permite hacer el mismo resultado, no obstante al leer los problemas y las soluciones que se le han planteado a otros programadores, te permite documentarte como te puse mas arriba, no el implementar las clases, o codigo ya escrito, puesto que cada site que se hace necesita unos determinados requisitos, aunque halla veces que sea necesario usar codigo de otro programador, por que digo yo, ¿quien no a utilizado un wordpress o algun framework alguna vez?. Si alguien a intentado hacer algun blog sin basarse en un sistema ya prefrabricado, se habra dado cuenta de que es practicamente imposible, o mejor dicho, la perdida de tiempo es mas grande que la meritocracia de hacerlo uno mismo. Lo unico que deberias de tener en cuenta, es que si tienes varios codigos, testees cual es el que menos recursos se come de tu servidor y la rapidez con la que lo hace, lo pones en una balanza y decides cual es la apropiada para el problema que tengas en ese momento. Puesto que todos estamos hablando con soluciones a problemas que se nos presentaron en un determinado momento. Cuando pusiste el problema de las fechas un poco mas arriba de mi primera intervencion, ponias fechas, para lo cual en vez de utilizar tablas te puse que podrias usar ese codigo, pues a mi entender para las fechas es una opcion, y tambien te recalque que solo la podrias implementar si tu hosting o server permitia el uso de setlocale, y este mismo el primer parametro te permite definir cuales son las funciones afectadas por el mismo, pudiendo decidir cuales quisieras que afectara. Luego tambien te puse que si la traduccion exacta no fuera un problema que podias usar el traductor de google con la funcion que te pase. Con todo esto y lo que ya te han mencionado todas las personas en este post, deberias documentarte sobre todas estas opciones que te dimos y como ya te e dicho mirar cual se adapta mejor a tus necesidades. Si aun asi no te vale ninguna de ellas, tienes multitud mas para poder hacerlo. Espero que nuestros malos dias no te desalenten y sobre todo que aunque te aconsejemos no te cierres a esas soluciones y que intentes sacar tus propias soluciones, por que asi es como todos hemos aprendido, COMETIENDO ERRORES. Un saludo Última edición por Dalam; 07/12/2013 a las 09:05 |
| ||||
Respuesta: Idiomas en la web, como lograrlo? es que, Dalam y marlanga habéis respondido con cosas que a leonaryoel no le sirven para lo que está haciendo. una internacionalización es presentar la web en diferentes idiomas. especifiquemos eso de presentar la web: menú principal, titles, nombres de botones, semántica para personas discapacitadas, todo lo que pertenece a la interfaz del usuario final. para eso la internacionalización es estupenda. detrás de la internacionalización te puedes encontrar con un código específico para trabajar con los diferentes idiomas: fechas, horas, pesos, medidas... que te resuelven la problemática de extraer una fecha-hora Y-m-d H-i-s (formato estado-unidense) a un formato español. extraer una medida en yardas, libras, onzas o @ al sistema internacional de medidas: metros, segundos, metros cúbicos, etc. la internacionalización resuelve en parte lo que es el contenido en varios idiomas: no es lo mismo presentar de izquierda a derecha un texto en chino, algo erróneo, que de arriba a abajo y en varias columnas, la manera correcta. para eso la internacionalización es muy útil, es genial. ahora, ¿la internacionalización de qué sirve para querer presentar contenido ya traducido? ¿hay algo que sustituya una traducción limpia del inglés al castellano y viceversa? ¿algún estándar, alguna buena práctica, algo que sustituya el hecho de tener un contenido duplicado tantas veces como idiomas quieras tener soportados en la web o cualquier otra aplicación? bueno, de eso último era de lo que trataba este post. leonaryoel quería, y lo hizo, un sistema para que el usuario leyera entradas en el idioma escogido por el usuario. así de simple. y habéis metido la internacionalización, eso distrae más que soluciona. y no soluciona porque si me voy a intl de PHP y observo la clase IntlTimeZone::fromDateTimeZone en un recuadro bien grande dice Cita: y así con todas o casi todas las clases de intl. Advertencia Esta función no está documentada actualmente, solamente se encuentra disponible la lista de parámetros. si leonaryoel en sus últimas entradas quería presentar una fecha con el mes escrito en español, difícilmente lo va a conseguir con unas librerías que no están documentadas y ni se sabe si son capaces de presentar fechas con el mes escrito en español. y si me voy a date() veo que la representación textual de un mes es en inglés Cita: así que lo tendrá que hacer él.F Una representación textual completa de un mes, como January o March January hasta December cosa que veo normal y no entiendo por qué remitir a esta persona a intl, i18n y demás cuando le podrían resolver el problema poco o nada. luego han venido los "mal entendidos" (yo lo he entendido todo muy bien...) y esto ha sido la casa de la tía bernarda. puedo llegar a entender que vuestras intenciones, sobre todo las tuyas Dalam, fueran buenas, pero no sirvieron, aunque es otra manera de ver la presentación de traducciones de contenido. y ojalá algún día se pueda presentar contenido sin tener replicados los contenidos ocupando espacio en la BD, pero de momento es la única manera de presentar el contenido fielmente traducido y sin cabida a dicotomías, mal entendidos, ambigüedades y errores imperdonables. saludos.
__________________ Ayúdame a hacerlo por mi mismo. |
| ||||
Respuesta: Idiomas en la web, como lograrlo? Bueno, siguiendo con el tema que te dio dashtrash lo que podrias hacer es mirar cual de los idiomas es el que tienes completo, y crear una funcion que mire si esta disponible la traduccion en el idioma que estas mostrando la pagina y si no esta disponible la traduccion que muestre la noticia en el idioma por defecto. De esta forma no deberias de tener problemas con que intente mostrar una notia y te de un error el sistema por que no este definida. Otra cosa que no hemos mencionado ninguno y que deberias de tener en cuenta si no lo has hecho ya es el charset que has definido para la pagina, para evitar asi los tipicos interrogantes que aparecen a la otra de traducciones. |
| ||||
Respuesta: Idiomas en la web, como lograrlo? volviendo a lo de las fechas que pusiste, una solucion podria ser usando arrays para ello, definiendo un id en tu tabla de MySQL con la misma estructura o con tu archivo de configuracion. Te dejo aqui un codigo para que veas el uso con arrays o con tu archivo
Código PHP:
Ver original
Código PHP:
Ver original Última edición por Dalam; 07/12/2013 a las 10:06 |
| ||||
Respuesta: Idiomas en la web, como lograrlo? Cita: Como decía antes, el soporte de varios idiomas en la web, tiene muchos ángulos.En el ejemplo de Dalam, está gestionando características propias del idioma (uno de los problemas) , con técnicas (ficheros de "recursos") de gestión de constantes de código (otro problema no necesariamente igual).
Iniciado por Dalam
Código PHP:
Ver original Una lista rápida de cosas que hay que gestionar: - Contenido textual dinámico (noticias) - Contenido textual estático (páginas HTML estáticas) - Datos constantes ("propiedades") existentes en bases de datos/XML/etc:(ej, Nombres de países) - Peculiaridades del lenguaje (moneda, fecha, dirección de escritura,collations) y temas relacionados con éstos (encoding). - Contenido multimedia estático y generado (imágenes, vídeos). - Metadata de contenidos multimeda (alts, titles,etc), usado para SEO, accesibilidad,etc - Textos usados en las páginas (etiquetas de formularios, títulos,etc) - Textos generados desde código (mensajes de error), tanto por el lado del servidor (php) como del lado del cliente (javascript).Parametrización de los mensajes. - Texto o contenido obtenido de fuentes externas (web services) - Texto no mostrado, relacionado con SEO (description, keywords) - Urls existentes en el sitio web, para la creación de urls amigables y SEO.Incluye gestión de subdominios. - Adecuación a los requisitos legales existentes en países con leyes que pueden afectar a la visualización o lógica de tu web.Como ejemplos, normativa alemana sobre e-commerce, normativa europea con respecto a cookies. - Cuestiones de diseño, relacionados con el distinto tamaño u orientación de textos en distintos idiomas. - Cuestiones de rendimiento. - Cuestiones de cachés de páginas. La solución a la mayor parte de los puntos anteriores, suele depender también (aunque no debería) de la pregunta "Quién va a hacer las traducciones?".Así que es mejor buscar una forma de gestionar las traducciones que esté en un formato fácil de importar, modificar y guardar, directamente, o a través de un cms.También al parecer PHP tiene un par de clases no documentadas que solucionan todo eso, o eso dicen. Y ahi es donde vuelvo al ejemplo que ha puesto Dalam.El formato de los arrays no debe ser cualquiera.Si cosas como los meses del año se van a meter en un fichero de "traducciones", mejor que sea un formato fácil de gestionar, y si empiezas a usar arrays "sueltos" ($days,$months), posiblemente termines con problemas.Una solución simple es usar definiciones del tipo constante=>valor. Cita: o, más simple aún, tan sólo parejas de clave=>valor, aunque esto tiene el peligro de los sinónimos: una palabra, según el contexto, puede tener más de un significado en otro idioma.Las claves deben estar suficientemente contextualizadas (por eso el prefijo).$lang['es']=array( "LOCALE_MONTH_January"=>"Enero", "LOCALE_MONTH_February"=>"...." Una cosa interesante a notar en la solución de Dalam, es lo siguiente: Cita: Ese formato de fecha, forma parte de las características del idioma.Debería estar junto con los arrays de traducciones.
Código PHP:
Ver original Última edición por dashtrash; 07/12/2013 a las 18:44 |
| ||||
Respuesta: Idiomas en la web, como lograrlo? Esta opción me convence un poco más, ya estaba tratando de implementar lo mismo que hice con las noticias, es decir que te la guarde enn la bd en los dos idiomas, cosas de tontos no jajajaja, bueno pero revisaré esto tall vez lo pruebe y me de resultado, gracias chicos y portence bien jajajaja |
Etiquetas: |