Al traducir software, el traductor se ve confrontado a nuevos tipos de texto, diferentes de los textos tradicionales. Por ejemplo, el texto traducible contenido en una interfaz de usuario difiere del texto en los manuales impresos o ayudas en línea. Esta variedad de textos en la localización de software es un desafio para el traductor, sobre todo porque estos tipos de texto pueden ocasionar más problemas al traductor. Sin embargo, el traductor sólo es consciente de los posibles problemas a los que puede enfrentarse; es tarea de los ingenieros de software tratar de evitar las causas de estos problemas o mantenerlas bajo control. Una manera de evitar o controlar las causas de estos problemas es internacionalizando la aplicación de software antes de empezar con la localización. La internacionalización es el primer paso para asegurarse de que el producto es localizable y que será funcional y aceptado en los mercados internacionales.
Se han encontrado muchas causas de problemas de localización cuando el software no ha sido internacionalizado. Estas son algunas de ellas:
Terminología: Uso incoherente de la terminología por diseñadores de software o escritores técnicos (p.ej. uso de sinónimos para el mismo proceso o concepto)
Ambigüidad: Uso del mismo término para procesos diferentes o conceptos en el mismo contexto (p.ej. uso del mismo término para operaciones diferentes en la interfaz de usuario)
Uso de referencias locales: los ejemplos dados no deben contener referencias locales - éste es el caso cuando se escriben textos para un aplicación de software -, especialmente cuando se escribe para una audiencia internacional. En este sentido, también se debe evitar el uso de símbolos de especificidad local.
Texto en gráficos: El hecho de que el texto tenga que ser traducido implicaría en este caso que los gráficos tengan que ser editados, lo cual puede tomar mucho tiempo.
Abreviaturas: es común usar abreviaturas por falta de espacio, pero es un problema si no son usadas consecuentemente.
Espacio: los diseñadores o escritores deben tener presente, sobre todo en el caso de las interfaces de usuario, que, por regla general, la longitud de los textos traducidos varía en comparación con los textos originales. Por lo tanto, debe ser posible cambiar el tamaño de los elementos (p.ej. de los botones), los cuadros de diálogo deben poder aceptar textos más largos y/o se debe reservar memoria en el programa para mensajes de error más largos.
No separación de código y texto: Muy a menudo, el texto traducible está incrustado en el código de programa. Esto es un problema, ya que, cuando se actualiza la aplicación, todas las cadenas tienen que volver a ser editadas; además el traductor podría modificar o eliminar el código por error. También es más difícil que el traductor identifique el texto traducible si éste está mezclado con el código de programación. Para verificar si el código y el texto están separados, los desarrolladores y escritores pueden usar herramientas de evaluación (p.ej. herramientas de desarrollador, de internacionalización, de localización, etc.)
Variables: Al usar variables en los mensajes, los desarrolladores y escritores deben tener en cuenta que la gramática del idioma de destino puede exigir un reordenamiento de los parámetros. Por ejemplo, es posible que se tenga que cambiar de lugar el «%» en el mensaje «los archivos % guardados el % por %», según el orden correcto en el idioma destino. También la forma gramatical (género, número, caso) de aquellos elementos que substituirán a las variables puede ser diferente, por ejemplo:
Fecha, hora y formatos de números: los desarrolladores y escritores deben tener presente que, según el idioma de destino o cultura, las convenciones para la fecha, hora y formatos de números pueden variar. Por lo tanto, se debe considerar su adaptación.