Traduzindo aplicativos PygoBject em diferentes idiomas - Parte 5

Traduzindo aplicativos PygoBject em diferentes idiomas - Parte 5

Continuamos a série de programação pygobject com você e aqui neste 5 ª Parte, aprenderemos como traduzir nossos aplicativos PygoBject em diferentes idiomas. Traduzir seus aplicativos é importante se você for publicá-lo para o mundo, será mais amigável para usuários finais, porque nem todo mundo entende inglês.

Tradução da linguagem do aplicativo PygoBject

Como funciona o processo de tradução

Podemos resumir as etapas de tradução de qualquer programa na área de trabalho do Linux usando estas etapas:

  1. Extraia as cordas traduzíveis do arquivo python.
  2. Salve as cordas em um .Panela Arquivo que é o formato que permite traduzi -lo posteriormente para outros idiomas.
  3. Comece a traduzir as cordas.
  4. Exportar as novas cordas traduzidas para um .po arquivo que será usado automaticamente quando a linguagem do sistema for alterada.
  5. Adicione algumas pequenas alterações programáticas ao arquivo Python principal e ao .Área de Trabalho arquivo.

E é isso! Depois de executar essas etapas, seu aplicativo estará pronto para uso para usuários finais de todo o mundo (você terá que traduzir seu programa para todos os idiomas em todo o mundo, embora !), Parece fácil, não é isso? :-)

Primeiro, para economizar algum tempo, faça o download dos arquivos do projeto abaixo do link e extraia o arquivo em seu diretório inicial.

  1. https: // cópia.com/tjyzaangeq6bb7yn

Abra o "configurar.py”Arquive e observe as alterações que fizemos:

Código de tradução
# Aqui importamos o módulo 'Setup' que nos permite instalar scripts Python no sistema local, além de executar outras tarefas, você pode encontrar a documentação aqui: https: // docs.Pitão.org/2/distutils/Apiref.HTML de distutils.Core Import Setup # Esses módulos nos ajudarão a criar os arquivos de tradução para o programa automaticamente. Da chamada de importação de subprocess.Caminho Importar Splitext, Split # Não Fotget para substituir 'MyProgram' pelo nome do seu programa em todos os arquivos deste projeto. data_files = [("lib/myprogram", ["UI.glade "]), # isso vai instalar a" interface do usuário.Arquivo Glade "sob o caminho/usr/lib/myprogram. ("Compartilhar/aplicações", ["Myprogram.Área de Trabalho"])]] # Este código faz tudo o que é necessário para criar os arquivos de tradução, primeiro procurará todos os .Arquivos PO dentro da pasta PO e definirá o caminho padrão para onde instalar os arquivos de tradução (.MO) No sistema local, então ele criará o diretório no sistema local para os arquivos de tradução do nosso programa e, finalmente .arquivos PO em .Arquivos MO usando o comando "msgfmt". po_files = glob ("po/*.PO ") para PO_FILE em PO_FILES: LANG = Splitext (Split (PO_FILE) [1]) [0] Mo_Path =" Locale//lc_messages/Myprogram.MO ".Formato (Lang) # Faça diretórios de localidade CHAMADA ("MKDIR -P LOCALE//LC_MESSAGES/".formato (lang), shell = true) # gerar arquivos mo chamada ("msgfmt  -o ".formato (PO_FILE, MO_PATH), shell = true) Locais = mapa (lambda i: ('share/'+i, [i+'/myprogram.mo ',]), glob (' Locale/*/lc_messages ')) # aqui, o instalador adicionará automaticamente o .MO arquivos nos arquivos de dados para instalá -los mais tarde. arquivos de dados.estenda (localidades) configuração (name = "Myprogram", # Nome do programa. versão = "1.0", # Versão do programa. Descrição = "Uma interface da web fácil de usar para criar e compartilhar pastas facilmente", # Você não precisa de ajuda aqui. autor = "Tecmint", # Nem aqui. autor_email = "[Email protegido]",# Nem aqui: d url ="http: // Exemplo.com", # Se você tiver um site para você programar ... coloque aqui. licença = 'GPLV3', # A licença do programa. scripts = ['Myprogram'], # Este é o nome do arquivo de script Python principal, no nosso caso é "MyProgram", é o arquivo que adicionamos na pasta "Myprogram". # Aqui você pode escolher onde deseja instalar seus arquivos no sistema local, o arquivo "MyPrograma" será instalado automaticamente em seu lugar correto mais tarde, para que você só tenha que escolher onde deseja instalar os arquivos opcionais que você forma com o script python data_files = data_files) # e isso vai instalar o .Arquivo de desktop na pasta/usr/share/aplicações, toda a pasta é instalada automaticamente na pasta/usr em sua partição raiz, você não precisa adicionar "/usr/ao caminho. 

Também abra o “Myprogram”Arquive e veja as mudanças programáticas que fizemos, todas as mudanças são explicadas nos comentários:

#!/usr/bin/python #-*-codificação: utf-8-*-## Substitua seu nome e e-mail. # O meu nome <[email protected]> ## aqui você deve adicionar a licença do arquivo, substitua "myprogram" pelo nome do seu programa. # Licença: # myProgram é software livre: você pode redistribuí -lo e/ou modificá -lo nos termos da licença pública geral da GNU, conforme publicado pela # The Free Software Foundation, versão 3 da licença ou # (na sua opção ) Qualquer versão posterior. # # Myprogram é distribuído na esperança de que seja útil, #, mas sem qualquer garantia; Sem sequer a garantia implícita de # comercialização ou aptidão para um propósito específico. Veja a licença pública geral # GNU para obter mais detalhes. # # Você deveria ter recebido uma cópia do GNU Geral Public License # junto com o MyProgram. Se não, veja . de gi.Repositório Importar GTK OS OS, getText, Locale ## Esta é a mudança programática que você precisa adicionar ao arquivo python, basta substituir "MyProgram" pelo nome do seu programa. Os módulos "Locale" e "GetText" cuidarão do resto da operação. localidade.Setlocale (Locale.Lc_all, ") getText.bindTextDomain ('MyProgram', '/usr/share/loce') getText.TextDomain ('MyProgram') _ = getText.getText getText.Install ("MyProgram", "/usr/share/loce") Manipulador de classe: def openterminal (self, botão): ##. OS.System ("X-terminal-emulador") def Closeprogram (self, botão): GTK.main_quit () # nada de novo aqui ... acabamos de importar a 'ui.Arquivo Glade '. construtor = gtk.Construtor () construtor.add_from_file ("/usr/lib/myProgram/ui.glade ") construtor.Connect_signals (Handler ()) Label = Builder.get_object ("Label1") # Aqui está outra pequena mudança, em vez de definir o texto para ("Bem -vindo ao meu programa de teste!") Devemos adicionar um char" _ "antes dele, a fim de permitir que os scripts responsáveis ​​sobre o processo de tradução reconheçam que é uma string traduzível. rótulo.set_text (_ ("Bem -vindo ao meu programa de teste !")) Button = Builder.get_object ("Button2") # e aqui está a mesma coisa ... você deve fazer isso por todos os textos do seu programa, em outro lugar, eles não serão traduzidos. botão.set_label (_ ("Clique em mim para abrir o terminal")) Window = Builder.Janela get_object ("Window1").Connect ("Delete-Event", GTK.main_quit) janela.show_all () gtk.principal() 

Agora ... vamos começar a traduzir nosso programa. Primeiro crie o .Panela arquivo (um arquivo que contém todas as seqüências traduzíveis do programa) para que você
pode começar a traduzir usando o seguinte comando:

$ cd myProgram $ xgetText -linguagem = python --keyword = _ -o po/myprogram.Myprogram my my 

Isso vai criar o “Myprogram.Panela“Arquivo dentro do“poPasta na pasta principal do projeto, que contém o seguinte código:

# Algum título descritivo. # Copyright (c) Ano O titular de direitos autorais do pacote # Este arquivo é distribuído sob a mesma licença que o pacote do pacote. # Primeiro autor <[email protected]>, ANO. # #, Fuzzy msgid "" msgstr "" "Project-Id-Version: Package Version \ n" "Report-Msgid-bugs-to: \ n" "Pote-Criation-date: 2014-12-29 21: 28+ 0200 \ n "" PO-REVISÃO DATA: ano-dA ho: mi+zone \ n "" Último translator: nome completo <[email protected]>\ n "" Team de linguagem: linguagem <[email protected]>\ n "" idioma: \ n "" Versão de Mime: 1.0 \ n "" Tipo de Conteúdo: Texto/Plano; charset = charset \ n "" Content-transfer-coding: 8bit \ n " #: myprogram: 48 msgid" Bem-vindo ao meu programa de teste !"msgstr" " #: myprogram: 52 msgid" Clique em mim para abrir o terminal "msgstr" " 

Agora, para começar a traduzir as cordas ... crie um arquivo separado para cada idioma que você deseja traduzir seu programa para usar o “ISO-639-1”Códigos de idiomas dentro dos“po”Pasta, por exemplo, se você deseja traduzir seu programa para árabe, Crie um arquivo chamado “ar.po”E copie o conteúdo do“Myprogram.Panela”Arquivo para ele.

Se você quiser traduzir seu programa para Alemão, Crie um "de.po”Arquive e copie o conteúdo do“Myprogram.Panela”Arquivo para ele ... e então, você deve criar um arquivo para cada idioma que deseja traduzir seu programa para.

Agora, vamos trabalhar no “ar.po”Arquivo, copie o conteúdo do“Myprogram.Panela”Arquive e coloque -o dentro desse arquivo e edite o seguinte:

  1. Algum título descritivo: Você pode inserir o título do seu projeto aqui se quiser.
  2. Ano o detentor de direitos autorais do pacote: substitua -o pelo ano em que você criou o projeto.
  3. PACOTE: substitua -o pelo nome do pacote.
  4. Primeiro autor <[email protected]>, ANO: Substitua isso pelo seu nome real, e -mail e o ano em que você traduziu o arquivo.
  5. Versão do pacote: Substitua -o pela versão do pacote do Debian/Control File.
  6. Ano-da-do-da-da-da-zona: Mi+Zone: não precisa de explicação, você pode alterá -lo para qualquer data que quiser.
  7. NOME COMPLETO <[email protected]>: Substitua também seu nome e e -mail.
  8. Team de linguagem: substitua -o pelo nome do idioma para o qual você está traduzindo, por exemplo, "árabe" ou "francês".
  9. Linguagem: Aqui, você deve inserir o código ISO-639-1 para o idioma para o qual você está traduzindo, por exemplo "AR", "FR", "de" ... etc, você pode encontrar uma lista completa aqui.
  10. CHARST: Esta etapa é importante, substitua esta string por "UTF-8" (sem as citações) que suporta a maioria dos idiomas.

Agora comece a traduzir! Adicione sua tradução para cada string após as citações em “msgstr”. Salve o arquivo e saia. Um bom arquivo de tradução para o
Língua árabe como exemplo deve ficar assim:

# Meu programa # Copyright (c) 2014 # Este arquivo é distribuído sob a mesma licença que o pacote MyProgram. # Hanny Helal <[email protected]<, 2014. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: 1.0 \ n"" Relatório-msgid-bugs-to: \ n "" Data de criação de potro: 2014-12-29 21: 28+0200\ n "" Po-revisão-data: 2014-12-29 22: 28+0200\ n "" Último translator: M.Hanny Sabbagh \ n "" Team de linguagem: árabe <[email protected]<\ n "" idioma: ar \N "" Versão de Mime: 1.0\ n "" Tipo de Conteúdo: Texto/Plano; charset = utf-8\ n "" codificação de transferência de conteúdo: 8 bits\ n " #: myprogram: 48 msgid"Bem -vindo ao meu programa de teste !"msgstr"أهلًا بك إلى برنامج Queria!" #: myprogram: 52 msgid"Clique em mim para abrir o terminal"msgstr"اضغط ença" 

Não há mais nada a fazer, basta empacotar o programa usando o seguinte comando:

$ debuild -us -UC 

Agora tente instalar o novo pacote criado usando o seguinte comando.

$ sudo dpkg -i myProgram_1.0_All.Deb 

E altere a linguagem do sistema usando o “Suporte de linguas”Programar ou usar qualquer outro programa para árabe (ou o idioma para o qual você traduziu seu arquivo):

Suporte de linguas

Após a seleção, seu programa será traduzido para o idioma árabe.

Traduzido para o árabe

Aqui termina nossa série sobre programação PygoBject para o Linux Desktop, é claro que há muitas outras coisas que você pode aprender com a documentação oficial e a referência da API Python GI…

O que você acha da série? Você acha útil? Você foi capaz de criar seu primeiro aplicativo seguindo esta série? Compartilhe -nos seus pensamentos!