A seguir veremos como dar suporte a tradução de um software escrito em python com 
GNU\GetText.
Explicação sobre o Gettext e requerimentos
O GNU\Gettext, é uma biblioteca disponível em várias linguagens que permite a tradução de programas a partir de arquivos 
binários. Sua utilização é muito simples e ao longo deste artigo, criaremos um script para tradução com a 
Google Translate 
API, agilizando a tradução.
Para maiores informações sobre o Gettext, visite a página do projeto:
Requerimentos:
- gettext - (isso pode variar de acordo com a linguagem, no python o mesmo vem por padrão)
- pygettext - (um utilitário para vasculhar o código Python e encontrar as strings isoladas)
- msgfmt - ( converte os arquivos gerados pelo pygettext para binários )
Com tudo certo, vamos ao código
Isolando strings no código:
Para que o gettext funcione, é preciso isolar as strings no código python:
#!/usr/bin/python
# importing the gettext library
import gettext
# Defining the translate file
SOURCE_FILE_TRADUCTION='messages'
# Defining the translate directory
LOCALE_DIR='locale'
# Start gettext
language = gettext.translation(SOURCE_FILE_TRADUCTION,LOCALE_DIR,languages=["pt-br"])
language.install()
# Alias the underscore to translate
_ = language.gettext
# Code
print _("Hello World")
Aqui isolamos as strings com _(), e agora iremos gerar o arquivo .po com o pygettext:
user@localhost:~> pygettext -o test.po test.py
Eis o arquivo de tradução:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR , YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2011-05-10 09:18+BRT\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
#: test.py:10
msgid "Hello World"
msgstr ""
Obs.: É essencial preencher o cabeçalho, pois a frente teremos problemas na conversão para binário.
Enfim, agora podemos traduzir, mas porque não usar o Google?.
Google Translate API + Gettext
Agora creio que é a parte mais legal, automatizar a tradução.
Sinceramente, confesso que o script possa conter alguns erros, principalmente se a string isolada contem caracteres especiais, 
como 
%,<,>, entre outros.Esse script funcionou bem para traduções de texto puro.
Aceito sugestões de melhorias :)
#!/bin/bash
#############
# Author: Ramon Medeiros @ Viva o Linux
##############
# Line break
ORI_IFS=$IFS
IFS=$'\n'
# Set the language to be translated
LANG_FROM=en
LANG_TO=pt
# Google Translate API Key
KEY=
# Translated dir
mkdir TRANSLATED_FILES
for FILE in `ls *.po`; do
  # Start translation for .po files
  for LINE in `cat $FILE`; do
  
    if ! [ "$(echo $LINE | grep -o '^msgstr')" = "msgstr" -o "$(echo $LINE | grep -o '^msgid')" = 
"msgid" ]; then
      echo "$LINE" >> TRANSLATED_FILES/$FILE
    fi
  
    if [ "$(echo $LINE | grep -o '^msgid')" = "msgid" ]; then
      echo $LINE >> TRANSLATED_FILES/$FILE
    
      # Blank space and % treatment
 
      TEXT=$(echo $LINE | cut -d'"' -f 2)
      TEXT=$(echo $TEXT | sed 's/%/%25/g')
      TEXT=$(echo $TEXT | sed 's/ /%20/g')
 
      # Using the Google Translate API
      OUTPUT=$(GET "https://www.googleapis.com/language/translate/v2?
key=$KEY&source=$LANG_FROM&target=$LANG_TO&q=$TEXT" | 
        grep translatedText | 
        sed 's/translatedText\": \"//g' | 
        sed 's/\"//g' | 
        sed 's/^  //g' | 
        sed 's/%\ /\ %/g'
      )
      echo -e "msgstr \"$OUTPUT\"\n" >> TRANSLATED_FILES/$FILE
    fi
  done
done
# Line break treatment
IFS=$ORI_IFS
 
Para pegar sua key, vá em
Apenas uma coisa, o limite diário de caracteres é de 100.000 =/
Com esse script, que deve ser rodado na mesma pasta onde ficam os arquivos .po, a pasta TRANSLATED_FILES será criada com 
os arquivos traduzidos.
Finalizando a tradução
Com os arquivos traduzidos, vamos convertê-los em binários!
user@localhost:~> msgfmt -o test.mo test.po
Caso você tenha especificado apenas locale no código, terá de criar as seguintes pastas:
user@localhost:~> mkdir -p locale/$LANG/LC_MESSAGES
Agora, basta colocar o arquivo .mo na pasta LC_MESSAGES, criar a pasta $LANG com a língua passada no código e pronto. Seja 
feliz com seu programa traduzido. :)
Agradecimentos especiais ao dono do tópico: