Escolar Documentos
Profissional Documentos
Cultura Documentos
em Python
Quando escrevi
(https://giovannireisnunes.wordpress.com/2017/09/01/o-desafio-
dos-monstros-parte-2/) a versão em Python d’O desafio dos
monstros, acabei optando por utilizar as mensagens originais do
jogo em inglês. Também citei ser possível traduzi-lo facilmente
para o português, ou seja, procurá-las dentro do arquivo
“monster_wrestling.py” e substituir cada uma delas.
Antes de começar…
Carregando os módulos
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
...
import gettext
import locale
from os.path import join as path_join
...
def init_locale():
locale.setlocale(locale.LC_ALL, )
(loc, enc) = locale.getlocale()
trans.install()
Inicializando a tradução
if __name__ == "__main__":
init_locale()
screen = curses.initscr()
main()
curses.endwin()
Criando o catálogo de traduções
$ mkdir -p ./lang/pt_BR.UTF-8/LC_MESSAGES
Obviamente que (i) não são todas as strings que serão traduzidas e
que (ii) isto não é um processo automático. É preciso assinalar
dentro do programa quais são as strings traduzíveis envolvendo-
as com um “_( … )”.
...
if panic_counter == 3:
screen.addstr(10, 2, ' * * * You are seeing stars * * * '
curses.color_pair(PANIC[1]))
...
Ficará:
...
if panic_counter == 3:
screen.addstr(10, 2, _(' * * * You are seeing stars * * * '
curses.color_pair(PANIC[1]))
...
Traduzindo o programa
$ cd ./lang
$ cp messages.pot messages_pt_BR.UTF-8.po
#: monster_wrestling.py:174
msgid " * * * You are seeing stars * * * "
msgstr " * * * Está vendo estrelas * * * "
$ msgfmt messages_pt_BR.UTF8.po \
--output-file=pt_BR.UTF-8/LC_MESSAGES/messages.mo
E está pronto!
(²) Se você não definir o arquivo de saída ele criará com o nome de
“messages.mo” no diretório padrão.
Testando…
$ python3 ./monster_wrestling.py
Ele cuidará de selecionar e exibir a tradução correta mas
desejando forçar uma tradução específica é possível testar com:
Conclusão
Anúncios
Report this ad
Report this ad
Programação
I18N , INTERNACIONALIZAÇÃO , JOGOS ,
L10N , LOCALIZAÇÃO , PYTHON
SITE NO WORDPRESS.COM.