calibre - en to pt translation catalogue (49 entries)

en: Writing your own plugins to extend calibre's functionality
pt: Criar os seus próprios plugins para aumentar as funcionalidades do Calibre

en: calibre has a very modular design. Almost all functionality in calibre comes in the form of plugins. Plugins are used for conversion, for downloading news (though these are called recipes), for various components of the user interface, to connect to different devices, to process files when adding them to calibre and so on. You can get a complete list of all the built-in plugins in calibre by going to :guilabel:`Preferences->Advanced->Plugins`.
pt: O Calibre possui um design muito modular. Quase todas as funcionalidades do Calibre existem sob a forma de plugins. Os plugins são usados para conversão, para descarregar notícias (que são chamadas de receitas), em vários componentes da interface de utilizador, para se ligar a dispositivos diferentes, para processar ficheiros ao serem adicionados ao Calibre e assim por diante. Para obter uma lista completa de todos os plugins embutidos no Calibre, aceda a :guilabel:`Preferências-> Avançado-> Plugins`.

en: Here, we will teach you how to create your own plugins to add new features to calibre.
pt: Aqui vamos mostrar como criar os seus próprios plugins e adicionar novas funcionalidades ao Calibre

en: Contents
pt: Conteúdos

en: This only applies to calibre releases >= 0.8.60
pt: Isto só se aplica a versões Calibre >= 0.8.60

en: Anatomy of a calibre plugin
pt: Anatomia de um plugin Calibre

en: A calibre plugin is very simple, it's just a ZIP file that contains some Python code and any other resources like image files needed by the plugin. Without further ado, let's see a basic example.
pt: Um plugin Calibre é muito simples, é apenas um ficheiro ZIP que contém algum código Python e outros recursos, como ficheiros de imagem necessários ao plugin. Sem mais delongas, vamos ver um exemplo básico.

en: Suppose you have an installation of calibre that you are using to self publish various e-documents in EPUB and MOBI formats. You would like all files generated by calibre to have their publisher set as "Hello world", here's how to do it. Create a file named :file:`__init__.py` (this is a special name and must always be used for the main file of your plugin) and enter the following Python code into it:
pt: Suponha que você tenha uma instalação de calibre que esteja usando para publicar automaticamente vários documentos eletrônicos nos formatos EPUB e MOBI. Você deseja que todos os arquivos gerados pelo calibre tenham o editor definido como "Olá, mundo", veja como fazê-lo. Crie um arquivo chamado: file: `__init __. Py` (este é um nome especial e sempre deve ser usado para o arquivo principal do seu plugin) e insira o seguinte código Python nele:

en: On macOS, the command line tools are inside the calibre bundle, for example, if you installed calibre in :file:`/Applications` the command line tools are in :file:`/Applications/calibre.app/Contents/MacOS/`.
pt: No macOS, as ferramentas de linha de comando estão dentro do pacote do Calibre. Por exemplo, se instalou o Calibre em :file:`/Applications` as ferramentas de linha de comando estão em :file:`/Applications/calibre.app/Contents/MacOS/`.

en: Every time you use calibre to convert a book, the plugin's :meth:`run` method will be called and the converted book will have its publisher set to "Hello World". This is a trivial plugin, lets move on to a more complex example that actually adds a component to the user interface.
pt: Toda vez que você usar o calibre para converter um livro, o método plugin: meth: `run` será chamado e o livro convertido terá seu editor definido como" Hello World ". Este é um plugin trivial, vamos para um exemplo mais complexo que realmente adiciona um componente à interface do usuário.

en: A User Interface plugin
pt: Um plugin da Interface do utilizador

en: This plugin will be spread over a few files (to keep the code clean). It will show you how to get resources (images or data files) from the plugin ZIP file, allow users to configure your plugin, how to create elements in the calibre user interface and how to access and query the books database in calibre.
pt: Este plugin será espalhado por alguns arquivos (para manter o código limpo). Ele mostrará como obter recursos (imagens ou arquivos de dados) do arquivo ZIP do plug-in, permitir que os usuários configurem seu plug-in, como criar elementos na interface do usuário do calibre e como acessar e consultar o banco de dados de livros no calibre.

en: The first thing to note is that this ZIP file has a lot more files in it, explained below, pay particular attention to ``plugin-import-name-interface_demo.txt``.
pt: A primeira coisa a observar é que esse arquivo ZIP contém muito mais arquivos, explicados abaixo, e preste atenção ``plugin-import-name-interface_demo.txt``.

en: An empty text file used to enable the multi-file plugin magic. This file must be present in all plugins that use more than one .py file. It should be empty and its filename must be of the form: ``plugin-import-name-**some_name**.txt``. The presence of this file allows you to import code from the .py files present inside the ZIP file, using a statement like::
pt: Um ficheiro de texto vazio usado para permitir a magia do plugin de multi-ficheiros. O ficheiro tem de estar presente em todas os plugins que usam mais do que um ficheiro .py. Deve estar vazio e o seu nome tem de estar na forma: ``plugin-import-name-**some_name**.txt``. A presença deste ficheiro permite-lhe importar código dos ficheiros .py presentes dentro do ficheiro ZIP, usando uma declaração como no exemplo::

en: The name you use for ``some_name`` enters a global namespace shared by all plugins, **so make it as unique as possible**. But remember that it must be a valid Python identifier (only alphabets, numbers and the underscore).
pt: O nome que você usa para `` some_name`` entra em um namespace global compartilhado por todos os plugins, ** para torná-lo o mais exclusivo possível **. Mas lembre-se de que deve ser um identificador Python válido (apenas alfabetos, números e sublinhado)

en: As before, the file that defines the plugin class
pt: Tal como anteriormente, o ficheiro que define a classe do plugin

en: This file contains the actual code that does something useful
pt: Este ficheiro contém o código efetivo que faz algo útil

en: This file defines the interface part of the plugin
pt: Esse ficheiro define a parte da interface do plugin

en: The icon for this plugin
pt: O ícone para este plugin

en: A text file with information about the plugin
pt: Um ficheiro de texto com a informação sobre o plugin

en: **translations**
pt: **traduções**

en: A folder containing .mo files with the translations of the user interface of your plugin into different languages. See below for details.
pt: Uma pasta contendo arquivos ``.mo`` com as traduções da interface do usuário do seu plugin para diferentes idiomas. Veja abaixo os detalhes.

en: Now let's look at the code.
pt: Agora vamos ver o código

en: First, the obligatory ``__init__.py`` to define the plugin metadata:
pt: Primeiro, o obrigatório ``__init__.py`` para definir os metadados do plugin:

en: The only noteworthy feature is the field :attr:`actual_plugin`. Since calibre has both command line and GUI interfaces, GUI plugins like this one should not load any GUI libraries in __init__.py. The actual_plugin field does this for you, by telling calibre that the actual plugin is to be found in another file inside your ZIP archive, which will only be loaded in a GUI context.
pt: O único recurso digno de nota é o campo :attr:`actual_plugin`. Como o *Calibre* tem linha de comando e interfaces *GUI*, plug-ins *GUI* como este não devem carregar nenhuma biblioteca *GUI* em ``__init__.py``. O campo ``actual_plugin`` faz isso para você, informando ao *Calibre* que o plugin real deve ser encontrado em outro arquivo dentro do seu arquivo ZIP, que só será carregado em um contexto GUI.

en: Remember that for this to work, you must have a plugin-import-name-some_name.txt file in your plugin ZIP file, as discussed above.
pt: Lembre-se de que, para que isso funcione, você deve ter um arquivo ``plugin-import-name-some_name.txt`` no arquivo ZIP do plugin, conforme discutido acima.

en: Also there are a couple of methods for enabling user configuration of the plugin. These are discussed below.
pt: Também existem alguns métodos para habilitar a configuração do plugin pelo usuário. Eles são discutidos abaixo.

en: Now let's look at ui.py which defines the actual GUI plugin. The source code is heavily commented and should be self explanatory:
pt: Agora vamos dar uma olhada em ``ui.py`` que define o plugin GUI real. O código-fonte é muito comentado e deve ser autoexplicativo:

en: The actual logic to implement the Interface Plugin Demo dialog.
pt: A lógica real para implementar a caixa de diálogo das *Interface Plugin Demo*.

en: Getting resources from the plugin ZIP file
pt: Obtendo recursos do ficheiro ZIP do plugin

en: calibre's plugin loading system defines a couple of built-in functions that allow you to conveniently get files from the plugin ZIP file.
pt: o sistema de carregamento do plugin do calibre define algumas funções built-in que permitem obter convenientemente os arquivos do arquivo ZIP do plugin.

en: Enabling user configuration of your plugin
pt: Ativar a configuração de utilizador para o seu plugin

en: To allow users to configure your plugin, you must define three methods in your base plugin class, **is_customizable**, **config_widget** and **save_settings** as shown below:
pt: Para permitir que os usuários configurem seu plug-in, você deve definir três métodos em sua classe base de plug-in, **is_customizable()**, **config_widget()** e **save_settings()** conforme mostrado abaixo:

en: calibre has many different ways to store configuration data (a legacy of its long history). The recommended way is to use the **JSONConfig** class, which stores your configuration information in a .json file.
pt: calibre tem muitas maneiras diferentes de armazenar dados de configuração (um legado de sua longa história). A maneira recomendada é usar a classe **JSONConfig**, que armazena suas informações de configuração em um arquivo ``.json``.

en: The code to manage configuration data in the demo plugin is in config.py:
pt: O código para gerenciar os dados de configuração no plug-in demo está em ``config.py``:

en: The ``prefs`` object is now available throughout the plugin code by a simple::
pt: O objeto ``prefs`` agora está disponível em todo o código do plugin por um simples::

en: You can see the ``prefs`` object being used in main.py:
pt: Pode ver o objeto ``prefs`` a ser usado em main.py:

en: Edit book plugins
pt: Editar plugins de livro

en: Adding translations to your plugin
pt: Adicionar traduções ao seu plugin

en: The plugin API
pt: A API de plugin

en: Debugging plugins
pt: Depurar plugins

en: The first, most important step is to run calibre in debug mode. You can do this from the command line with::
pt: A primeira e mais importante etapa é executar o Calibre em modo de depuração. Pode fazer isso na linha de comando com::

en: When running from the command line, debug output will be printed to the console, when running from within calibre the output will go to a txt file.
pt: Ao executar a partir da linha de comando, a saída de depuração será impressa na consola; ao executar a partir do *Calibre*, a saída irá para um ficheiro``.txt``.

en: You can insert print statements anywhere in your plugin code, they will be output in debug mode. Remember, this is Python, you really shouldn't need anything more than print statements to debug ;) I developed all of calibre using just this debugging technique.
pt: É possível inserir declarações ``print()`` em qualquer lugar do código do plugin, elas serão geradas no modo de depuração. Lembre-se, isso é *Python*, você realmente não precisa de nada além de declarações ``print()`` para depurar ;) Desenvolvi todo o *Calibre* usando apenas esta técnica de depuração.

en: You can quickly test changes to your plugin by using the following command line::
pt: Você pode testar rapidamente as alterações em seu plug-in usando a seguinte linha de comando::

en: This will shutdown a running calibre, wait for the shutdown to complete, then update your plugin in calibre and relaunch calibre.
pt: Isso desligará o calibre em execução, esperará até que o desligamento seja concluído e, em seguida, atualizará o calibre do plug-in e o reiniciará.

en: More plugin examples
pt: Mais exemplos de plugins

en: Sharing your plugins with others
pt: Partilhar os seus plugins com outros

en: If you would like to share the plugins you have created with other users of calibre, post your plugin in a new thread in the `calibre plugins forum <https://www.mobileread.com/forums/forumdisplay.php?f=237>`_.
pt: Se você gostaria de compartilhar os plug-ins que criou com outros usuários do calibre, poste seu plug-in em um novo tópico no `fórum de plug-ins do calibre <https://www.mobileread.com/forums/forumdisplay.php?f=237>`_.
