¿Qué es el formato de archivo MO?
.mo es un archivo de desarrollador utilizado para almacenar un catálogo de traducción binario compilado. Los archivos .mo no son legibles por humanos; son la contraparte legible por máquina de un archivo fuente .po editable por humanos. Los traductores editan el archivo .po y lo compilan a .mo usando el comando msgfmt; la aplicación luego carga el .mo en tiempo de ejecución para mostrar el texto traducido. Modificar un archivo .mo directamente lo dejará inutilizable.
Acceso a los datos
Los archivos .mo no están cifrados ni protegidos contra lectura. Algunos editores hexadecimales pueden mostrar el binario bruto, pero la forma correcta de recuperar las cadenas legibles por humanos es el comando msgunfmt, que descompila un .mo de nuevo a su fuente .po. Internamente, un .mo comienza con un número mágico de cuatro bytes (0x950412DE little-endian), una palabra de revisión y dos tablas de desplazamiento que apuntan a matrices de cadenas originales (msgid) y traducidas (msgstr). Una tabla hash opcional permite la búsqueda rápida en tiempo de ejecución.
Seguridad y protección
RIESGO: LOWUn archivo .mo contiene solo cadenas de traducción y metadatos; no hay código ejecutable, por lo que el archivo en sí es inofensivo. La única precaución práctica: un .mo malicioso colocado en un tema o complemento podría inyectar texto de interfaz engañoso (ej. enlaces o instrucciones alteradas), así que use solo archivos de idioma de la fuente oficial del tema o complemento, no de descargas de «traducción» desconocidas.
Detalles del formato
en pocas palabras- Datos de objeto/ASCII de Autodesk Maya - Algunos flujos de trabajo y exportadores de Maya usan .mo para datos de objetos; no relacionado con gettext.
- Archivo de objeto Modula-3 - Archivo de objeto compilado histórico para el lenguaje Modula-3; el nombre de la base de datos refleja este significado poco común.
- Motorola / volcados de objetos de firmware - Visto ocasionalmente para blobs de firmware/objetos de Motorola; nicho y no relacionado.
Programas que abren archivos MO
Detalles técnicos
especificación profunda| Tipo de formato | Catálogo de traducción binario compilado (tabla de cadenas indexada por hash) |
| Número mágico | 0x950412DE (little-endian: DE 12 04 95 en el desplazamiento 0; los archivos big-endian almacenan 95 04 12 DE) |
| Orden de bytes | Little-endian o big-endian; el lector detecta el orden de bytes a partir del número mágico al analizarlo |
| Tipo MIME | application/x-gettext-translation |
| Codificación de cadenas | UTF-8 (más común); el juego de caracteres real se declara en la entrada de metadatos msgid vacía |
| Entrada de metadatos | La entrada con msgid vacío almacena Project-Id-Version, Content-Type, charset y reglas de Plural-Forms |
| Revisión del formato | Revisión 0 (tanto la palabra de revisión mayor como la menor son 0); la revisión 1 está definida pero rara vez se implementa |
| Tabla hash | Tabla hash de tamaño fijo opcional incrustada en el cuerpo del archivo para búsqueda de cadenas O(1) en tiempo de ejecución |
| Herramienta de compilación | msgfmt (GNU gettext) compila .po → .mo |
| Herramienta de descompilación | msgunfmt (GNU gettext) recupera un archivo .po de un binario .mo |
| Tamaño de archivo típico | 5 KB - 2 MB dependiendo del número de cadenas traducidas |
| Soporte de plataforma | Linux, macOS, Windows, BSD - cualquier SO que ejecute software basado en gettext |
| Ruta de despliegue común | Instalado como <dominio>.mo dentro de un directorio LC_MESSAGES bajo un árbol de locales (ej. locale/es/LC_MESSAGES/app.mo) |
| Lanzado | 1995 (GNU gettext) |
| Última versión | MO format revision 0 (still current); revision 1 defined but rarely used |
| Estándar abierto | Sí · libre de regalías |
| Especificación | www.gnu.org |
Conversiones de MO
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos MO.
Preguntas frecuentes
¿Qué es un archivo .mo?
¿Cómo abro o edito un archivo .mo?
¿Cuál es la diferencia entre .po y .mo?
msgfmt (o Poedit hace ambos).