¿Qué es el formato de archivo PO?
Los archivos .po son archivos GNU gettext Portable Object, el formato de origen editable por humanos para traducciones de software. El formato se utiliza en una amplia gama de proyectos: utilidades de GNU/Linux, aplicaciones PHP, paquetes de Python, temas y complementos de WordPress y muchas otras aplicaciones de código abierto.
Un archivo .po es texto plano en UTF-8 organizado como entradas emparejadas: msgid (la cadena original del idioma de origen) y msgstr (el equivalente traducido). Las líneas de comentario con el prefijo # contienen notas del traductor, comentarios extraídos del código fuente, referencias de archivos y etiquetas «fuzzy» (borrosas). Las entradas con formas plurales utilizan las variantes msgid_plural y msgstr[n] indexadas, regidas por una expresión Plural-Forms en el encabezado del archivo.
El flujo de trabajo de traducción sigue tres tipos de archivos: los desarrolladores extraen las cadenas traducibles en una plantilla .pot, los traductores la copian por configuración regional y completan los valores msgstr, y luego msgfmt compila cada .po en un archivo binario .mo que la aplicación carga en tiempo de ejecución. El .mo es solo legible por máquina; siempre se edita el .po, nunca el resultado compilado.
Los archivos .po se pueden editar en un editor de texto plano, pero las herramientas dedicadas como Poedit proporcionan comprobación de errores, sugerencias de coincidencias aproximadas y asistentes para formas plurales. Las plataformas web como Weblate admiten la traducción colaborativa. El formato es estable y retrocompatible desde que se introdujo GNU gettext en 1995.
Seguridad y protección
RIESGO: LOWUn archivo .po contiene solo texto de traducción y comentarios; no hay código ejecutable, por lo que el archivo en sí es inofensivo. La única precaución práctica: un archivo de traducción malicioso colocado en un tema o plugin podría inyectar texto de interfaz engañoso (por ejemplo, enlaces o instrucciones alterados), así que use archivos de idioma solo del tema/plugin oficial o de la fuente de traducción, no descargas de «traducción» aleatorias.
Detalles del formato
en pocas palabras- Disk image / partition image (rare) - The DB legacy name 'Disk image file' reflects a rare/incorrect labeling; .po is not a standard disk-image extension.
Programas que abren archivos PO
Detalles técnicos
especificación profunda| Tipo de formato | Texto plano, orientado a líneas (sintaxis GNU gettext PO) |
| Codificación | UTF-8 (conjunto de caracteres declarado en el campo Content-Type del encabezado); los catálogos antiguos pueden usar codificaciones ISO-8859-x |
| Tipo MIME | text/x-gettext-translation |
| Estructura de entrada | Pares msgid / msgstr; msgctxt opcional para desambiguación contextual de cadenas de origen idénticas |
| Entrada de encabezado | La primera entrada tiene un msgid vacío; su bloque msgstr contiene Project-Id-Version, Content-Type, Plural-Forms y otros metadatos del catálogo |
| Formas plurales | msgid_plural con variantes indexadas msgstr[0], msgstr[1], ...; la expresión del encabezado Plural-Forms controla qué forma se aplica para un recuento determinado |
| Tipos de comentarios | # (comentario del traductor), #. (comentario de origen extraído), #: (referencia al archivo de origen), #, (etiquetas como fuzzy o c-format) |
| Etiqueta Fuzzy | #, fuzzy marca una traducción que necesita revisión después de que la cadena de origen haya cambiado; msgfmt excluye las entradas fuzzy del archivo .mo compilado |
| Salida compilada | Convertido a .mo binario (Machine Object) por msgfmt; el .mo es lo que la aplicación en ejecución carga a través de gettext() |
| Archivo de plantilla | .pot (Portable Object Template): el esqueleto no traducido; todos los archivos .po de idiomas se derivan de él mediante msginit o msgmerge |
| Tamaño de archivo típico | 5 KB - 5 MB; escala con el número de cadenas traducibles en el proyecto |
| Cadena de herramientas | xgettext (extraer cadenas del código), msginit (crear nuevo .po), msgmerge (actualizar .po existente), msgfmt (compilar a .mo) |
| Plataforma | Cualquiera - Linux, macOS, Windows, BSD; donde esté disponible GNU gettext o una implementación compatible de libintl |
| Ecosistema | Utilizado por WordPress, Drupal, GNOME, KDE, Python gettext, PHP gettext y muchos otros marcos de trabajo para la internacionalización (i18n) |
| Lanzado | 1995 (GNU gettext) |
| Última versión | PO file syntax is stable; defined in the current GNU gettext manual |
| Estándar abierto | Sí · libre de regalías |
| Especificación | www.gnu.org |
Conversiones de PO
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos PO.