# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2022, The Funkwhale Collective
# This file is distributed under the same license as the funkwhale package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: funkwhale 1.2.5\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-03 22:14+0200\n"
"PO-Revision-Date: 2022-07-03 23:23+0000\n"
"Last-Translator: Ciarán Ainsworth <sporiff@funkwhale.audio>\n"
"Language-Team: English (United Kingdom) <https://translate.funkwhale.audio/"
"projects/documentation/contributing/en_GB/>\n"
"Language: en_GB\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.13\n"
"Generated-By: Babel 2.10.1\n"

#: ../../../CONTRIBUTING.rst:2
msgid "Contribute to Funkwhale development"
msgstr ""

#: ../../../CONTRIBUTING.rst:4
msgid ""
"First of all, thank you for your interest in the project! We really "
"appreciate the fact that you're about to take some time to read this and "
"hack on the project."
msgstr ""

#: ../../../CONTRIBUTING.rst:8
msgid "This document will guide you through common operations such as:"
msgstr ""

#: ../../../CONTRIBUTING.rst:10 ../../../CONTRIBUTING.rst:141
msgid "Setup your development environment"
msgstr ""

#: ../../../CONTRIBUTING.rst:11
msgid "Working on your first issue"
msgstr ""

#: ../../../CONTRIBUTING.rst:12
msgid "Writing unit tests to validate your work"
msgstr ""

#: ../../../CONTRIBUTING.rst:13
msgid "Submit your work"
msgstr ""

#: ../../../CONTRIBUTING.rst:16
msgid "The quickest way to contribute to the project is through Gitpod!"
msgstr ""

msgid "Open in Gitpod"
msgstr ""

#: ../../../CONTRIBUTING.rst:22
msgid ""
"When you click the button above, you will be redirected to the gitpod.io "
"site. Here you can sign in with your Gitlab or GitHub account and a new "
"workspace will be automatically created for you."
msgstr ""

#: ../../../CONTRIBUTING.rst:26
msgid ""
"The workspace will checkout current ``development`` branch and run a "
"Funkwhale instance with both frontend and backend started so you can jump"
" straight into development."
msgstr ""

#: ../../../CONTRIBUTING.rst:29
msgid ""
"The provided backend instance has a default admin user ``gitpod`` "
"authenticated with password ``gitpod``."
msgstr ""

#: ../../../CONTRIBUTING.rst:32
msgid ""
"In case you want to develop only frontend, you can go to ``File > Open "
"Folder`` and navigate to ``/workspace/funkwhale/front``. This will start "
"a new vite server on port 4000. This server integrates well with the "
"extension provided by Gitpod but is disconnected from any instance by "
"default."
msgstr ""

#: ../../../CONTRIBUTING.rst:37
msgid "Usage with Gitlab"
msgstr ""

#: ../../../CONTRIBUTING.rst:39
msgid ""
"We understand that having to go to the contribution guide and clicking "
"the ``Open in Gitpod`` is not an optimal way to create new branches or "
"test existing ones. That's why we've enabled the Gitpod integration on "
"our Gitlab server."
msgstr ""

#: ../../../CONTRIBUTING.rst:43
msgid ""
"You can now simply choose to use Gitpod instead of Gitlab Web IDE on any "
"of branch, commit or merge request:"
msgstr ""

msgid "Select Gitpod as the default Web IDE."
msgstr ""

#: ../../../CONTRIBUTING.rst:49
msgid "Gitlab Workflow extension"
msgstr ""

#: ../../../CONTRIBUTING.rst:51
msgid ""
"Gitpod offers a `Gitlab Workflow` extension that can help with managing "
"Gitlab issues, merge requests and pipelines. To use it you need to create"
" a personal access token with ``api`` and ``read_user`` scopes. You can "
"create it by visiting `your Gitlab profile settings "
"<https://dev.funkwhale.audio/-/profile/personal_access_tokens>`_."
msgstr ""

#: ../../../CONTRIBUTING.rst:55
msgid ""
"Setting the token through the extension is not an optimal approach as "
"you'd need to do this every single time you start a new workspace. "
"However you can work around this by creating user environment variables "
"in `your Gitpod settings <https://gitpod.io/variables>`_."
msgstr ""

#: ../../../CONTRIBUTING.rst:59
msgid ""
"When you configure your environment variables as follows, you will be "
"signed in to the extension automatically in old and new workspaces."
msgstr ""

#: ../../../CONTRIBUTING.rst:62
msgid "Environment variables"
msgstr "Environment variables"

#: ../../../CONTRIBUTING.rst:65 ../../../CONTRIBUTING.rst:88
msgid "Name"
msgstr ""

#: ../../../CONTRIBUTING.rst:66 ../../../CONTRIBUTING.rst:89
msgid "Value"
msgstr ""

#: ../../../CONTRIBUTING.rst:67 ../../../CONTRIBUTING.rst:90
msgid "Scope"
msgstr ""

#: ../../../CONTRIBUTING.rst:68
msgid "``GITLAB_WORKFLOW_INSTANCE_URL``"
msgstr ""

#: ../../../CONTRIBUTING.rst:69
msgid "``https://dev.funkwhale.audio``"
msgstr ""

#: ../../../CONTRIBUTING.rst:70 ../../../CONTRIBUTING.rst:73
msgid "``funkwhale/*``"
msgstr ""

#: ../../../CONTRIBUTING.rst:71
msgid "``GITLAB_WORKFLOW_TOKEN``"
msgstr ""

#: ../../../CONTRIBUTING.rst:72
msgid "``TOKEN``"
msgstr ""

#: ../../../CONTRIBUTING.rst:75
msgid ""
"The scope ``funkwhale/*`` will ensure that you will be signed into our "
"instance on every project that we're hosting, not only Funkwhale itself."
msgstr ""

#: ../../../CONTRIBUTING.rst:79
msgid "Custom instance url"
msgstr ""

#: ../../../CONTRIBUTING.rst:81
msgid ""
"If you want to preview changes on your own Funkwhale server, you can add "
"your domain as an environment variable. This allows you to test your "
"frontend changes against your domain without setting this value each "
"time. To add your domain, set a user environment variable in `your Gitpod"
" settings <https://gitpod.io/variables>`_."
msgstr ""

#: ../../../CONTRIBUTING.rst:85
msgid "Environment variable"
msgstr ""

#: ../../../CONTRIBUTING.rst:91
msgid "``VUE_APP_INSTANCE_URL``"
msgstr ""

#: ../../../CONTRIBUTING.rst:92
msgid "``https://funkwhale.example.com``"
msgstr ""

#: ../../../CONTRIBUTING.rst:93
msgid "``funkwhale/funkwhale``"
msgstr ""

#: ../../../CONTRIBUTING.rst:95
msgid ""
"The scope ``funkwhale/funkwhale`` ensures that this variable only works "
"on Funkwhale."
msgstr ""

#: ../../../CONTRIBUTING.rst:98
msgid "A quick path to contribute on the front-end"
msgstr ""

#: ../../../CONTRIBUTING.rst:100
msgid ""
"The next sections of this document include a full installation guide to "
"help you setup a local, development version of Funkwhale. If you only "
"want to fix small things on the front-end, and don't want to manage a "
"full development environment, there is another way."
msgstr ""

#: ../../../CONTRIBUTING.rst:104
msgid ""
"As the front-end can work with any Funkwhale server, you can work with "
"the front-end only, and make it talk with an existing instance (like the "
"demo one, or you own instance, if you have one)."
msgstr ""

#: ../../../CONTRIBUTING.rst:107
msgid ""
"If even that is too much for you, you can also make your changes without "
"any development environment, and open a merge request. We will be able to"
" review your work easily by spawning automatically a live version of your"
" changes, thanks to Gitlab Review apps."
msgstr ""

#: ../../../CONTRIBUTING.rst:112
msgid "Setup front-end only development environment"
msgstr ""

#: ../../../CONTRIBUTING.rst:114
msgid "Clone the repository::"
msgstr ""

#: ../../../CONTRIBUTING.rst:120
msgid ""
"Install `nodejs <https://nodejs.org/en/download/package-manager/>`_ and "
"`yarn <https://yarnpkg.com/lang/en/docs/install/#debian-stable>`_"
msgstr ""

#: ../../../CONTRIBUTING.rst:122
msgid "Install the dependencies::"
msgstr ""

#: ../../../CONTRIBUTING.rst:126
msgid "Compile the translations::"
msgstr ""

#: ../../../CONTRIBUTING.rst:130
msgid "Launch the development server::"
msgstr ""

#: ../../../CONTRIBUTING.rst:135
msgid ""
"Make the front-end talk with an existing server (like "
"https://demo.funkwhale.audio or https://open.audio), by clicking on the "
"corresponding link in the footer"
msgstr ""

#: ../../../CONTRIBUTING.rst:138
msgid "Start hacking!"
msgstr ""

#: ../../../CONTRIBUTING.rst:143
msgid ""
"If you want to fix a bug or implement a feature, you'll need to run a "
"local, development copy of funkwhale."
msgstr ""

#: ../../../CONTRIBUTING.rst:146
msgid ""
"We provide a docker based development environment, which should be both "
"easy to setup and work similarly regardless of your development machine "
"setup."
msgstr ""

#: ../../../CONTRIBUTING.rst:150
msgid ""
"Instructions for bare-metal setup will come in the future (Merge requests"
" are welcome)."
msgstr ""

#: ../../../CONTRIBUTING.rst:154
msgid "Installing docker and docker-compose"
msgstr ""

#: ../../../CONTRIBUTING.rst:156
msgid "This is already cover in the relevant documentations:"
msgstr ""

#: ../../../CONTRIBUTING.rst:158
msgid "https://docs.docker.com/install/"
msgstr ""

#: ../../../CONTRIBUTING.rst:159
msgid "https://docs.docker.com/compose/install/"
msgstr ""

#: ../../../CONTRIBUTING.rst:163
msgid ""
"If you are on Fedora, know that you can't use `podman` or `moby-engine` "
"to set up the development environment. Stick to `docker-ce` and you'll be"
" fine."
msgstr ""

#: ../../../CONTRIBUTING.rst:167
msgid "Cloning the project"
msgstr ""

#: ../../../CONTRIBUTING.rst:169
msgid ""
"Visit https://dev.funkwhale.audio/funkwhale/funkwhale and clone the "
"repository using SSH or HTTPS. Example using SSH::"
msgstr ""

#: ../../../CONTRIBUTING.rst:176
msgid ""
"As of January 2020, the SSH fingerprints of our Gitlab server are the "
"following::"
msgstr ""

#: ../../../CONTRIBUTING.rst:188
msgid "A note about branches"
msgstr ""

#: ../../../CONTRIBUTING.rst:190
msgid ""
"Next release development occurs on the \"develop\" branch, and releases "
"are made on the \"stable\" branch. Therefore, when submitting Merge "
"Requests, ensure you are merging on the develop branch."
msgstr ""

#: ../../../CONTRIBUTING.rst:194
msgid "Working with docker"
msgstr ""

#: ../../../CONTRIBUTING.rst:196
msgid ""
"In development, we use the docker-compose file named ``dev.yml``, and "
"this is why all our docker-compose commands will look like this::"
msgstr ""

#: ../../../CONTRIBUTING.rst:200
msgid ""
"If you do not want to add the ``-f dev.yml`` snippet every time, you can "
"run this command before starting your work::"
msgstr ""

#: ../../../CONTRIBUTING.rst:206
msgid "Creating your env file"
msgstr ""

#: ../../../CONTRIBUTING.rst:208
msgid ""
"We provide a working .env.dev configuration file that is suitable for "
"development. However, to enable customization on your machine, you should"
" also create a .env file that will hold your personal environment "
"variables (those will not be commited to the project)."
msgstr ""

#: ../../../CONTRIBUTING.rst:213
msgid "Create it like this::"
msgstr ""

#: ../../../CONTRIBUTING.rst:217
msgid ""
"These two environment variables must be included for the images to load "
"in front-end and django admin pages::"
msgstr ""

#: ../../../CONTRIBUTING.rst:224
msgid "Create docker network"
msgstr ""

#: ../../../CONTRIBUTING.rst:226
msgid "Create the federation network::"
msgstr ""

#: ../../../CONTRIBUTING.rst:232
msgid "Building the containers"
msgstr ""

#: ../../../CONTRIBUTING.rst:234
msgid ""
"On your initial clone, or if there have been some changes in the app "
"dependencies, you will have to rebuild your containers. This is done via "
"the following command::"
msgstr ""

#: ../../../CONTRIBUTING.rst:242
msgid "Database management"
msgstr ""

#: ../../../CONTRIBUTING.rst:244
msgid "To setup funkwhale's database schema, run this::"
msgstr ""

#: ../../../CONTRIBUTING.rst:248
msgid ""
"This will create all the tables needed for the API to run properly. You "
"will also need to run this whenever changes are made on the database "
"schema."
msgstr ""

#: ../../../CONTRIBUTING.rst:252
msgid ""
"It is safe to run this command multiple times, so you can run it whenever"
" you fetch develop."
msgstr ""

#: ../../../CONTRIBUTING.rst:257
msgid "Development data"
msgstr ""

#: ../../../CONTRIBUTING.rst:259
msgid ""
"You'll need at least an admin user and some artists/tracks/albums to work"
" locally."
msgstr ""

#: ../../../CONTRIBUTING.rst:262
msgid "Create an admin user with the following command::"
msgstr ""

#: ../../../CONTRIBUTING.rst:266
msgid "Injecting fake data is done by running the following script::"
msgstr ""

#: ../../../CONTRIBUTING.rst:272
msgid ""
"The previous command will create 25 artists with random albums, tracks "
"and metadata."
msgstr ""

#: ../../../CONTRIBUTING.rst:277
msgid "Launch all services"
msgstr ""

#: ../../../CONTRIBUTING.rst:279
msgid "Before the first Funkwhale launch, it is required to run this::"
msgstr ""

#: ../../../CONTRIBUTING.rst:283
msgid "Then you can run everything with::"
msgstr ""

#: ../../../CONTRIBUTING.rst:287
msgid ""
"This will launch all services, and output the logs in your current "
"terminal window. If you prefer to launch them in the background instead, "
"use the ``-d`` flag, and access the logs when you need it via ``docker-"
"compose -f dev.yml logs --tail=50 --follow``."
msgstr ""

#: ../../../CONTRIBUTING.rst:290
msgid "Once everything is up, you can access the various funkwhale's components:"
msgstr ""

#: ../../../CONTRIBUTING.rst:292
msgid "The Vue webapp, on http://localhost:8000"
msgstr ""

#: ../../../CONTRIBUTING.rst:293
msgid "The API, on http://localhost:8000/api/v1/"
msgstr ""

#: ../../../CONTRIBUTING.rst:294
msgid "The django admin, on http://localhost:8000/api/admin/"
msgstr ""

#: ../../../CONTRIBUTING.rst:297
msgid "Stopping everything"
msgstr ""

#: ../../../CONTRIBUTING.rst:299
msgid ""
"Once you're down with your work, you can stop running containers, if any,"
" with::"
msgstr ""

#: ../../../CONTRIBUTING.rst:305
msgid "Removing everything"
msgstr ""

#: ../../../CONTRIBUTING.rst:307
msgid ""
"If you want to wipe your development environment completely (e.g. if you "
"want to start over from scratch), just run::"
msgstr ""

#: ../../../CONTRIBUTING.rst:311
msgid ""
"This will wipe your containers and data, so please be careful before "
"running it."
msgstr ""

#: ../../../CONTRIBUTING.rst:313
msgid "You can keep your data by removing the ``-v`` flag."
msgstr ""

#: ../../../CONTRIBUTING.rst:317
msgid "Working with federation locally"
msgstr ""

#: ../../../CONTRIBUTING.rst:319
msgid "This is not needed unless you need to work on federation-related features."
msgstr ""

#: ../../../CONTRIBUTING.rst:321
msgid "To achieve that, you'll need:"
msgstr ""

#: ../../../CONTRIBUTING.rst:323
msgid "to update your dns resolver to resolve all your .dev hostnames locally"
msgstr ""

#: ../../../CONTRIBUTING.rst:324
msgid ""
"a reverse proxy (such as traefik) to catch those .dev requests and and "
"with https certificate"
msgstr ""

#: ../../../CONTRIBUTING.rst:326
msgid "two instances (or more) running locally, following the regular dev setup"
msgstr ""

#: ../../../CONTRIBUTING.rst:329
msgid "Resolve .dev names locally"
msgstr ""

#: ../../../CONTRIBUTING.rst:331
msgid "If you use dnsmasq, this is as simple as doing::"
msgstr ""

#: ../../../CONTRIBUTING.rst:336
msgid "If you use NetworkManager with dnsmasq integration, use this instead::"
msgstr ""

#: ../../../CONTRIBUTING.rst:342
msgid "Add wildcard certificate to the trusted certificates"
msgstr ""

#: ../../../CONTRIBUTING.rst:344
msgid "Simply copy bundled certificates::"
msgstr ""

#: ../../../CONTRIBUTING.rst:349
msgid "This certificate is a wildcard for ``*.funkwhale.test``"
msgstr ""

#: ../../../CONTRIBUTING.rst:352
msgid "Run a reverse proxy for your instances"
msgstr ""

#: ../../../CONTRIBUTING.rst:356
msgid "Launch everything"
msgstr ""

#: ../../../CONTRIBUTING.rst:358
msgid "Launch the traefik proxy::"
msgstr ""

#: ../../../CONTRIBUTING.rst:362
msgid ""
"Then, in separate terminals, you can setup as many different instances as"
" you need::"
msgstr ""

#: ../../../CONTRIBUTING.rst:371
msgid ""
"Note that by default, if you don't export the COMPOSE_PROJECT_NAME, we "
"will default to node1 as the name of your instance."
msgstr ""

#: ../../../CONTRIBUTING.rst:374
msgid ""
"Assuming your project name is ``node1``, your server will be reachable at"
" ``https://node1.funkwhale.test/``. Not that you'll have to trust the SSL"
" Certificate as it's self signed."
msgstr ""

#: ../../../CONTRIBUTING.rst:378
msgid ""
"When working on federation with traefik, ensure you have this in your "
"``env``::"
msgstr ""

#: ../../../CONTRIBUTING.rst:391
msgid "Typical workflow for a contribution"
msgstr ""

#: ../../../CONTRIBUTING.rst:393
msgid ""
"Fork the project if you did not already or if you do not have access to "
"the main repository"
msgstr ""

#: ../../../CONTRIBUTING.rst:394
msgid ""
"Checkout the development branch and pull most recent changes: ``git "
"checkout develop && git pull``"
msgstr ""

#: ../../../CONTRIBUTING.rst:395
msgid ""
"If working on an issue, assign yourself to the issue. Otherwise, consider"
" open an issue before starting to work on something, especially for new "
"features."
msgstr ""

#: ../../../CONTRIBUTING.rst:396
msgid ""
"Create a dedicated branch for your work ``42-awesome-fix``. It is good "
"practice to prefix your branch name with the ID of the issue you are "
"solving."
msgstr ""

#: ../../../CONTRIBUTING.rst:397
msgid "Work on your stuff"
msgstr ""

#: ../../../CONTRIBUTING.rst:398
msgid ""
"[Optional] Consider running ``yarn lint`` in ``front`` if you changed "
"something there. Consider fixing some linting errors in the files you "
"touched."
msgstr ""

#: ../../../CONTRIBUTING.rst:400
msgid "Commit small, atomic changes to make it easier to review your contribution"
msgstr ""

#: ../../../CONTRIBUTING.rst:401
msgid ""
"Add a changelog fragment to summarize your changes: ``echo \"Implemented "
"awesome stuff (#42)\" > changes/changelog.d/42.feature``"
msgstr ""

#: ../../../CONTRIBUTING.rst:402
msgid "Push your branch"
msgstr ""

#: ../../../CONTRIBUTING.rst:403
msgid "Create your merge request"
msgstr ""

#: ../../../CONTRIBUTING.rst:404
msgid ""
"Take a step back and enjoy, we're really grateful you did all of this and"
" took the time to contribute!"
msgstr ""

#: ../../../CONTRIBUTING.rst:407
msgid "Changelog management"
msgstr ""

#: ../../../CONTRIBUTING.rst:409
msgid ""
"To ensure we have extensive and well-structured changelog, any "
"significant work such as closing an issue must include a changelog "
"fragment. Small changes may include a changelog fragment as well but this"
" is not mandatory. If you're not sure about what to do, do not panic, "
"open your merge request normally and we'll figure everything during the "
"review ;)"
msgstr ""

#: ../../../CONTRIBUTING.rst:415
msgid ""
"Changelog fragments are text files that can contain one or multiple lines"
" that describe the changes occurring in a bunch of commits. Those files "
"reside in ``changes/changelog.d``."
msgstr ""

#: ../../../CONTRIBUTING.rst:420
msgid "Content"
msgstr ""

#: ../../../CONTRIBUTING.rst:422
msgid "A typical fragment looks like that:"
msgstr ""

#: ../../../CONTRIBUTING.rst:424
msgid "Fixed broken audio player on Chrome 42 for ogg files (#567)"
msgstr ""

#: ../../../CONTRIBUTING.rst:426
msgid ""
"If the work fixes one or more issues, the issue number should be included"
" at the end of the fragment (``(#567)`` is the issue number in the "
"previous example)."
msgstr ""

#: ../../../CONTRIBUTING.rst:429
msgid ""
"If your work is not related to a specific issue, use the merge request "
"identifier instead, like this:"
msgstr ""

#: ../../../CONTRIBUTING.rst:432
msgid "Fixed a typo in landing page copy (!342)"
msgstr ""

#: ../../../CONTRIBUTING.rst:435
msgid "Naming"
msgstr ""

#: ../../../CONTRIBUTING.rst:437
msgid ""
"Fragment files should respect the following naming pattern: "
"``changes/changelog.d/<name>.<category>``. Name can be anything "
"describing your work, or simply the identifier of the issue number you "
"are fixing. Category can be one of:"
msgstr ""

#: ../../../CONTRIBUTING.rst:441
msgid "``feature``: for new features"
msgstr ""

#: ../../../CONTRIBUTING.rst:442
msgid "``enhancement``: for enhancements on existing features"
msgstr ""

#: ../../../CONTRIBUTING.rst:443
msgid "``bugfix``: for bugfixes"
msgstr ""

#: ../../../CONTRIBUTING.rst:444
msgid "``doc``: for documentation"
msgstr ""

#: ../../../CONTRIBUTING.rst:445
msgid "``i18n``: for internationalization-related work"
msgstr ""

#: ../../../CONTRIBUTING.rst:446
msgid "``misc``: for anything else"
msgstr ""

#: ../../../CONTRIBUTING.rst:449
msgid "Shortcuts"
msgstr ""

#: ../../../CONTRIBUTING.rst:451
msgid ""
"Here is a shortcut you can use/adapt to easily create new fragments from "
"command-line:"
msgstr ""

#: ../../../CONTRIBUTING.rst:460
msgid ""
"You can of course create fragments by hand in your text editor, or from "
"Gitlab's interface as well."
msgstr ""

#: ../../../CONTRIBUTING.rst:464
msgid "Internationalization"
msgstr ""

#: ../../../CONTRIBUTING.rst:466
msgid ""
"We're using https://github.com/Polyconseil/vue-gettext to manage i18n in "
"the project."
msgstr ""

#: ../../../CONTRIBUTING.rst:468
msgid ""
"When working on the front-end, any end-user string should be marked as a "
"translatable string, with the proper context, as described below."
msgstr ""

#: ../../../CONTRIBUTING.rst:472
msgid "Translations in HTML"
msgstr ""

#: ../../../CONTRIBUTING.rst:474
msgid "Translations in HTML use the ``<translate>`` tag::"
msgstr ""

#: ../../../CONTRIBUTING.rst:498
msgid ""
"Anything between the `<translate>` and `</translate>` delimiters will be "
"considered as a translatable string. You can use variables in the "
"translated string via the ``:translate-params=\"{var: 'value'}\"`` "
"directive, and reference them like this: ``val value is %{ value }``."
msgstr ""

#: ../../../CONTRIBUTING.rst:502
msgid ""
"For pluralization, you need to use ``translate-params`` in conjunction "
"with ``translate-plural`` and ``translate-n``:"
msgstr ""

#: ../../../CONTRIBUTING.rst:504
msgid ""
"``translate-params`` should contain the variable you're using for "
"pluralization (which is usually shown to the user)"
msgstr ""

#: ../../../CONTRIBUTING.rst:505
msgid "``translate-n`` should match the same variable"
msgstr ""

#: ../../../CONTRIBUTING.rst:506
msgid ""
"The ``<translate>`` delimiters contain the non-pluralized version of your"
" string"
msgstr ""

#: ../../../CONTRIBUTING.rst:507
msgid ""
"The ``translate-plural`` directive contains the pluralized version of "
"your string"
msgstr ""

#: ../../../CONTRIBUTING.rst:511
msgid "Translations in javascript"
msgstr ""

#: ../../../CONTRIBUTING.rst:513
msgid ""
"Translations in javascript work by calling the ``this.$*gettext`` "
"functions::"
msgstr ""

#: ../../../CONTRIBUTING.rst:528
msgid ""
"The first argument of the ``$pgettext`` and ``$npgettext`` functions is "
"the string context."
msgstr ""

#: ../../../CONTRIBUTING.rst:531
msgid "Contextualization"
msgstr ""

#: ../../../CONTRIBUTING.rst:533
msgid ""
"Translation contexts provided via the ``translate-context`` directive and"
" the ``$pgettext`` and ``$npgettext`` are never shown to end users but "
"visible by Funkwhale translators. They help translators where and how the"
" strings are used, especially with short or ambiguous strings, like "
"``May``, which can refer a month or a verb."
msgstr ""

#: ../../../CONTRIBUTING.rst:537
msgid ""
"While we could in theory use free form context, like ``This string is "
"inside a button, in the main page, and is a call to action``, Funkwhale "
"use a hierarchical structure to write contexts and keep them short and "
"consistents accross the app. The previous context, rewritten correctly "
"would be: ``Content/Home/Button/Call to action``."
msgstr ""

#: ../../../CONTRIBUTING.rst:541
msgid "This hierarchical structure is made of several parts:"
msgstr ""

#: ../../../CONTRIBUTING.rst:550
msgid ""
"The location part, which is required and refers to the big blocks found "
"in Funkwhale UI where the translated string is displayed:"
msgstr ""

#: ../../../CONTRIBUTING.rst:544
msgid "``Content``"
msgstr ""

#: ../../../CONTRIBUTING.rst:545
msgid "``Footer``"
msgstr ""

#: ../../../CONTRIBUTING.rst:546
msgid "``Head``"
msgstr ""

#: ../../../CONTRIBUTING.rst:547 ../../../CONTRIBUTING.rst:591
msgid "``Menu``"
msgstr ""

#: ../../../CONTRIBUTING.rst:548
msgid "``Popup``"
msgstr ""

#: ../../../CONTRIBUTING.rst:549
msgid "``Sidebar``"
msgstr ""

#: ../../../CONTRIBUTING.rst:550
msgid "``*`` for strings that are not tied to a specific location"
msgstr ""

#: ../../../CONTRIBUTING.rst:573
msgid ""
"The feature part, which is required, and refers to the feature associated"
" with the translated string:"
msgstr ""

#: ../../../CONTRIBUTING.rst:553
msgid "``About``"
msgstr ""

#: ../../../CONTRIBUTING.rst:554
msgid "``Admin``"
msgstr ""

#: ../../../CONTRIBUTING.rst:555
msgid "``Album``"
msgstr ""

#: ../../../CONTRIBUTING.rst:556
msgid "``Artist``"
msgstr ""

#: ../../../CONTRIBUTING.rst:557
msgid "``Embed``"
msgstr ""

#: ../../../CONTRIBUTING.rst:558
msgid "``Home``"
msgstr ""

#: ../../../CONTRIBUTING.rst:559
msgid "``Login``"
msgstr ""

#: ../../../CONTRIBUTING.rst:560
msgid "``Library``"
msgstr ""

#: ../../../CONTRIBUTING.rst:561
msgid "``Moderation``"
msgstr ""

#: ../../../CONTRIBUTING.rst:562
msgid "``Player``"
msgstr ""

#: ../../../CONTRIBUTING.rst:563
msgid "``Playlist``"
msgstr ""

#: ../../../CONTRIBUTING.rst:564
msgid "``Profile``"
msgstr ""

#: ../../../CONTRIBUTING.rst:565
msgid "``Favorites``"
msgstr ""

#: ../../../CONTRIBUTING.rst:566
msgid "``Notifications``"
msgstr ""

#: ../../../CONTRIBUTING.rst:567
msgid "``Radio``"
msgstr ""

#: ../../../CONTRIBUTING.rst:568
msgid "``Search``"
msgstr ""

#: ../../../CONTRIBUTING.rst:569
msgid "``Settings``"
msgstr ""

#: ../../../CONTRIBUTING.rst:570
msgid "``Signup``"
msgstr ""

#: ../../../CONTRIBUTING.rst:571
msgid "``Track``"
msgstr ""

#: ../../../CONTRIBUTING.rst:572
msgid "``Queue``"
msgstr ""

#: ../../../CONTRIBUTING.rst:573
msgid "``*`` for strings that are not tied to a specific feature"
msgstr ""

#: ../../../CONTRIBUTING.rst:599
msgid ""
"The component part, which is required and refers to the type of element "
"that contain the string:"
msgstr ""

#: ../../../CONTRIBUTING.rst:576
msgid "``Button``"
msgstr ""

#: ../../../CONTRIBUTING.rst:577
msgid "``Card``"
msgstr ""

#: ../../../CONTRIBUTING.rst:578
msgid "``Checkbox``"
msgstr ""

#: ../../../CONTRIBUTING.rst:579
msgid "``Dropdown``"
msgstr ""

#: ../../../CONTRIBUTING.rst:580
msgid "``Error message``"
msgstr ""

#: ../../../CONTRIBUTING.rst:581
msgid "``Form``"
msgstr ""

#: ../../../CONTRIBUTING.rst:582
msgid "``Header``"
msgstr ""

#: ../../../CONTRIBUTING.rst:583
msgid "``Help text``"
msgstr ""

#: ../../../CONTRIBUTING.rst:584
msgid "``Hidden text``"
msgstr ""

#: ../../../CONTRIBUTING.rst:585
msgid "``Icon``"
msgstr ""

#: ../../../CONTRIBUTING.rst:586
msgid "``Input``"
msgstr ""

#: ../../../CONTRIBUTING.rst:587
msgid "``Image``"
msgstr ""

#: ../../../CONTRIBUTING.rst:588
msgid "``Label``"
msgstr ""

#: ../../../CONTRIBUTING.rst:589
msgid "``Link``"
msgstr ""

#: ../../../CONTRIBUTING.rst:590
msgid "``List item``"
msgstr ""

#: ../../../CONTRIBUTING.rst:592
msgid "``Message``"
msgstr ""

#: ../../../CONTRIBUTING.rst:593
msgid "``Paragraph``"
msgstr ""

#: ../../../CONTRIBUTING.rst:594
msgid "``Placeholder``"
msgstr ""

#: ../../../CONTRIBUTING.rst:595
msgid "``Tab``"
msgstr ""

#: ../../../CONTRIBUTING.rst:596
msgid "``Table``"
msgstr ""

#: ../../../CONTRIBUTING.rst:597
msgid "``Title``"
msgstr ""

#: ../../../CONTRIBUTING.rst:598
msgid "``Tooltip``"
msgstr ""

#: ../../../CONTRIBUTING.rst:599
msgid "``*`` for strings that are not tied to a specific component"
msgstr ""

#: ../../../CONTRIBUTING.rst:607
msgid ""
"The detail part, which is optional and refers to the contents of the "
"string itself, such as:"
msgstr ""

#: ../../../CONTRIBUTING.rst:602
msgid "``Adjective``"
msgstr ""

#: ../../../CONTRIBUTING.rst:603
msgid "``Call to action``"
msgstr ""

#: ../../../CONTRIBUTING.rst:604
msgid "``Noun``"
msgstr ""

#: ../../../CONTRIBUTING.rst:605
msgid "``Short``"
msgstr ""

#: ../../../CONTRIBUTING.rst:606
msgid "``Unit``"
msgstr ""

#: ../../../CONTRIBUTING.rst:607
msgid "``Verb``"
msgstr ""

#: ../../../CONTRIBUTING.rst:609
msgid "Here are a few examples of valid context hierarchies:"
msgstr ""

#: ../../../CONTRIBUTING.rst:611
msgid "``Sidebar/Player/Button``"
msgstr ""

#: ../../../CONTRIBUTING.rst:612
msgid "``Content/Home/Button/Call to action``"
msgstr ""

#: ../../../CONTRIBUTING.rst:613
msgid "``Footer/*/Help text``"
msgstr ""

#: ../../../CONTRIBUTING.rst:614
msgid "``*/*/*/Verb, Short``"
msgstr ""

#: ../../../CONTRIBUTING.rst:615
msgid "``Popup/Playlist/Button``"
msgstr ""

#: ../../../CONTRIBUTING.rst:616
msgid "``Content/Admin/Table.Label/Short, Noun (Value is a date)``"
msgstr ""

#: ../../../CONTRIBUTING.rst:618
msgid ""
"It's possible to nest multiple component parts to reach a higher level of"
" detail. The component parts are then separated by a dot:"
msgstr ""

#: ../../../CONTRIBUTING.rst:620
msgid "``Sidebar/Queue/Tab.Title``"
msgstr ""

#: ../../../CONTRIBUTING.rst:621
msgid "``Content/*/Button.Title``"
msgstr ""

#: ../../../CONTRIBUTING.rst:622
msgid "``Content/*/Table.Header``"
msgstr ""

#: ../../../CONTRIBUTING.rst:623
msgid "``Footer/*/List item.Link``"
msgstr ""

#: ../../../CONTRIBUTING.rst:624
msgid "``Content/*/Form.Help text``"
msgstr ""

#: ../../../CONTRIBUTING.rst:627
msgid "Collecting translatable strings"
msgstr ""

#: ../../../CONTRIBUTING.rst:629
msgid ""
"If you want to ensure your translatable strings are correctly marked for "
"translation, you can try to extract them."
msgstr ""

#: ../../../CONTRIBUTING.rst:632
msgid ""
"Extraction is done by calling ``yarn run i18n-extract``, which will pull "
"all the strings from source files and put them in a PO files."
msgstr ""

#: ../../../CONTRIBUTING.rst:635
msgid ""
"You can then inspect the PO files to ensure everything is fine (but don't"
" commit them, it's not needed)."
msgstr ""

#: ../../../CONTRIBUTING.rst:638
msgid "Contributing to the API"
msgstr ""

#: ../../../CONTRIBUTING.rst:641
msgid "Project structure"
msgstr ""

#: ../../../CONTRIBUTING.rst:655
msgid ""
"Unless trivial, API contributions must include unittests to ensure your "
"fix or feature is working as expected and won't break in the future"
msgstr ""

#: ../../../CONTRIBUTING.rst:659 ../../../CONTRIBUTING.rst:817
msgid "Running tests"
msgstr ""

#: ../../../CONTRIBUTING.rst:661
msgid "To run the pytest test suite, use the following command::"
msgstr ""

#: ../../../CONTRIBUTING.rst:665
msgid ""
"This is regular pytest, so you can use any arguments/options that pytest "
"usually accept::"
msgstr ""

#: ../../../CONTRIBUTING.rst:675
msgid "Writing tests"
msgstr ""

#: ../../../CONTRIBUTING.rst:677
msgid ""
"Although teaching you how to write unit tests is outside of the scope of "
"this document, you'll find below a collection of tips, snippets and "
"resources you can use if you want to learn on that subject."
msgstr ""

#: ../../../CONTRIBUTING.rst:681
msgid "Useful links:"
msgstr ""

#: ../../../CONTRIBUTING.rst:683
msgid ""
"`A quick introduction to unit test writing with pytest "
"<https://semaphoreci.com/community/tutorials/testing-python-applications-"
"with-pytest>`_"
msgstr ""

#: ../../../CONTRIBUTING.rst:684
msgid ""
"`A complete guide to Test-Driven Development (although not using Pytest) "
"<https://www.obeythetestinggoat.com/>`_"
msgstr ""

#: ../../../CONTRIBUTING.rst:685
msgid ""
"`pytest <https://docs.pytest.org/en/latest/>`_: documentation of our "
"testing engine and runner"
msgstr ""

#: ../../../CONTRIBUTING.rst:686
msgid ""
"`pytest-mock <https://pypi.org/project/pytest-mock/>`_: project page of "
"our mocking engine"
msgstr ""

#: ../../../CONTRIBUTING.rst:687
msgid ""
"`factory-boy <http://factoryboy.readthedocs.io/>`_: documentation of "
"factory-boy, which we use to easily generate fake objects and data"
msgstr ""

#: ../../../CONTRIBUTING.rst:689
msgid "Recommendations:"
msgstr ""

#: ../../../CONTRIBUTING.rst:691
msgid ""
"Test files must target a module and mimic ``funkwhale_api`` directory "
"structure: if you're writing tests for ``funkwhale_api/myapp/views.py``, "
"you should put thoses tests in ``tests/myapp/test_views.py``"
msgstr ""

#: ../../../CONTRIBUTING.rst:692
msgid ""
"Tests should be small and test one thing. If you need to test multiple "
"things, write multiple tests."
msgstr ""

#: ../../../CONTRIBUTING.rst:694
msgid ""
"We provide a lot of utils and fixtures to make the process of writing "
"tests as painless as possible. You'll find some usage examples below."
msgstr ""

#: ../../../CONTRIBUTING.rst:697
msgid "Use factories to create arbitrary objects:"
msgstr ""

#: ../../../CONTRIBUTING.rst:732
msgid ""
"We offer factories for almost if not all models. Factories are located in"
" a ``factories.py`` file inside each app."
msgstr ""

#: ../../../CONTRIBUTING.rst:735
msgid ""
"Mocking: mocking is the process of faking some logic in our code. This is"
" useful when testing components that depend on each other:"
msgstr ""

#: ../../../CONTRIBUTING.rst:790
msgid ""
"Views: you can find some readable views tests in file: "
"``api/tests/users/test_views.py``"
msgstr ""

#: ../../../CONTRIBUTING.rst:794
msgid ""
"A complete list of available-fixtures is available by running ``docker-"
"compose -f dev.yml run --rm api pytest --fixtures``"
msgstr ""

#: ../../../CONTRIBUTING.rst:799
msgid "Contributing to the front-end"
msgstr ""

#: ../../../CONTRIBUTING.rst:802
msgid "Styles and themes"
msgstr ""

#: ../../../CONTRIBUTING.rst:804
msgid ""
"Our UI framework is Fomantic UI (https://fomantic-ui.com/), and "
"Funkwhale's custom styles are written in SCSS. All the styles are "
"configured in ``front/src/styles/_main.scss``, including imporing of "
"Fomantic UI styles and components."
msgstr ""

#: ../../../CONTRIBUTING.rst:807
msgid ""
"We're applying several changes on top of the Fomantic CSS files, before "
"they are imported:"
msgstr ""

#: ../../../CONTRIBUTING.rst:809
msgid ""
"Many hardcoded color values are replaced by CSS vars: e.g ``color: "
"orange`` is replaced by ``color: var(--vibrant-color)``. This makes "
"theming way easier."
msgstr ""

#: ../../../CONTRIBUTING.rst:810
msgid ""
"Unused components variations and icons are stripped from the source "
"files, in order to reduce the final size of our CSS files"
msgstr ""

#: ../../../CONTRIBUTING.rst:812
msgid ""
"This changes are applied automatically when running ``yarn install``, "
"through a ``postinstall`` hook. Internally, ``front/scripts/fix-fomantic-"
"css.py`` is called and handle both kind of modifications. Please refer to"
" this script if you need to use new icons to the project, or restore some"
" components variations that were stripped in order to use them."
msgstr ""

#: ../../../CONTRIBUTING.rst:819
msgid "To run the front-end test suite, use the following command::"
msgstr ""

#: ../../../CONTRIBUTING.rst:823
msgid ""
"We also support a \"watch and test\" mode were we continually relaunch "
"tests when changes are recorded on the file system::"
msgstr ""

#: ../../../CONTRIBUTING.rst:828
msgid "The latter is especially useful when you are debugging failing tests."
msgstr ""

#: ../../../CONTRIBUTING.rst:832
msgid "The front-end test suite coverage is still pretty low"
msgstr ""

#: ../../../CONTRIBUTING.rst:836
msgid "Making a release"
msgstr ""

#: ../../../CONTRIBUTING.rst:838
msgid "To make a new 3.4 release::"
msgstr ""

#: ../../../CONTRIBUTING.rst:877
msgid ""
"Then, visit https://dev.funkwhale.audio/funkwhale/funkwhale/-/tags, copy-"
"paste the changelog on the corresponding tag, and announce the good news "
";)"
msgstr ""
