Hace mucho tiempo escribí un post sobre como escribir aplicaciones en python que soporten/muestren varios lenguajes usando gettext (incluso después hice otro tutorial para crear una aplicación gráfica multilenguaje que se aprovechaba de esto).
Básicamente lo que hace es ocupar el modulo gettext, el cual lee el lenguaje que utiliza el sistema y a partir de este carga el correspondiente archivo de traducción (*.mo) cambiando las cadenas de texto al idioma del sistema.
Esto funciona de maravilla en sistemas POSIX (linux, la manzana, etc.) pero trae un pequeño problema en windows, ya que gettext usa por defecto las variables de entorno del sistema (como LANGUAGE, LC_MESSAGES, LC_ALL o LANG) para determinar el idioma que se utiliza en el equipo, pero estas variables de entorno por no están presentes en el típico equipo con Windows porque tanto el OS (Windows) como sus aplicaciones nativas obtienen esa información directamente del registro (y por lo tanto no están definidas por defecto).