Gettext
gettext es la biblioteca GNU de internacionalización (i18n). Comúnmente se usa para escribir programas con interfaz en varios idiomas.
| Gettext | |||
|---|---|---|---|
| Componente de Proyecto GNU | |||
|
| |||
| Información general | |||
| Tipo de programa | internacionalización y localización | ||
| Autor | Ulrich Drepper | ||
| Desarrollador | Proyecto GNU | ||
| Modelo de desarrollo | Abierto | ||
| Lanzamiento inicial | 1994 | ||
| Licencia |
| ||
| Información técnica | |||
| Programado en | C | ||
| Versiones | |||
| Última versión estable | 1.0 (info) (28 de enero de 2026 (6 meses y 22 días)) | ||
| Archivos legibles | |||
| |||
| Archivos editables | |||
| |||
| Enlaces | |||
gettext es la biblioteca GNU de internacionalización (i18n). Comúnmente se usa para escribir programas con interfaz en varios idiomas.
Flujo de trabajo

Programador
Primero es necesario modificar el código fuente para poder usar las llamadas de GNU gettext. Esta modificación consiste en usar, como parámetro de la función gettext, las cadenas de texto que el usuario verá. Para ahorrar tiempo de escritura y espacio, esta función es usualmente asignada a _, en el código C
printf(gettext("My name is %s.\n"), mi_nombre);
Se convierte en:
printf(_("My name is %s.\n"), mi_nombre);
Además de C, GNU gettext tiene las siguientes implementaciones: C++, Objective C, sh script, bash script, Python, GNU CLISP, Emacs Lisp, librep, GNU Smalltalk, Java, GNU awk, Pascal, wxWidgets (a través de la clase WxLocale), YCP (the YaST2 language), Tcl, Perl, PHP, y Pike. El uso es similar al de C para muchos de estos.
xgettext se ejecuta sobre el código fuente para producir un archivo .pot, o plantilla, cuando contiene una lista de todas las cadenas de texto traducibles extraída del código fuente. Una entrada en el archivo .pot se puede ver como:
#: src/name.c:36
msgid "My name is %s.\n"
msgstr ""
Traductor
El traductor genera un archivo .po desde la plantilla usando el programa msginit, y comienza a traducirlo. msginit inicializa el fichero con las traducciones, por lo tanto, si deseamos crear una traducción al español, ejecutaríamos lo siguiente:
msginit --locale=es --input=name.pot
Eso generaría el fichero es.po. Una entrada sencilla se verá como la siguiente:
#: src/name.c:36
msgid "My name is %s.\n"
msgstr "My name is %s.\n"
El traductor tendrá que editarlas, o a mano o con una herramienta de traducción como Poedit. Cuando esto esté hecho, la entrada ahora se verá así:
#: src/name.c:36
msgid "My name is %s.\n"
msgstr "Mi nombre es %s.\n"
Finalmente, los ficheros .po son compilados en un fichero binario .mo con msgfmt. De forma que queden listos para ser distribuidos con el paquete de software.
Usuario
El usuario, sobre sistemas tipo Unix, establece la variable de entorno LANGUAGE, y el programa mostrará las cadenas en el idioma seleccionado, si es que hay un archivo .mo para ello.
Enlaces externos
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.