Traducción de archivos de software de Sun 25 Considere ahora el ejemplo siguiente, donde var1  es un entero establecido como 25 y var2  es una cadena establecida como libre. printf(" hay %s un %d %%",var2,var1) Esto mostrará la salida siguiente: hay libre un 25 % Formato de archivo PO Los archivos PO se obtienen ejecutando una utilidad con el código fuente C que filtra todo el contenido de las comillas en las instrucciones printf y lo coloca en un archivo objeto portable (po). A continuación, se compila el código fuente C en formato binario. Como los archivos PO no saben lo que es un 'tipo', simplemente se asume que el texto es texto. Esto significa que es posible intercambiar  %s  y  %d  en los mensajes y compilarlo en un archivo MO sin ningún error. Cuando se ejecuta el binario y éste llama al mensaje determinado, Solaris comprueba el tipo de cada variable y asigna los valores correctos a éstas, sin que importe el orden en que estén colocadas. Esto sólo funciona si cada variable de una cadena es de un tipo diferente. Si el número 25 estuviera contenido en una cadena, el mensaje anterior tendría el aspecto siguiente: msgid " there is %s %s %%" msgstr " hay %s un %s %%" Al intercambiar los  %s   no se cambiará la visualización de la cadena, de forma que si necesita reorganizar el orden de las cadenas de su traducción puede hacer lo siguiente: msgid " there is %s %% %s" msgstr " Hay aproximadamente un %1$s %% de espacio %2$s" coma flotante %f coma flotante exponencial %e %e o %f %g \... caracteres de escape, véase la nota al final %h corto %% muestra el símbolo % Tipo de variable Espacio de reserva