# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023, The Funkwhale Collective # This file is distributed under the same license as the funkwhale package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: funkwhale 1.2.10\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-03-24 18:14+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../developer/plugins/create.md:1 msgid "Write a plugin" msgstr "" #: ../../developer/plugins/create.md:3 msgid "You can write plugins to extend the features of your Funkwhale pod. Follow the instructions in this guide to get started with your first plugin." msgstr "" #: ../../developer/plugins/create.md:10 msgid "Before you begin" msgstr "" #: ../../developer/plugins/create.md:12 msgid "Before you start writing your plugin, you need to understand the following core concepts:" msgstr "" #: ../../developer/plugins/create.md:19 msgid "We'll explain each of these concepts in the next few sections" msgstr "" #: ../../developer/plugins/create.md:21 msgid "Scopes" msgstr "" #: ../../developer/plugins/create.md:23 msgid "Plugins fall into two different **scopes**:" msgstr "" #: ../../developer/plugins/create.md:25 msgid "User-level plugins that are configured by end-users for their own use" msgstr "" #: ../../developer/plugins/create.md:26 msgid "Pod-level plugins that are configured by pod admins and are not connected to a particular user" msgstr "" #: ../../developer/plugins/create.md:28 msgid "User-level plugins can also be used to import files from a third-party service, such as cloud storage or FTP." msgstr "" #: ../../developer/plugins/create.md:30 msgid "Hooks" msgstr "" #: ../../developer/plugins/create.md:32 msgid "**Hooks** are entrypoints that allow your plugin to listen to changes. You can create hooks to react to different events that occur in the Funkwhale application." msgstr "" #: ../../developer/plugins/create.md:34 msgid "An example of this can be seen in our Scrobbler plugin. We register a `LISTENING_CREATED` hook to notify any registered callback function when a listening is recorded. When a user listens to a track, the `notfy_lastfm` function fires." msgstr "" #: ../../developer/plugins/create.md:45 msgid "Available hooks" msgstr "" #: ../../docstring of config.plugins.LISTENING_CREATED:1 msgid "Called when a track is being listened" msgstr "" #: ../../developer/plugins/create.md:51 msgid "Filters" msgstr "" #: ../../developer/plugins/create.md:53 msgid "**Filters** are entrypoints that allow you to modify or add information. When you use the `register_filter` decorator, your function should return a value to be used by the server." msgstr "" #: ../../developer/plugins/create.md:55 msgid "In this example, the `PLUGINS_DEPENDENCIES` filter is used to install additional dependencies required by your plugin. The `dependencies` function returns the additional dependency `django_prometheus` to request the dependency be installed by the server." msgstr "" #: ../../developer/plugins/create.md:68 msgid "Available filters" msgstr "" #: ../../docstring of config.plugins.PLUGINS_DEPENDENCIES:1 msgid "Called with an empty list, use this filter to append pip dependencies to the list for installation." msgstr "" #: ../../docstring of config.plugins.PLUGINS_APPS:1 msgid "Called with an empty list, use this filter to append apps to INSTALLED_APPS" msgstr "" #: ../../docstring of config.plugins.MIDDLEWARES_BEFORE:1 msgid "Called with an empty list, use this filter to prepend middlewares to MIDDLEWARE" msgstr "" #: ../../docstring of config.plugins.MIDDLEWARES_AFTER:1 msgid "Called with an empty list, use this filter to append middlewares to MIDDLEWARE" msgstr "" #: ../../docstring of config.plugins.URLS:1 msgid "Called with an empty list, use this filter to register new urls and views" msgstr "" #: ../../developer/plugins/create.md:78 msgid "Write your plugin" msgstr "" #: ../../developer/plugins/create.md:80 msgid "Once you know what type of plugin you want to write and what entrypoint you want to use, you can start writing your plugin." msgstr "" #: ../../developer/plugins/create.md:82 msgid "Plugins are made up of the following 3 files:" msgstr "" #: ../../developer/plugins/create.md:84 msgid "`__init__.py` - indicates that the directory is a Python package" msgstr "" #: ../../developer/plugins/create.md:85 msgid "`funkwhale_startup.py` - the file that loads during Funkwhale initialization" msgstr "" #: ../../developer/plugins/create.md:86 msgid "`funkwhale_ready.py` - the file that loads when Funkwhale is configured and ready" msgstr "" #: ../../developer/plugins/create.md:88 msgid "Declare your plugin" msgstr "" #: ../../developer/plugins/create.md:90 msgid "You need to declare your plugin and its configuration options so that Funkwhale knows how to load the plugin. To do this, you must declare a new `plugins` instance in your `funkwhale_startup.py` file." msgstr "" #: ../../developer/plugins/create.md:92 msgid "Your `plugins` should include the following information:" msgstr "" #: ../../developer/plugins/create.md:98 msgid "Parameter" msgstr "" #: ../../developer/plugins/create.md:99 msgid "Data type" msgstr "" #: ../../developer/plugins/create.md:100 msgid "Description" msgstr "" #: ../../developer/plugins/create.md:101 msgid "`name`" msgstr "" #: ../../developer/plugins/create.md:102 #: ../../developer/plugins/create.md:105 #: ../../developer/plugins/create.md:108 #: ../../developer/plugins/create.md:111 msgid "String" msgstr "" #: ../../developer/plugins/create.md:103 msgid "The name of your plugin, used in the `.env` file" msgstr "" #: ../../developer/plugins/create.md:104 msgid "`label`" msgstr "" #: ../../developer/plugins/create.md:106 msgid "The readable label that appears in the Funkwhale frontend" msgstr "" #: ../../developer/plugins/create.md:107 msgid "`description`" msgstr "" #: ../../developer/plugins/create.md:109 msgid "A meaningful description of your plugin and what it does" msgstr "" #: ../../developer/plugins/create.md:110 msgid "`version`" msgstr "" #: ../../developer/plugins/create.md:112 msgid "The version number of your plugin" msgstr "" #: ../../developer/plugins/create.md:113 msgid "`user`" msgstr "" #: ../../developer/plugins/create.md:114 msgid "Boolean" msgstr "" #: ../../developer/plugins/create.md:115 msgid "Whether the plugin is a **user-level** plugin or a **pod-level** plugin. See [scopes](#scopes) for more information" msgstr "" #: ../../developer/plugins/create.md:116 msgid "`conf`" msgstr "" #: ../../developer/plugins/create.md:117 msgid "Array of Objects" msgstr "" #: ../../developer/plugins/create.md:118 msgid "A list of configuration options" msgstr "" #: ../../developer/plugins/create.md:121 msgid "In this example, we declare a new **user-level** plugin called \"My Plugin\". The user can configure a `greeting` in the plugin configuration." msgstr "" #: ../../developer/plugins/create.md:140 msgid "Write your plugin logic" msgstr "" #: ../../developer/plugins/create.md:142 msgid "Once you've declared your plugin, you can write the plugin code in your `funkwhale_ready.py` file." msgstr "" #: ../../developer/plugins/create.md:145 msgid "You must import your plugin declaration from your `funkwhale_startup.py` file." msgstr "" #: ../../developer/plugins/create.md:148 msgid "In this example, we create a simple API endpoint that returns a greeting to the user. To do this:" msgstr "" #: ../../developer/plugins/create.md:150 msgid "We create a new APIView class that accepts a `GET` request" msgstr "" #: ../../developer/plugins/create.md:151 msgid "We read the greeting value from the plugin `conf`" msgstr "" #: ../../developer/plugins/create.md:152 msgid "We return the greeting value with the user's username" msgstr "" #: ../../developer/plugins/create.md:153 msgid "We register this view at the endpoint `/greeting`" msgstr "" #: ../../developer/plugins/create.md:193 msgid "Result" msgstr "" #: ../../developer/plugins/create.md:195 msgid "Here is an example of how the above plugin works:" msgstr "" #: ../../developer/plugins/create.md:197 msgid "User \"Harry\" enables the plugin" msgstr "" #: ../../developer/plugins/create.md:198 msgid "\"Harry\" changes the greeting to \"You're a wizard\"" msgstr "" #: ../../developer/plugins/create.md:199 msgid "\"Harry\" visits the `/greeting` endpoint in their browser" msgstr "" #: ../../developer/plugins/create.md:200 msgid "The browser returns the message \"You're a wizard Harry\"" msgstr ""