# SOME DESCRIPTIVE TITLE. # Copyright (C) 2022, The Funkwhale Collective # This file is distributed under the same license as the funkwhale package. # FIRST AUTHOR , 2022. # #, fuzzy 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: 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" "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 " "`_." 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 `_." 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 "" #: ../../../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 `_." 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 `_ and " "`yarn `_" 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 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 ```` tag::" msgstr "" #: ../../../CONTRIBUTING.rst:498 msgid "" "Anything between the `` and `` 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 ```` 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 " "`_" msgstr "" #: ../../../CONTRIBUTING.rst:684 msgid "" "`A complete guide to Test-Driven Development (although not using Pytest) " "`_" msgstr "" #: ../../../CONTRIBUTING.rst:685 msgid "" "`pytest `_: documentation of our " "testing engine and runner" msgstr "" #: ../../../CONTRIBUTING.rst:686 msgid "" "`pytest-mock `_: project page of " "our mocking engine" msgstr "" #: ../../../CONTRIBUTING.rst:687 msgid "" "`factory-boy `_: 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 ""