Usando variáveis de ambiente
Docstring e metadados dunder
Em todo script Python é uma boa prática incluir um comentário de multi linhas logo nas primeiras linhas do script explicando o objetivo do script e provendo documentação para o usuário.
#!/usr/bin/env python3
"""Hello World Multi Linguas.
Dependendo da lingua configurada no ambiente o programa exibe a mensagem
correspondente.
Como usar:
Tenha a variável LANG devidamente configurada ex:
export LANG=pt_BR
Execução:
python3 hello.py
ou
./hello.py
"""
__version__ = "0.0.1"
__author__ = "Bruno Rocha"
__license__ = "Unlicense"
E além do comentário de documentação, chamado DocString é também comum a inclusão de variáveis de metadados que iniciam e terminam com 2 underlines __ a palavra que usamos para designar essas variáveis é Dunder portanto, Dunder version se refere a version.
Variáveis de Ambiente
Ambiente é o termo que usamos para referir ao local onde o programa é executado, o ambiente em termos gerais é formado por um shell que em termos bem simplificados pode ser entendido como um local isolado onde o seu programa executa.
Neste ambiente existem variáveis que servem para configurar o comportamento do próprio ambiente, do sistema e dos programas que rodam.
No linux ao digitar env no terminal você verá uma lista de todas as variáveis do ambiente, ali por exemplo está o nome do usuário em USER e a linguagem em que o sistema operacional está configurado LANG.
Podemos dentro do Python acessar essas variáveis de ambiente através do módulo os.
import os
os.environ # um dicionário Python contendo as variáveis e seus valores
os.getenv("LANG") # função usada para buscar o valor de uma variável especifica.
Obtendo uma parte de um texto (substring)
Em nosso primeiro programa irá ler a variável de ambiente LANG e a partir dela decidir qual mensagem de Hello World imprimir na tela, portanto se for pt_BR imprimimos Olá, Mundo! se for it_IT será Ciao, Mondo! e assim por diante.
O problema é que o comando os.getenv("LANG") vai retornar algo como en_US.utf8 e nós queremos apenas a primeira parte antes do ., nesse caso queremos en_US ignorando a parte .utf8 e existem algumas formas de obter isso em Python.
# Variável completa
>>> os.getenv("LANG")
'en_US.utf8'
# Apenas os 5 primeiros caractered
>>> os.getenv("LANG")[:5]
'en_US'
# Com um valor default em caso da variável não existir
>>> os.getenv("LANG", "en_US")[:5]
'en_US'
# Através do aplit do texto
>>> os.getenv("LANG", "en_US").split(".")[0]
'en_US'
Em nosso programa vamos por enquanto escolher a versão:
>>> os.getenv("LANG", "en_US")[:5]