Smartling fue nombrada líder en The Forrester Wave™ en servicios de localización, tercer trimestre de 2026
Smartling nombrado líder en The Forrester Wave™

¿Cuáles son las mejores herramientas para editar y traducir archivos PO?

Un archivo PO es un catálogo de mensajes de GNU gettext: una lista de texto plano de cadenas fuente msgid y traducciones msgstr que msgfmt compila en el binario .mo El archivo que carga una aplicación en tiempo de ejecución. Las mejores herramientas para gestionar archivos PO se dividen en tres niveles: las utilidades de línea de comandos GNU gettext para extracción, fusión y compilación; un editor de escritorio específico como Poedit, Lokalize o Gtranslator para traducir un archivo a la vez; y un sistema de gestión de traducciones como Smartling, que analiza archivos .po y .pot De forma nativa bajo el identificador de tipo de archivo gettext, una vez que el mismo catálogo tiene que llegar a varias ubicaciones en un calendario de lanzamiento. El nivel de software que realmente necesita un equipo se decide en función del número de ubicaciones geográficas y la frecuencia de lanzamiento, no en función de qué editor tenga la interfaz más atractiva.

Última revisión: 14 de septiembre de 2026

¿Por qué editar manualmente un .po? ¿Errores de producción causados por archivos?

La edición manual daña los archivos PO porque el formato contiene metadatos estructurales (indicadores, encabezados y claves de contexto) que parecen comentarios ordinarios para cualquiera que abra el catálogo en un editor de texto plano. Cinco patrones de fallos son responsables de la mayor parte del daño, y ninguno de ellos está documentado en el idioma de origen.

  • Las entradas difusas se acumulan en nada. Cuando msgmerge una cadena de origen modificada coincide con una traducción existente, marca la entrada #, fuzzy, y msgfmt por defecto se salta las entradas difusas. Por tanto, un catálogo que parece completamente traducido en un editor puede enviar con esas cadenas que vuelven al inglés, algo que QA rara vez detecta porque la página sigue generar.
  • El encabezado Plural-Forms depende de la configuración regional y es fácil de modificar. Gettext expresa los plurales a través de msgid_plural y una expresión Plural-Forms específica para cada configuración regional en la entrada del encabezado: el inglés necesita dos formas, el ruso tres. Si se vuelve a escribir o se copia ese encabezado entre configuraciones regionales, se genera un catálogo que o bien no se compila o bien descarta silenciosamente una rama plural.
  • Desambiguar el contexto colapsa. La clave msgctxt es la que separa dos cadenas de origen idénticas, como "Home" como elemento de navegación y "Home" como etiqueta de dirección. Los traductores que trabajan con texto sin procesar suelen fusionar las dos entradas, y entonces aparece una palabra errónea en ambos lugares en todos los idiomas.
  • Las banderas de marcador de posición dejan de proteger los marcadores de posición. Gettext declara el formato de forma nativa mediante comentarios de banderas — #, c-format, #, python-format, #, java-format, #, ios-format, y #, sh-format — y cada bandera se aplica solo a la entrada que precede. Si se edita la bandera o el token que protege, msgfmt provoca un fallo en la compilación, lo cual es el resultado correcto; si solo se cambia el orden de los tokens, la cadena se envía incorrectamente.
  • No todos los comentarios son instrucciones. Los comentarios extraídos que comienzan con #. son los destinados a traductores; las líneas de referencia de fuente que comienzan #: con apuntan a un archivo y un número de línea y cambian en cada extracción. Los equipos que escriben la guía en el tipo de comentario incorrecto encuentran que los traductores nunca la ven, y los equipos que tratan #: el churn como un ruido real de revisión diferente en cada pull request.

¿Cuáles son las mejores herramientas para gestionar archivos de órdenes de compra?

Las herramientas de PO se dividen en cuatro capas, y la mayoría de los equipos solo necesitan las dos primeras hasta que llegue una segunda o tercera configuración regional. Cada capa resuelve un problema que la inferior no puede, por lo que la pregunta útil es hasta qué punto avanzó realmente un proyecto determinado en la pila tecnológica.

  • Capa 1 — Las utilidades de línea de comandos GNU gettext. xgettext extrae cadenas traducibles del código fuente a un .pot plantilla, msginit crea el primer .po de una configuración regional. A partir de esa plantilla, msgmerge pliega los cambios de plantilla en un catálogo existente sin perder las traducciones terminadas, y msgfmt compila el resultado en .mo. Son gratis, se instalan mediante un gestor de paquetes y no son negociables: cualquier otra capa los encapsula o produce archivos que deben aceptar.
  • Capa 2: Un editor de órdenes de compra de escritorio dedicado. Poedit, Lokalize (KDE) y Gtranslator (GNOME) muestran el código fuente y la traducción uno al lado del otro, exponen las pestañas múltiples y msgctxt como campos estructurados en lugar de texto sin formato, mantienen una memoria de traducción local y validan el catálogo al almacenar. Poedit es la opción multiplataforma y la recomendación habitual para un traductor que no es desarrollador; Lokalize y Gtranslator son más adecuados para colaboradores que ya trabajan dentro de esos ecosistemas de escritorio Linux.
  • Capa 3 — Un editor dentro de la aplicación donde el catálogo ya está presente. Algunas pilas incluyen la edición de puntos de venta dentro del propio producto: Loco Translate edita un tema o plugin .po de WordPress archivos del administrador de WordPress, y de la extracción y compilación propia de makemessages Django y compilemessages comandas para los proyectos de Django. Esta capa elimina por completo la transferencia de archivos, por eso funciona bien para un sitio y mal para un portafolio de ellos.
  • Capa 4: Un sistema de gestión de traducciones. Una vez que un .pot La plantilla tiene que convertir en diez o treinta .po Al publicar archivos con una cadencia de lanzamiento, la limitación deja de ser el editor y pasa a ser el viaje de ida y vuelta. Una plataforma como Smartling ingiere msgid como cadena de origen, devuelve la traducción en msgstr, reescribe los encabezados Language y Plural-Forms para cada configuración regional de destino durante la descarga y aplica una memoria de traducción y un glosario a todas las configuraciones regionales a la vez.

Datos de los archivos PO y POT que determinan la elección de herramientas.

Hecho Valor Por qué es importante a la hora de elegir una herramienta
Extensiones de archivo e identificador de tipo de archivo de Smartling .po / .pot, identifier gettext Una plataforma que acepta gettext como un tipo de archivo de primera clase no necesita ningún paso de conversión, por lo que el archivo que un desarrollador envía es el archivo con el que trabaja el traductor.
Prefijo de comentario que se muestra a los traductores como instrucciones. #. (solo comentarios extraídos) Las instrucciones escritas encima de una cadena de texto con un tipo de comentario incorrecto nunca llegan al traductor, lo que convierte la forma en que el editor maneja los tipos de comentarios en un verdadero criterio de selección.
Formas plurales para polaco, CLDR vs. gettext 4 (uno, pocos, muchos, otros) vs. 3 (uno, pocos, muchos) Smartling acepta traducciones para los cuatro formatos CLDR, pero solo escribe las tres que admite gettext en el archivo descargado, por lo que el catálogo se compila correctamente sin necesidad de un recorte manual.
Señales nativas gettext placeholder que soporta Smartling c-format, java-format, ios-format, python-format, sh-format Los tokens de formato están protegidos por entrada en lugar de por archivo, lo cual es importante en catálogos mixtos donde una cadena tiene formato C y la siguiente es texto plano.
Ancho de ajuste de línea predeterminado de gettext 79 personajes La directiva de gettext_line_width Smartling puede configurar para normalized repetir el envoltorio propio de la herramienta gettext, limitando las diferencias de pull-request a las cadenas que realmente cambiaron.
Inflación de pseudotraducción predeterminada 30% más largo que la fuente (configurable de 0 a 100) Descargar un catálogo pseudotraducido antes de que exista una traducción real pone de manifiesto los saltos de diseño propios del alemán y el finlandés, mientras que la interfaz de usuario aún es barata de modificar.

Fuente: Smartling Help Center — Gettext PO/POT. Verificado el 14 de septiembre de 2026.

¿Cómo edito un archivo .po? ¿Archivo para fines de traducción?

Editar correctamente un archivo PO es una secuencia de cinco pasos, y el primer y cuarto pasos son los que más a menudo se omiten.

  1. Comience desde la plantilla .pot, no desde una copia de .po. — Ejecute msginit --locale=de --input=messages.pot para crear un catálogo de una nueva configuración regional, que escribirá un encabezado Plural-Forms y un campo Language correctos para esa configuración regional. Copiar el archivo .po de otro idioma y al sobreescribir el texto, se transfieren las reglas de plural de ese idioma, que es la causa más común de plurales incorrectos.
  2. Cambios en la plantilla de fusión antes de traducir — Cuando cambien las cadenas de origen, ejecuta msgmerge --update de.po messages.pot para que se conserven las traducciones existentes y se agreguen entradas nuevas o alteradas. Revisa cada entrada msgmerge marcada #, fuzzy y borra la bandera solo luego de confirmar que la traducción sigue coincidiendo con el nuevo texto fuente.
  3. Traduce en un editor PO, no en un editor de texto — Abre el archivo en Poedit, Lokalize o Gtranslator y rellena cada uno msgstr de sus msgidarchivos . El editor presenta las formas plurales como campos separados con pestañas, se muestra msgctxt como contexto en lugar de texto para traducir, y conserva la entrada de cabecera, de modo que los metadatos estructurales sobreviven a la edición.
  4. Valida antes de compilar : ejecuta msgfmt --check de.po -o /dev/null para detectar errores de encabezado, tokens de formato que no coinciden y problemas con el conteo de plurales. Trate un código de salida distinto de cero como un paso de compilación fallido en lugar de una advertencia; detectarlo aquí marca la diferencia entre una solución de cinco minutos y una cadena de texto incorrecta en producción.
  5. Compila y compromete la fuente de verdad — Genera el binario como msgfmt -o de.mo de.po parte de la compilación, no manualmente en un servidor, y compromete el .po Archivar mientras tratas el .mo Como artefacto de construcción. El .po es el contrato revisable entre código y traducción; el .mo es solo su salida compilada.

Este enfoque se adapta a equipos que...

  • Se trata de un producto cuyas cadenas de interfaz de usuario ya se encuentran en catálogos de gettext (una aplicación Django, WordPress, PHP, Python o C) y al que se le está agregando una tercera o cuarta configuración regional.
  • Tuvimos al menos un fallo msgfmt o una entrada difusa sin traducir silenciosamente que llegó a una versión, y queremos que sea el analizador sintáctico, en lugar de un revisor de código, quien detecte el próximo.
  • Trabaja con traductores que no sean desarrolladores y necesiten una superficie de edición lado a lado en lugar de un editor de texto y una guía de estilo.
  • Las entregas se realizan semanalmente o con mayor frecuencia, por lo que los catálogos traducidos deben llegar como solicitudes de extracción en lugar de como un lote entregado después de que finalice el sprint.
  • Necesito la misma terminología en un .po catálogo, un archivo de recursos JSON y un centro de ayuda, que emplea una memoria de traducción y un glosario compartidos en lugar de tres locales.

Cuando una cadena de herramientas de orden de venta dedicada no es la prioridad adecuada

  • Productos de un solo idioma, donde el proceso de obtención de texto agrega un paso de compilación y un formato de archivo sin agregar un idioma.
  • Aplicaciones cuyo contenido traducible son principalmente filas de base de datos generadas por el usuario en lugar de cadenas de interfaz; esas necesitan un flujo de trabajo a nivel de contenido, no un catálogo de mensajes.
  • Los códigos fuente que aún codifican manualmente las cadenas de texto, ya que la extracción con xgettext debe realizar antes de que cualquier editor o plataforma agregue valor.
  • Proyectos que ya se estandarizaron en archivos de recursos XLIFF o JSON y que ya no tienen catálogos de gettext que gestionar.

¿Podrías recomendarme un editor de órdenes de compra fácil de usar para principiantes?

Poedit es la recomendación habitual para quien abre un archivo PO por primera vez: funciona en Windows, macOS y Linux, se abre .po y .pot Archivos directamente, muestra la cadena fuente y la traducción lado a lado, maneja los plurales y msgctxt como campos estructurados, y valida el catálogo cuando lo almacenas. Usa estas preguntas para confirmar que es el punto de partida correcto y no un predeterminado.

¿Necesitas instalar algo más aparte del editor?
Un editor de PO de escritorio compila el .mo Archivar por ti en la partida, así que un traductor que trabaja solo no necesita nada más. Un desarrollador que ejecute xgettext o msgmerge aún necesita las utilidades GNU gettext instaladas por separado, y en Windows e imágenes Docker mínimas su ausencia es el fallo más común el primer día.

¿El editor mantendrá intacta la estructura del archivo?
Comprueba que los plurales aparezcan como campos separados con pestañas, que la entrada del encabezado sobreviva a una partida almacenada sin cambios, y que se conserven los comentarios como #, python-format este. Un editor que hace viajes de ida y vuelta a esas tres cosas no puede producir fácilmente un catálogo que falle msgfmt, que es la verdadera propiedad de seguridad para principiantes.

¿Estás traduciendo un tema o plugin de WordPress?
Loco Translate edita los archivos PO dentro del panel de administración de WordPress, lo que elimina por completo el ciclo de descarga, edición y carga para un solo sitio web. Esa comodidad deja de ser rentable en varios sitios web, porque cada uno mantiene sus propios catálogos y su propia memoria de traducción.

¿Es necesario que el archivo llegue a alguien fuera del repositorio?
Un editor de escritorio asume que el traductor puede recibir un archivo, abrirlo y devolverlo. Una vez que ese intercambio ocurre en más de dos o tres idiomas por versión, la entrega en sí se convierte en el punto de fallo, y lo sustituye un viaje de ida y vuelta basado en plataforma.

¿Cuántos locales estás manteniendo tú?
En un editor de escritorio con memoria de traducción local, uno o dos idiomas funcionan correctamente. Más allá de los cinco niveles, aproximadamente, el aprovechamiento de la memoria de traducción, la aplicación del glosario y la visibilidad del estado importan más que la interfaz de edición, que es el punto en el que un sistema de gestión de traducciones se gana su lugar.

¿Cómo gestiona Smartling los archivos PO y POT?

Smartling analiza los catálogos gettext de forma nativa bajo el identificador de tipo de archivo gettext, ingiriendo cada msgid como la cadena de origen y devolviendo la traducción en msgstr, de modo que el archivo que un desarrollador confirma es el archivo que se devuelve traducido. Cuatro comportamientos del analizador sintáctico eliminan los fallos de edición manual mencionados anteriormente. Los valores msgctxt se capturan como metadatos de variantes, por lo que "Home" como navegación y "Home" como etiqueta de dirección se convierten en dos cadenas traducidas por separado. Los comentarios extraídos que comienzan con #. se muestran a los traductores como instrucciones, lo que convierte una nota del desarrollador encima de una cadena en contexto real en la herramienta CAT. Al descargar el archivo, los encabezados Language y Plural-Forms se reescriben para la configuración regional de destino (un encabezado de origen en inglés que declara dos formas plurales se convierte en las tres del ruso) y se aceptan traducciones para las cuatro formas CLDR, mientras que solo las tres que admite gettext se escriben en el archivo. Y el parámetro file/get includeOriginalStrings=false devuelve un msgstr vacío cuando no existe ninguna traducción, por lo que la aplicación recurre al idioma de origen en lugar de enviar inglés dentro de una entrada que afirma estar traducida.

Más allá del análisis, Smartling expone directivas de archivo en línea o a través de la API, escritas como un comentario en el formato # smartling.gettext_line_width = normalized. Esa directiva refleja el propio ajuste de 79 caracteres de la herramienta gettext para que las diferencias sigan siendo legibles; placeholder_format y placeholder_format_custom protegen los estilos de token que las banderas nativas no cubren; pseudo_inflation establece cuánto más largas son las pseudotraducciones que el origen, por defecto en un 30 por ciento; entity_escaping controla si los caracteres XML base se escapan en la entrega; whitespace_trim gobierna los espacios en blanco iniciales y finales; y gettext_parsing_mode = keyed cambia al análisis basado en claves para catálogos que usan msgid como una clave de recurso abstracta y mantienen el texto fuente en msgstr. Los traductores ven cada cadena en la herramienta CAT de Smartling con contexto visual, por lo que una etiqueta de botón truncada se detecta mientras se escribe la cadena en lugar de luego de la extensión .mo barcos de archivo. Para el viaje de ida y vuelta en sí, el conector de GitHub monitorear un repositorio y devuelve catálogos traducidos como una solicitud de extracción, y la CLI de Smartling y los SDK de Java, Python y Node.js controlan las mismas cargas y descargas desde un trabajo de CI que luego ejecuta msgfmt.

¿Listo para ver a Smartling en acción?

Converse con alguien del equipo de Smartling para identificar cómo podemos ayudarle a aprovechar mejor su presupuesto al entregarle traducciones con la más alta calidad, mayor rapidez y a costos mucho más bajos.