calibre - en to cs translation catalogue (78 entries)

en: Writing your own plugins to extend calibre's functionality
cs: Psaní vlastních modulů pro rozšíření funkcí 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`.
cs: Calibre má velice modulární provedení. Téměř všechny funkce jsou ve formě modulů. Moduly jsou použity pro převod, stahování zpráv (ačkoliv ty jsou nazvány předpisy), různé komponenty uživatelského rozhraní, připojení k různým zařízením, zpracování souborů při jejich přidávání do Calibre a tak dále. Kompletní seznam všech vestavěných modulů můžete získat v Calibre v :guilabel:`Předvolby->Rozšířené->Moduly`.

en: Here, we will teach you how to create your own plugins to add new features to calibre.
cs: Zde vás naučíme, jak vytvořit vlastní moduly pro přidání nových funkcí do Calibre.

en: Contents
cs: Obsah

en: This only applies to calibre releases >= 0.8.60
cs: Toto platí pouze pro vydání Calibre >= 0.8.60

en: Anatomy of a calibre plugin
cs: Anatomie modulu 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.
cs: Modul Calibre je velice jednoduchý, je to prostě soubor ZIP, který obsahuje nějaký kód Pythonu a jakékoliv jiné zdroje, jako soubory obrázků vyžadované modulem. Bez dalších okolků se pojďme podívat na základní příklad.

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:
cs: Předpokládejme, že máte instalaci Calibre, kterou používáte pro vlastní publikaci různých elektronických dokumentů ve formátech EPUB a MOBI. Chtěli byste, aby všechny soubory generované v Calibre měli vydavatele nastaveného jako "Hello World", zde je návod, jak to udělat. Vytvořte soubor s názvem :file:`__init__.py` (toto je speciální název a musí být vždy použit pro hlavní soubor vašeho modulu) a zadejte do něj následující kód Pythonu:

en: That's all. To add this code to calibre as a plugin, simply run the following in the folder in which you created :file:`__init__.py`::
cs: To je vše. Pro přidání tohoto kódu do Calibre jako modulu stačí spustit následující ve složce, ve které jste vytvořili :file:`__init__.py`::

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/`.
cs: Na macOS jsou nástroje příkazového řádku uvnitř sady Calibre, například pokud jste nainstalovali Calibre do :file:`/Applications`, nástroje příkazového řádku jsou v :file:`/Applications/calibre.app/Contents/MacOS/`.

en: You can download the Hello World plugin from :download_file:`helloworld_plugin.zip`.
cs: Modul Hello World můžete stáhnout z :download_file:`helloworld_plugin.zip`.

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.
cs: Pokaždé, když použijete Calibre, aby převedlo knihu, bude zavolána metoda :meth:`run` modulu a převedená kniha bude mít vydavatele nastaveného na "Hello World". Toto je jednoduchý modul, pojďme se přesunout na složitější příklad, který skutečně přidá komponentu do uživatelského rozhraní.

en: A User Interface plugin
cs: Modul uživatelského rozhraní

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.
cs: Tento modul bude rozdělen do několika souborů (aby kód zůstal čistý). Ukáže vám, jak získat zdroje (soubory obrázků nebo dat) ze souboru ZIP modulu, což umožňuje uživatelům konfigurovat váš modul, jak vytvořit prvky v uživatelském rozhraní Calibre a jak přistupovat k a dotazovat se databáze knih v Calibre.

en: You can download this plugin from :download_file:`interface_demo_plugin.zip`
cs: Tento modul můžete stáhnout z :download_file:`interface_demo_plugin.zip`

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``.
cs: První věc, na kterou pamatujte, je to, že tento soubor ZIP má v sobě mnohem více souborů, vysvětleno níže, věnujte zvláštní pozornost ``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::
cs: Prázdný textový soubor použitý pro umožnění kouzla vícesouborového modulu. Tento soubor musí být přítomen ve všech modulech, které používají více než jeden soubor .py. Měl by být prázdný a jeho název souboru musí být ve formě: plugin-import-name-**some_name**.txt. Přítomnost tohoto souboru vám umožňuje importovat kód ze souborů .py přítomných uvnitř souboru ZIP pomocí příkazu, jako je:

en: The prefix ``calibre_plugins`` must always be present. ``some_name`` comes from the filename of the empty text file. ``some_module`` refers to  :file:`some_module.py` file inside the ZIP file. Note that this importing is just as powerful as regular Python imports. You can create packages and subpackages of .py modules inside the ZIP file, just like you would normally (by defining __init__.py in each sub-folder), and everything should "just work".
cs: Předpona ``calibre_plugins`` musí být vždy přítomná. ``some_name`` pochází z názvu prázdného textového souboru. ``some_module`` odkazuje na soubor :file:`some_module.py` uvnitř souboru ZIP. Pamatujte, že toto importování je právě tak výkonné jako obyčejné importy Pythonu. Uvnitř souboru ZIP můžete vytvářet balíčky a podbalíčky modulů .py, jako byste to dělali normálně (definováním __init__.py v každé podsložce) a všechno by mělo „prostě fungovat.

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).
cs: Název, který použijete pro ``some_name``, zadá globální obor názvů sdílený všemi moduly, **takže by měl být co nejjedinečnější**. Ale nezapomeňte, že to musí být platný identifikátor Pythonu (pouze abecední znaky, číslice a podtržítko).

en: As before, the file that defines the plugin class
cs: Jako předtím, soubor, který definuje třídu modulu

en: This file contains the actual code that does something useful
cs: Tento soubor obsahuje skutečný kód, který dělá něco užitečného

en: This file defines the interface part of the plugin
cs: Tento soubor definuje součást rozhraní modulu

en: The icon for this plugin
cs: Ikona pro tento modul

en: A text file with information about the plugin
cs: Textový soubor s informacemi o modulu

en: A folder containing .mo files with the translations of the user interface of your plugin into different languages. See below for details.
cs: Složka obsahující soubory .mo s překlady uživatelského rozhraní vašeho modulu do různých jazyků. Podívejte se níže na podrobnosti.

en: Now let's look at the code.
cs: Nyní se podívejme na kód.

en: First, the obligatory ``__init__.py`` to define the plugin metadata:
cs: Nejdříve povinný ``__init__.py`` pro definování metadat modulu:

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.
cs: Jediná funkce, která stojí za pozornost, je pole :attr:`actual_plugin`. Protože Calibre má jak příkazový řádek, tak grafická rozhraní, moduly grafického rozhraní, jako je tento, by v __init__.py neměly načítat žádné knihovny grafického rozhraní. Pole actual_plugin to dělá za vás tím, že řekne Calibre, že skutečný modul je třeba hledat v jiném souboru uvnitř vašeho archivu ZIP, který bude načten pouze v kontextu grafického rozhraní.

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.
cs: Nezapomeňte, že aby toto fungovalo, musíte mít ve svém souboru ZIP soubor plugin-import-name-some_name.txt, jak bylo probráno výše.

en: Also there are a couple of methods for enabling user configuration of the plugin. These are discussed below.
cs: Také existuje pár metod pro povolení uživatelské konfigurace modulu. Ty jsou popsány níže.

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:
cs: Nyní se podívejme na ui.py, který definuje skutečné grafické rozhraní modulu. Zdrojový kód je silně okomentovaný a měl by být sebevysvětlující:

en: The actual logic to implement the Interface Plugin Demo dialog.
cs: Skutečná logika pro implementaci dialogového okna rozhraní ukázkového modulu.

en: Getting resources from the plugin ZIP file
cs: Získání zdrojů ze souboru ZIP modulu

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.
cs: Systém načítání doplňků Calibre definuje pár vestavěných funkcí, které vám umožňují pohodlně získat soubory ze souboru ZIP modulu.

en: This function should be called with a list of paths to files inside the ZIP file. For example to access the file :file:`icon.png` in the folder images in the ZIP file, you would use: ``images/icon.png``. Always use a forward slash as the path separator, even on Windows. When you pass in a single name, the function will return the raw bytes of that file or None if the name was not found in the ZIP file. If you pass in more than one name then it returns a dictionary mapping the names to bytes.  If a name is not found, it will not be present in the returned dictionary.
cs: Tato funkce by měla být volána se seznamem cest k souborům uvnitř souboru ZIP. Například pro přístup k souboru :file:`icon.png` ve složce images v souboru ZIP byste použili: ``images/icon.png``. Jako oddělovač cest vždy používejte lomítko, a to i ve Windows. Pokud předáte jeden název, funkce vrátí nezpracované bajty tohoto souboru nebo None, pokud název nebyl v souboru ZIP nalezen. Pokud předáte více než jeden název, vrátí slovník mapující názvy na bajty. Pokud název nebyl nalezen, nebude ve vráceném slovníku přítomen.

en: A wrapper for get_resources() that creates QIcon objects from the raw bytes returned by get_resources. If a name is not found in the ZIP file the corresponding QIcon will be null. In order to support icon theme-ing, pass in the human friendly name of your plugin as ``plugin_name``. If the user is using an icon theme with icons for your plugin, they will be loaded preferentially.
cs: Obal pro funkci get_resources(), který vytváří objekty QIcon ze surových bajtů vrácených funkcí get_resources. Pokud v souboru ZIP není nalezen název, bude odpovídající QIcon nulový. Aby bylo možné podporovat změnu ikon motivu, předejte lidsky přívětivý název vašeho modulu jako ``nazev_modulu``. Pokud uživatel používá motiv ikon s ikonami vašeho modulu, budou načteny přednostně.

en: Enabling user configuration of your plugin
cs: Povolení uživatelské konfigurace vašeho modulu

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:
cs: Abyste povolili uživatelům konfigurovat váš modul, musíte definovat ve své základní třídě modulu tři metody, **is_customizable**, **config_widget** a **save_settings** jak je uvedeno níže:

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.
cs: Calibre má mnoho různých způsobů, jak ukládat konfigurační data (starší verze jeho dlouhé historie). Doporučený způsob je použít třídu **JSONConfig**, která ukládá vaše konfigurační informace v souboru .json.

en: The code to manage configuration data in the demo plugin is in config.py:
cs: Kód pro správu konfiguračních dat v ukázkovém modulu je v config.py:

en: The ``prefs`` object is now available throughout the plugin code by a simple::
cs: Object ``prefs`` je nyní dostupný v celém kódu modulu jednoduchým::

en: You can see the ``prefs`` object being used in main.py:
cs: Můžete vidět objekt ``prefs`` použitý v main.py:

en: Edit book plugins
cs: Moduly pro úpravu knihy

en: Now let's change gears for a bit and look at creating a plugin to add tools to the calibre book editor. The plugin is available here: :download_file:`editor_demo_plugin.zip`.
cs: Nyní pojďme na chvíli přeřadit a podívejme se na vytvoření modulu pro přidání nástrojů do editoru knih Calibre. Modul je dostupný zde: :download_file:`editor_demo_plugin.zip`.

en: The first step, as for all plugins is to create the import name empty txt file, as described :ref:`above <import_name_txt>`. We shall name the file ``plugin-import-name-editor_plugin_demo.txt``.
cs: Prvním krokem, stejně jako pro všechny moduly, je vytvořit název importu prázdného souboru txt, jak je popsáno :ref:`výše <import_name_txt>`. Pojmenujeme soubor ``plugin-import-name-editor_plugin_demo.txt``.

en: Now we create the mandatory ``__init__.py`` file that contains metadata about the plugin -- its name, author, version, etc.
cs: Nyní vytvoříme povinný soubor ``__init__.py``, který obsahuje metadata o modulu -- jeho název, autora, verzi atd.

en: A single editor plugin can provide multiple tools each tool corresponds to a single button in the toolbar and entry in the :guilabel:`Plugins` menu in the editor. These can have sub-menus in case the tool has multiple related actions.
cs: Jeden modul editoru může poskytnout více nástrojů, každý nástroj odpovídá jednomu tlačítku na panelu nástrojů a položce v nabídce :guilabel:Moduly` v editoru. Ty mohou mít podnabídky v případě, že nástroj má více souvisejících akcí.

en: The tools must all be defined in the file ``main.py`` in your plugin. Every tool is a class that inherits from the :class:`calibre.gui2.tweak_book.plugin.Tool` class. Let's look at ``main.py`` from the demo plugin, the source code is heavily commented and should be self-explanatory. Read the API documents of the :class:`calibre.gui2.tweak_book.plugin.Tool` class for more details.
cs: Nástroje musí být všechny definovány v souboru ``main.py`` ve vašem modulu. Každý nástroj je třída, která dědí ze třídy :class:`calibre.gui2.tweak_book.plugin.Tool`. Pojďme se podívat na ``main.py`` z ukázkového modulu, zdrojový kód je silně komentován a měl by být samovysvětlující. Pro více informací si přečtěte dokumenty API ke třídě :class:`calibre.gui2.tweak_book.plugin.Tool`.

en: Here we will see the definition of a single tool that will multiply all font sizes in the book by a number provided by the user. This tool demonstrates various important concepts that you will need in developing your own plugins, so you should read the (heavily commented) source code carefully.
cs: Zde uvidíme definici jednoho nástroje, který se bude násobit všechny velikosti písem v knize číslem zadaným uživatelem. Tento nástroj ukazuje různé důležité pojmy, které budete potřebovat při vývoji svých vlastních modulů, takže byste si měli pečlivě přečíst (silně komentovaný) zdrojový kód.

en: Let's break down ``main.py``. We see that it defines a single tool, named *Magnify fonts*. This tool will ask the user for a number and multiply all font sizes in the book by that number.
cs: Pojďme si rozebrat ``main.py``. Vidíme, že definuje jeden nástroj s názvem *Zvětšit písma*. Tento nástroj požádá uživatele o číslo a vynásobí všechny velikosti písem v knize tímto číslem.

en: The first important thing is the tool name which you must set to some relatively unique string as it will be used as the key for this tool.
cs: První důležitá věc je název nástroje, který musíte nastavit na nějaký relativně jedinečný řetězec, protože bude použit jako klíč pro tento nástroj.

en: The next important entry point is the :meth:`calibre.gui2.tweak_book.plugin.Tool.create_action`. This method creates the QAction objects that appear in the plugins toolbar and plugin menu. It also, optionally, assigns a keyboard shortcut that the user can customize. The triggered signal from the QAction is connected to the ask_user() method that asks the user for the font size multiplier, and then runs the magnification code.
cs: Dalším důležitým vstupním bodem je :meth:`calibre.gui2.tweak_book.plugin.Tool.create_action`. Tato metoda vytvoří objekty QAction, které se zobrazí v panelu nástrojů modulů a nabídce modulu. Také to volitelně přiřadí klávesovou zkratku, kterou si uživatel může přizpůsobit. Spuštěný signál z QAction je spojený s metodou ask_user(), která se zeptá uživatele na násobitel velikosti písma, a pak spustí kód zvětšení.

en: The magnification code is well commented and fairly simple. The main things to note are that you get a reference to the editor window as ``self.gui`` and the editor *Boss* as ``self.boss``. The *Boss* is the object that controls the editor user interface. It has many useful methods, that are documented in the :class:`calibre.gui2.tweak_book.boss.Boss` class.
cs: Kód zvětšení kód je dobře okomentován a poměrně jednoduchý. Hlavními věcmi, na které pamatujte, je to, že jste získali odkaz na okno editoru jako ``self.gui`` a *Boss* editoru jako ``self.boss``. *Boss* je objekt, který řídí uživatelské rozhraní editoru. Má mnoho užitečných metod, které jsou popsány ve třídě :class:`calibre.gui2.tweak_book.boss.Boss`.

en: Finally, there is ``self.current_container`` which is a reference to the book being edited as a :class:`calibre.ebooks.oeb.polish.container.Container` object. This represents the book as a collection of its constituent HTML/CSS/image files and has convenience methods for doing many useful things. The container object and various useful utility functions that can be reused in your plugin code are documented in :ref:`polish_api`.
cs: Nakonec je zde ``self.current_container``, což je odkaz na knihu upravovanou jako objekt :class:`calibre.ebooks.oeb.polish.container.Container`. Znázorňuje knihu jako kolekci jejích základních souborů HTML, CSS nebo obrázků a má pohodlné metody pro provádění mnoha užitečných věcí. Objekt kontejneru a různé užitečné funkce nástrojů, které mohou být znovu použity v kódu vašeho modulu, jsou popsány v :ref:`polish_api`.

en: Adding translations to your plugin
cs: Přidávání překladů do vašeho modulu

en: You can have all the user interface strings in your plugin translated and displayed in whatever language is set for the main calibre user interface.
cs: Všechny řetězce uživatelského rozhraní ve svém modulu můžete mít přeloženy a zobrazeny v jakémkoliv jazyce, který je nastaven pro hlavní uživatelské rozhraní Calibre.

en: The first step is to go through your plugin's source code and mark all user visible strings as translatable, by surrounding them in _(). For example::
cs: Prvním krokem je projít zdrojový kód svého modulu a označit všechny řetězce viditelné uživatelem jako přeložitelné jejich obklopením _(). Například::

en: Then use some program to generate .po files from your plugin source code. There should be one .po file for every language you want to translate into. For example: de.po for German, fr.po for French and so on. You can use the `Poedit <https://poedit.net/>`_ program for this.
cs: Pak použijte nějaký program pro vygenerování souborů .po ze zdrojového kódu vašeho doplňku. Měl by být jeden soubor .po pro každý jazyk, do kterého chcete překládat. Například: cs.po pro češtinu, de.po pro němčinu, fr.po pro francouzštinu a tak dále. K tomu můžete použít program `Poedit <https://poedit.net/>`_.

en: Send these .po files to your translators. Once you get them back, compile them into .mo files. You can again use Poedit for that, or just do::
cs: Tyto soubory .po pošlete svým překladatelům. Jakmile je dostanete zpátky, zkompilovat je do souborů .mo. K tomu můžete znovu použít Poedit, nebo prostě udělejte::

en: Put the .mo files into the ``translations`` folder in your plugin.
cs: Soubory .mo umístěte do složky ``translations`` ve svém modulu.

en: The last step is to simply call the function `load_translations()` at the top of your plugin's .py files. For performance reasons you should only call this function in those .py files that actually have translatable strings. So in a typical User Interface plugin you would call it at the top of ``ui.py`` but not ``__init__.py``.
cs: Posledním krokem je jednoduše zavolat funkci `load_translations()` na začátku souborů .py vašeho modulu. Z výkonnostních důvodů byste měli volat tuto funkci pouze v těch souborech .py, které skutečně mají přeložitelné řetězce. Takže v typickém modulu uživatelského rozhraní byste ji volali na začátku ``ui.py`` ale ne ``__init__.py``.

en: You can test the translations of your plugins by changing the user interface language in calibre under :guilabel:`Preferences->Interface->Look & feel` or by running calibre with the ``CALIBRE_OVERRIDE_LANG`` environment variable set. For example::
cs: Překlady svých modulů můžete otestovat změnou jazyka uživatelského rozhraní v Calibre pod :guilabel:`Předvolby->Rozhraní->Vzhled a chování`  nebo spuštěním Calibre s nastavenou proměnnou prostředí ``CALIBRE_OVERRIDE_LANG``. Například::

en: Replace ``de`` with the language code of the language you want to test.
cs: Nahraďte ``de`` kódem jazyka, který chcete otestovat.

en: For translations with plurals, use the ``ngettext()`` function instead of ``_()``. For example::
cs: Pro překlady s množnými čísly použijte funkci ``ngettext()`` namísto ``_()``. Například::

en: The plugin API
cs: Rozhraní API modulu

en: As you may have noticed above, a plugin in calibre is a class. There are different classes for the different types of plugins in calibre. Details on each class, including the base class of all plugins can be found in :ref:`plugins`.
cs: Jak jste si možná všimli výše, modul Calibre je třída. V Calibre existují různé třídy pro různé typy modulů. Podrobnosti o každé třídě, včetně základní třídy všech modulů, lze nalézt v :ref:`moduly <plugins>`.

en: Your plugin is almost certainly going to use code from calibre. To learn how to find various bits of functionality in the calibre code base, read the section on the calibre :ref:`code_layout`.
cs: Váš modul téměř určitě bude používat kód z Calibre. Abyste zjistili, jak najít různé kousky funkcí v základním kódu Calibre, přečtěte si část o :ref:`code_layout` Calibre.

en: Debugging plugins
cs: Ladění modulů

en: The first, most important step is to run calibre in debug mode. You can do this from the command line with::
cs: Prvním a nejdůležitějším krokem je spuštění Calibre v režimu ladění. To můžete udělat z příkazového řádku pomocí::

en: Or from within calibre by right-clicking the :guilabel:`Preferences` button or using the :kbd:`Ctrl+Shift+R` keyboard shortcut.
cs: Nebo z Calibre kliknutím pravým tlačítkem myši na tlačítko :guilabel:`Předvolby` nebo pomocí klávesové zkratky :kbd:`Ctrl+Shift+R`.

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.
cs: Při spuštění z příkazového řádku, bude výstup ladění vypsán do konzole, při spuštění z Calibre, půjde výstup do textového souboru.

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.
cs: Do kódu svého modulu můžete kamkoliv vložit příkazy tisku, budou mít výstup v režimu ladění. Nezapomeňte, že je to Python, neměli byste opravdu potřebovat nic víc než příkazy tisku pro ladění ;) Celé Celibre jsem vytvořil pouze pomocí této techniky ladění.

en: You can quickly test changes to your plugin by using the following command line::
cs: Změny ve svém modulu můžete rychle testovat pomocí následujícího příkazového řádku::

en: This will shutdown a running calibre, wait for the shutdown to complete, then update your plugin in calibre and relaunch calibre.
cs: Toto vypne spuštěné Calibre, počkejte až bude vypnutí dokončeno, a pak aktualizujte svůj modul v Calibre a znovu spusťte Calibre.

en: More plugin examples
cs: Další příklady modulů

en: You can find a list of many sophisticated calibre plugins `here <https://www.mobileread.com/forums/showthread.php?t=118764>`_.
cs: Seznam mnoha propracovaných modulů Calibre můžete nalézt `zde <https://www.mobileread.com/forums/showthread.php?t=118764>`_.

en: Sharing your plugins with others
cs: Sdílení vašeho modulu s ostatními

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>`_.
cs: Pokud byste chtěli sdílet moduly, které jste vytvořili, s ostatními uživateli Calibre, zveřejněte svůj modul v novém vláknu ve `fóru modulů Calibre <https://www.mobileread.com/forums/forumdisplay.php?f=237>`_.
