Hola! Que alegría dar ver correos con código fuente, temas de traducción, problemas y soluciones ... gracias MD. El sáb, 18-10-2008 a las 04:57 +0200, MD or MD escribió:
Vale usando la táctica de prueba y error, he llegado a ver un poco el comportamiento del gettext (que supongo que vendrá de manera critica en la documentación en gnu.org), el mamoncete de el le gusta la var de entorno (ahora si lo recorde xD) $LANG bien maquetadita y cumpliendo estándares (que algo leído en la wikipedia de estos mirando sobre UTF-8) 2letrasIdioma_2letrasPais.codificacion . Es decir que no es "en_UK.UTF-8" si no "en_GB.UTF-8" al igual que no puede ser "es_KK.UTF-8" porque son combinaciones no reconocidas ni UK ni KK sino la oficial GB, es decir hay que mirar el /usr/share/locale/ para ver cual es el correcto ( a no ser que se sepa de memoria) , lo de utf-8 no se que mas puede tragar salvo UTF8 todo junto (casualidad me salio por error) pero "es_ES.pepito" no traga, pero en principio se supone que en un futuro UTF-8 reinara así que para que preocuparnos. Todo esto lo he hecho renombrado y exportando $LANG en plan: mv locale/es_ES locale/en_GB export $LANG=en_GB ... así con varias combinaciones hasta que descubrí los deseos del gettext. Otra cosa que me olía y que comprobé insitu es que puedes tener el directorio es a secas locale/es/ y después le das var a $LANG es_AR.UTF-8 o es_ES.UTF-8 que si no lo encuentra tirada del .mo de locale/es/ . Así que bueno ya me autorespondido ;) de mi duda, y ya de paso he dejado la solución...empírica por supuesto de esta, por si alguien se atasca con lo mismo o si el google u otro le da por indexar el hilo en sus resultado...que por cierto últimamente en las búsquedas del google salen pocos enlaces a hilos de listas de correo archivadas en web con lo útiles que eran estos resultados. Y si alguno quiere aclarar y darle quitarle la cosa empírica a la solución dándonos los porques técnicos y tal pues encantado. Saludos. El día 18 de octubre de 2008 4:15, MD or MD <tres 14159 gmail com> escribió:Bueno algo he avanzado aunque no acaba de funcionar correctamente. Con el siguiente codigo fuente: #include <stdio.h> #include <libintl.h> #include <locale.h> #define _(string) gettext(string) int main(void) { setlocale(LC_ALL,""); bindtextdomain("hola","./locale/"); textdomain("hola"); printf(_("Hello World\n")); return 0; } Que se diferencia del anterior en que la ruta es relativa. Y siguiendo el proceso de siempre: xgettext -k_ hola.c -o hola.po poedit hola.po metiendo como cadena traducida "TRADUCIDA\n" mas claro agua ;) . Pero ahora llevando el archivo hola.mo a ./locale/es_ES/LC_MESSAGES/ funciona. ¿Parece que el problema ha terminado no? Pues si renombro el directorio de locale es_ES por en_UK y hago un env LANG=en_UK ./hola falla y muestra el helloword de siempre. ¿Porque no lo se, voy a ver si estudio mas el tema? Pa' mi que ahora esta en el tema de las variables de globales/ambiente (environment var en ingles...¿pero en español?) voy a ver si hago pruebas. Saludos. El día 17 de octubre de 2008 0:49, MD or MD <tres 14159 gmail com> escribió:Buenas noches. Llevo varios días en mis tiempos libres trasteando con el código fuente de http://nesqi.homeip.net/hexxagon/ y aunque el juego es imposible de ganar al ordenador, es bastante divertido. Y casualidades de la vida salto la noticia en barrapunto de "Las comunidades de software libre en la actualidad ". Así que paso la duda a la comunidad, ya que la ultima versión del juego es del 2005 y no esta en ingles, quería meterle las traducciones mediante el clásico gettext, pero como uno siempre lo había conocido de oídas, me puse manos a la obra a aprenderlo...cosa que es un poco complicada por los pocos tutoriales que hay, pero bueno me eche la toalla a la cabeza y dije vamos a probar (despues de haber leido un poco pero sin profundizar (asi que posiblemente me pasado algo basico que no lo consiga) porque hay poco en español...o encontrado poco) con un ejemplito simple y no me lo traduce...por supuesto algo estare haciendo mal, explico el proceso: -he hecho el tipico hola.c #include <stdio.h> #include <libintl.h> #include <locale.h> #define _(string) gettext(string) int main(void) { setlocale(LC_ALL,""); bindtextdomain("hola","/home/md/proyectos/pruebas/dprueba00/"); //probe a meter "./" para tener el .mo cerquita textdomain("hola"); printf(_("Hello World\n")); return 0; } -despues le pasado el xgettext -k_ hola.c -o hola.po (si se que lo suyo es sacar el .pot de plantilla pero es mejor pasito a pasito) -edite el hola.po con el poedi que es muy comodo, no se si algo afecta en que le puse a todas las codificaciones utf-8 en opcines del "proyecto", guarde y genera ya el .mo, quedando algo tal que asi # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL ADDRESS>, YEAR. # msgid "" msgstr "" "Project-Id-Version: paquete\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-10-17 00:01+0200\n" "PO-Revision-Date: 2008-10-17 00:05+0100\n" "Last-Translator: Miguel <md email com>\n" "Language-Team: idioma <LL li org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Spanish\n" "X-Poedit-Country: SPAIN\n" "X-Poedit-SourceCharset: utf-8\n" #: hola.c:13 #, c-format msgid "Hello World\n" msgstr "TRADUCIDO\n" Me huelo que los X-Poedit son parametros extendidos que no son básicos que mete el poedit. -y ya con el .mo he probado mil sitios para meterlo ./ del prueba ./es/ de la prueba ./locale/es/LC_MESSAGE que he visto en algun tutorial Y nada despues he hecho un env LANG=es ./hola y no rula...¿En que he fallado? Saludos, y nada rompiendo la vergüenza porque como dice el refran "el tonto duda y el sabio pregunta"...o algo asi :P._______________________________________________ Gnome-hispano-list mailing list Gnome-hispano-list gnome org http://mail.gnome.org/mailman/listinfo/gnome-hispano-list
-- http://acsblog.es wget -O - http://acsblog.es/~acs/acs.gpg.asc | gpg --import
Attachment:
signature.asc
Description: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada digitalmente