From 6f4fc09026d0f60800c0e57fa4700b37ae908a48 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Thu, 19 Jan 2023 16:35:00 +0100 Subject: [PATCH] [I18N] *: update 15.0 source terms --- locale/sources/administration.pot | 795 +++++++++++++++---- locale/sources/contributing.pot | 1091 ++++++++++++++------------ locale/sources/finance.pot | 206 ++++- locale/sources/inventory_and_mrp.pot | 72 +- locale/sources/services.pot | 8 +- 5 files changed, 1458 insertions(+), 714 deletions(-) diff --git a/locale/sources/administration.pot b/locale/sources/administration.pot index c4d5205e3..eb543f4fd 100644 --- a/locale/sources/administration.pot +++ b/locale/sources/administration.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 15.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-02 09:09+0000\n" +"POT-Creation-Date: 2023-01-19 15:32+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -160,9 +160,9 @@ msgid "Setting a proper :option:`--db-filter ` is an impor msgstr "" #: ../../content/administration/install/deploy.rst:76 -#: ../../content/administration/install/install.rst:339 -#: ../../content/administration/install/install.rst:526 -#: ../../content/administration/install/install.rst:721 +#: ../../content/administration/install/install.rst:338 +#: ../../content/administration/install/install.rst:525 +#: ../../content/administration/install/install.rst:720 msgid "PostgreSQL" msgstr "" @@ -869,7 +869,7 @@ msgid "Official Community packages with all relevant dependency requirements are msgstr "" #: ../../content/administration/install/install.rst:90 -#: ../../content/administration/install/install.rst:255 +#: ../../content/administration/install/install.rst:254 msgid "Windows" msgstr "" @@ -902,7 +902,7 @@ msgid "Odoo will automatically be started at the end of the installation." msgstr "" #: ../../content/administration/install/install.rst:105 -#: ../../content/administration/install/install.rst:445 +#: ../../content/administration/install/install.rst:444 msgid "Linux" msgstr "" @@ -916,9 +916,9 @@ msgstr "" #: ../../content/administration/install/install.rst:114 #: ../../content/administration/install/install.rst:187 -#: ../../content/administration/install/install.rst:314 -#: ../../content/administration/install/install.rst:504 -#: ../../content/administration/install/install.rst:699 +#: ../../content/administration/install/install.rst:313 +#: ../../content/administration/install/install.rst:503 +#: ../../content/administration/install/install.rst:698 msgid "Prepare" msgstr "" @@ -928,9 +928,9 @@ msgstr "" #: ../../content/administration/install/install.rst:124 #: ../../content/administration/install/install.rst:199 -#: ../../content/administration/install/install.rst:381 -#: ../../content/administration/install/install.rst:578 -#: ../../content/administration/install/install.rst:771 +#: ../../content/administration/install/install.rst:380 +#: ../../content/administration/install/install.rst:577 +#: ../../content/administration/install/install.rst:770 msgid "`wkhtmltopdf` is not installed through **pip** and must be installed manually in version `0.12.5 `_ for it to support headers and footers. See our `wiki `_ for more details on the various versions." msgstr "" @@ -1020,382 +1020,382 @@ msgid "The source \"installation\" is really about not installing Odoo, and runn msgstr "" #: ../../content/administration/install/install.rst:241 -msgid "This can be more convenient for module developers as the Odoo source is more easily accessible than using packaged installation (for information or to build this documentation and have it available offline)." +msgid "It can be more convenient for module developers as the Odoo source is more easily accessible than using packaged installation." msgstr "" -#: ../../content/administration/install/install.rst:245 +#: ../../content/administration/install/install.rst:244 msgid "It also makes starting and stopping Odoo more flexible and explicit than the services set up by the packaged installations, and allows overriding settings using :ref:`command-line parameters ` without needing to edit a configuration file." msgstr "" -#: ../../content/administration/install/install.rst:249 +#: ../../content/administration/install/install.rst:248 msgid "Finally it provides greater control over the system's set up, and allows to more easily keep (and run) multiple versions of Odoo side-by-side." msgstr "" -#: ../../content/administration/install/install.rst:258 -#: ../../content/administration/install/install.rst:448 -#: ../../content/administration/install/install.rst:643 +#: ../../content/administration/install/install.rst:257 +#: ../../content/administration/install/install.rst:447 +#: ../../content/administration/install/install.rst:642 msgid "Fetch the sources" msgstr "" -#: ../../content/administration/install/install.rst:260 -#: ../../content/administration/install/install.rst:450 -#: ../../content/administration/install/install.rst:645 +#: ../../content/administration/install/install.rst:259 +#: ../../content/administration/install/install.rst:449 +#: ../../content/administration/install/install.rst:644 msgid "There are two ways to obtain the source code of Odoo: as a zip **archive** or through **git**." msgstr "" -#: ../../content/administration/install/install.rst:263 -#: ../../content/administration/install/install.rst:453 -#: ../../content/administration/install/install.rst:648 +#: ../../content/administration/install/install.rst:262 +#: ../../content/administration/install/install.rst:452 +#: ../../content/administration/install/install.rst:647 msgid "Archive" msgstr "" -#: ../../content/administration/install/install.rst:265 -#: ../../content/administration/install/install.rst:455 -#: ../../content/administration/install/install.rst:650 +#: ../../content/administration/install/install.rst:264 +#: ../../content/administration/install/install.rst:454 +#: ../../content/administration/install/install.rst:649 msgid "Community Edition:" msgstr "" -#: ../../content/administration/install/install.rst:267 -#: ../../content/administration/install/install.rst:273 -#: ../../content/administration/install/install.rst:457 -#: ../../content/administration/install/install.rst:463 -#: ../../content/administration/install/install.rst:652 -#: ../../content/administration/install/install.rst:658 +#: ../../content/administration/install/install.rst:266 +#: ../../content/administration/install/install.rst:272 +#: ../../content/administration/install/install.rst:456 +#: ../../content/administration/install/install.rst:462 +#: ../../content/administration/install/install.rst:651 +#: ../../content/administration/install/install.rst:657 msgid "`Official download page `_" msgstr "" +#: ../../content/administration/install/install.rst:267 +#: ../../content/administration/install/install.rst:457 +#: ../../content/administration/install/install.rst:652 +msgid "`GitHub repository `_" +msgstr "" + #: ../../content/administration/install/install.rst:268 #: ../../content/administration/install/install.rst:458 #: ../../content/administration/install/install.rst:653 -msgid "`GitHub repository `_" -msgstr "" - -#: ../../content/administration/install/install.rst:269 -#: ../../content/administration/install/install.rst:459 -#: ../../content/administration/install/install.rst:654 msgid "`Nightly server `_" msgstr "" -#: ../../content/administration/install/install.rst:271 -#: ../../content/administration/install/install.rst:461 -#: ../../content/administration/install/install.rst:656 +#: ../../content/administration/install/install.rst:270 +#: ../../content/administration/install/install.rst:460 +#: ../../content/administration/install/install.rst:655 msgid "Enterprise Edition:" msgstr "" -#: ../../content/administration/install/install.rst:274 -#: ../../content/administration/install/install.rst:464 -#: ../../content/administration/install/install.rst:659 +#: ../../content/administration/install/install.rst:273 +#: ../../content/administration/install/install.rst:463 +#: ../../content/administration/install/install.rst:658 msgid "`GitHub repository `_" msgstr "" -#: ../../content/administration/install/install.rst:279 -#: ../../content/administration/install/install.rst:469 -#: ../../content/administration/install/install.rst:664 +#: ../../content/administration/install/install.rst:278 +#: ../../content/administration/install/install.rst:468 +#: ../../content/administration/install/install.rst:663 msgid "Git" msgstr "" -#: ../../content/administration/install/install.rst:281 -#: ../../content/administration/install/install.rst:471 -#: ../../content/administration/install/install.rst:666 +#: ../../content/administration/install/install.rst:280 +#: ../../content/administration/install/install.rst:470 +#: ../../content/administration/install/install.rst:665 msgid "The following requires `Git `_ to be installed on your machine and that you have basic knowledge of Git commands. To clone a Git repository, you must choose between cloning with HTTPS or SSH. If you do not know the difference between the two, the best option is most likely HTTPS. If you are following the :doc:`Getting started ` developer tutorial, or plan on contributing to Odoo source code, choose SSH." msgstr "" -#: ../../content/administration/install/install.rst:288 -#: ../../content/administration/install/install.rst:478 -#: ../../content/administration/install/install.rst:673 +#: ../../content/administration/install/install.rst:287 +#: ../../content/administration/install/install.rst:477 +#: ../../content/administration/install/install.rst:672 msgid "**The Enterprise Git repository does not contain the full Odoo source code**. It is only a collection of extra add-ons. The main server code is in the Community version. Running the Enterprise version actually means running the server from the Community version with the addons-path option set to the folder with the Enterprise version. You need to clone both the Community and Enterprise repository to have a working Odoo Enterprise installation. See :ref:`setup/install/editions` to get access to the Enterprise repository." msgstr "" -#: ../../content/administration/install/install.rst:297 -#: ../../content/administration/install/install.rst:487 -#: ../../content/administration/install/install.rst:682 +#: ../../content/administration/install/install.rst:296 +#: ../../content/administration/install/install.rst:486 +#: ../../content/administration/install/install.rst:681 msgid "Clone with HTTPS" msgstr "" -#: ../../content/administration/install/install.rst:304 -#: ../../content/administration/install/install.rst:494 -#: ../../content/administration/install/install.rst:689 +#: ../../content/administration/install/install.rst:303 +#: ../../content/administration/install/install.rst:493 +#: ../../content/administration/install/install.rst:688 msgid "Clone with SSH" msgstr "" -#: ../../content/administration/install/install.rst:317 -#: ../../content/administration/install/install.rst:507 -#: ../../content/administration/install/install.rst:702 +#: ../../content/administration/install/install.rst:316 +#: ../../content/administration/install/install.rst:506 +#: ../../content/administration/install/install.rst:701 msgid "Python" msgstr "" -#: ../../content/administration/install/install.rst:319 +#: ../../content/administration/install/install.rst:318 msgid "Odoo requires Python 3.7 or later to run. Visit `Python's download page `_ to download and install the latest version of Python 3 on your machine." msgstr "" -#: ../../content/administration/install/install.rst:322 +#: ../../content/administration/install/install.rst:321 msgid "During installation, check **Add Python 3 to PATH**, then click **Customize Installation** and make sure that **pip** is checked." msgstr "" -#: ../../content/administration/install/install.rst:325 -#: ../../content/administration/install/install.rst:512 -#: ../../content/administration/install/install.rst:707 +#: ../../content/administration/install/install.rst:324 +#: ../../content/administration/install/install.rst:511 +#: ../../content/administration/install/install.rst:706 msgid "If Python 3 is already installed, make sure that the version is 3.7 or above, as previous versions are not compatible with Odoo." msgstr "" -#: ../../content/administration/install/install.rst:332 -#: ../../content/administration/install/install.rst:519 -#: ../../content/administration/install/install.rst:714 +#: ../../content/administration/install/install.rst:331 +#: ../../content/administration/install/install.rst:518 +#: ../../content/administration/install/install.rst:713 msgid "Verify also that pip_ is installed for this version." msgstr "" -#: ../../content/administration/install/install.rst:341 +#: ../../content/administration/install/install.rst:340 msgid "Odoo uses PostgreSQL as database management system. `Download and install PostgreSQL `_ (supported version: 10.0 and later)." msgstr "" -#: ../../content/administration/install/install.rst:344 -#: ../../content/administration/install/install.rst:537 -#: ../../content/administration/install/install.rst:731 +#: ../../content/administration/install/install.rst:343 +#: ../../content/administration/install/install.rst:536 +#: ../../content/administration/install/install.rst:730 msgid "By default, the only user is `postgres` but Odoo forbids connecting as `postgres`, so you need to create a new PostgreSQL user:" msgstr "" -#: ../../content/administration/install/install.rst:347 +#: ../../content/administration/install/install.rst:346 msgid "Add PostgreSQL's `bin` directory (by default: `C:\\\\Program Files\\\\PostgreSQL\\\\\\\\bin`) to your `PATH`." msgstr "" -#: ../../content/administration/install/install.rst:349 +#: ../../content/administration/install/install.rst:348 msgid "Create a postgres user with a password using the pg admin gui:" msgstr "" -#: ../../content/administration/install/install.rst:351 +#: ../../content/administration/install/install.rst:350 msgid "Open **pgAdmin**." msgstr "" -#: ../../content/administration/install/install.rst:352 +#: ../../content/administration/install/install.rst:351 msgid "Double-click the server to create a connection." msgstr "" -#: ../../content/administration/install/install.rst:353 +#: ../../content/administration/install/install.rst:352 msgid "Select :menuselection:`Object --> Create --> Login/Group Role`." msgstr "" -#: ../../content/administration/install/install.rst:354 +#: ../../content/administration/install/install.rst:353 msgid "Enter the username in the **Role Name** field (e.g. `odoo`)." msgstr "" -#: ../../content/administration/install/install.rst:355 +#: ../../content/administration/install/install.rst:354 msgid "Open the **Definition** tab and enter the password (e.g. ``odoo``), then click **Save**." msgstr "" -#: ../../content/administration/install/install.rst:356 +#: ../../content/administration/install/install.rst:355 msgid "Open the **Privileges** tab and switch **Can login?** to `Yes` and **Create database?** to `Yes`." msgstr "" -#: ../../content/administration/install/install.rst:360 -#: ../../content/administration/install/install.rst:549 -#: ../../content/administration/install/install.rst:743 +#: ../../content/administration/install/install.rst:359 +#: ../../content/administration/install/install.rst:548 +#: ../../content/administration/install/install.rst:742 msgid "Dependencies" msgstr "" -#: ../../content/administration/install/install.rst:362 +#: ../../content/administration/install/install.rst:361 msgid "Before installing the dependencies, you must download and install the `Build Tools for Visual Studio `_. When prompted, select **C++ build tools** in the **Workloads** tab and install them." msgstr "" -#: ../../content/administration/install/install.rst:366 -#: ../../content/administration/install/install.rst:563 -#: ../../content/administration/install/install.rst:745 +#: ../../content/administration/install/install.rst:365 +#: ../../content/administration/install/install.rst:562 +#: ../../content/administration/install/install.rst:744 msgid "Odoo dependencies are listed in the `requirements.txt` file located at the root of the Odoo community directory." msgstr "" -#: ../../content/administration/install/install.rst:369 -#: ../../content/administration/install/install.rst:566 -#: ../../content/administration/install/install.rst:748 +#: ../../content/administration/install/install.rst:368 +#: ../../content/administration/install/install.rst:565 +#: ../../content/administration/install/install.rst:747 msgid "It can be preferable to not mix python modules packages between different instances of Odoo or with your system. You can use virtualenv_ to create isolated Python environments." msgstr "" -#: ../../content/administration/install/install.rst:372 +#: ../../content/administration/install/install.rst:371 msgid "Navigate to the path of your Odoo Community installation (`CommunityPath`) and run **pip** on the requirements file in a terminal **with Administrator privileges**:" msgstr "" -#: ../../content/administration/install/install.rst:386 -#: ../../content/administration/install/install.rst:583 -#: ../../content/administration/install/install.rst:776 +#: ../../content/administration/install/install.rst:385 +#: ../../content/administration/install/install.rst:582 +#: ../../content/administration/install/install.rst:775 msgid "For languages with right-to-left interface (such as Arabic or Hebrew), the package `rtlcss` is needed:" msgstr "" -#: ../../content/administration/install/install.rst:389 +#: ../../content/administration/install/install.rst:388 msgid "Download and install `nodejs `_." msgstr "" -#: ../../content/administration/install/install.rst:390 -#: ../../content/administration/install/install.rst:587 -#: ../../content/administration/install/install.rst:780 +#: ../../content/administration/install/install.rst:389 +#: ../../content/administration/install/install.rst:586 +#: ../../content/administration/install/install.rst:779 msgid "Install `rtlcss`:" msgstr "" -#: ../../content/administration/install/install.rst:396 +#: ../../content/administration/install/install.rst:395 msgid "Edit the System Environment's variable `PATH` to add the folder where `rtlcss.cmd` is located (typically: `C:\\\\Users\\\\\\\\AppData\\\\Roaming\\\\npm\\\\`)." msgstr "" -#: ../../content/administration/install/install.rst:400 -#: ../../content/administration/install/install.rst:594 -#: ../../content/administration/install/install.rst:787 +#: ../../content/administration/install/install.rst:399 +#: ../../content/administration/install/install.rst:593 +#: ../../content/administration/install/install.rst:786 msgid "Running Odoo" msgstr "" -#: ../../content/administration/install/install.rst:402 -#: ../../content/administration/install/install.rst:596 -#: ../../content/administration/install/install.rst:789 +#: ../../content/administration/install/install.rst:401 +#: ../../content/administration/install/install.rst:595 +#: ../../content/administration/install/install.rst:788 msgid "Once all dependencies are set up, Odoo can be launched by running `odoo-bin`, the command-line interface of the server. It is located at the root of the Odoo Community directory." msgstr "" -#: ../../content/administration/install/install.rst:405 -#: ../../content/administration/install/install.rst:599 -#: ../../content/administration/install/install.rst:792 +#: ../../content/administration/install/install.rst:404 +#: ../../content/administration/install/install.rst:598 +#: ../../content/administration/install/install.rst:791 msgid "To configure the server, you can either specify :ref:`command-line arguments ` or a :ref:`configuration file `." msgstr "" -#: ../../content/administration/install/install.rst:408 -#: ../../content/administration/install/install.rst:602 -#: ../../content/administration/install/install.rst:795 +#: ../../content/administration/install/install.rst:407 +#: ../../content/administration/install/install.rst:601 +#: ../../content/administration/install/install.rst:794 msgid "For the Enterprise edition, you must add the path to the `enterprise` addons to the `addons-path` argument. Note that it must come before the other paths in `addons-path` for addons to be loaded correctly." msgstr "" -#: ../../content/administration/install/install.rst:412 -#: ../../content/administration/install/install.rst:606 -#: ../../content/administration/install/install.rst:799 +#: ../../content/administration/install/install.rst:411 +#: ../../content/administration/install/install.rst:605 +#: ../../content/administration/install/install.rst:798 msgid "Common necessary configurations are:" msgstr "" -#: ../../content/administration/install/install.rst:414 +#: ../../content/administration/install/install.rst:413 msgid "PostgreSQL user and password." msgstr "" -#: ../../content/administration/install/install.rst:415 -#: ../../content/administration/install/install.rst:611 -#: ../../content/administration/install/install.rst:804 +#: ../../content/administration/install/install.rst:414 +#: ../../content/administration/install/install.rst:610 +#: ../../content/administration/install/install.rst:803 msgid "Custom addon paths beyond the defaults, to load your own modules." msgstr "" -#: ../../content/administration/install/install.rst:417 -#: ../../content/administration/install/install.rst:613 -#: ../../content/administration/install/install.rst:806 +#: ../../content/administration/install/install.rst:416 +#: ../../content/administration/install/install.rst:612 +#: ../../content/administration/install/install.rst:805 msgid "A typical way to run the server would be:" msgstr "" -#: ../../content/administration/install/install.rst:424 +#: ../../content/administration/install/install.rst:423 msgid "Where `CommunityPath` is the path of the Odoo Community installation, `dbuser` is the PostgreSQL login, `dbpassword` is the PostgreSQL password and `mydb` is the name of the PostgreSQL database." msgstr "" -#: ../../content/administration/install/install.rst:428 -#: ../../content/administration/install/install.rst:623 -#: ../../content/administration/install/install.rst:821 +#: ../../content/administration/install/install.rst:427 +#: ../../content/administration/install/install.rst:622 +#: ../../content/administration/install/install.rst:820 msgid "After the server has started (the INFO log `odoo.modules.loading: Modules loaded.` is printed), open http://localhost:8069 in your web browser and log in with the base administrator account: Use `admin` for the :guilabel:`Email` and, again, `admin` for the :guilabel:`Password`. That's it, you just logged into your own Odoo database!" msgstr "" -#: ../../content/administration/install/install.rst:434 -#: ../../content/administration/install/install.rst:629 -#: ../../content/administration/install/install.rst:827 +#: ../../content/administration/install/install.rst:433 +#: ../../content/administration/install/install.rst:628 +#: ../../content/administration/install/install.rst:826 msgid "From there, you can create and manage new :doc:`users `." msgstr "" -#: ../../content/administration/install/install.rst:436 -#: ../../content/administration/install/install.rst:631 -#: ../../content/administration/install/install.rst:829 +#: ../../content/administration/install/install.rst:435 +#: ../../content/administration/install/install.rst:630 +#: ../../content/administration/install/install.rst:828 msgid "The user account you use to log into Odoo's web interface differs from the :option:`--db_user ` CLI argument." msgstr "" -#: ../../content/administration/install/install.rst:440 -#: ../../content/administration/install/install.rst:635 -#: ../../content/administration/install/install.rst:833 +#: ../../content/administration/install/install.rst:439 +#: ../../content/administration/install/install.rst:634 +#: ../../content/administration/install/install.rst:832 msgid ":doc:`The exhaustive list of CLI arguments for odoo-bin `." msgstr "" -#: ../../content/administration/install/install.rst:509 +#: ../../content/administration/install/install.rst:508 msgid "Odoo requires Python 3.7 or later to run. Use your package manager to download and install Python 3 on your machine if it is not already done." msgstr "" -#: ../../content/administration/install/install.rst:528 +#: ../../content/administration/install/install.rst:527 msgid "Odoo uses PostgreSQL as database management system. Use your package manager to download and install PostgreSQL (supported version: 10.0 and later)." msgstr "" -#: ../../content/administration/install/install.rst:531 +#: ../../content/administration/install/install.rst:530 msgid "On Debian/Unbuntu, it can be achieved by executing the following:" msgstr "" -#: ../../content/administration/install/install.rst:545 -#: ../../content/administration/install/install.rst:739 +#: ../../content/administration/install/install.rst:544 +#: ../../content/administration/install/install.rst:738 msgid "Because your PostgreSQL user has the same name as your Unix login, you will be able to connect to the database without password." msgstr "" -#: ../../content/administration/install/install.rst:551 +#: ../../content/administration/install/install.rst:550 msgid "For libraries using native code, it is necessary to install development tools and native dependencies before the Python dependencies of Odoo. They are available in `-dev` or `-devel` packages for Python, PostgreSQL, libxml2, libxslt1, libevent, libsasl2 and libldap2." msgstr "" -#: ../../content/administration/install/install.rst:555 +#: ../../content/administration/install/install.rst:554 msgid "On Debian/Unbuntu, the following command should install all the required libraries:" msgstr "" -#: ../../content/administration/install/install.rst:569 -#: ../../content/administration/install/install.rst:751 +#: ../../content/administration/install/install.rst:568 +#: ../../content/administration/install/install.rst:750 msgid "Navigate to the path of your Odoo Community installation (`CommunityPath`) and run **pip** on the requirements file:" msgstr "" -#: ../../content/administration/install/install.rst:586 +#: ../../content/administration/install/install.rst:585 msgid "Download and install **nodejs** and **npm** with your package manager." msgstr "" -#: ../../content/administration/install/install.rst:608 -#: ../../content/administration/install/install.rst:801 +#: ../../content/administration/install/install.rst:607 +#: ../../content/administration/install/install.rst:800 msgid "PostgreSQL user and password. Odoo has no defaults beyond `psycopg2's defaults `_: connects over a UNIX socket on port `5432` with the current user and no password." msgstr "" -#: ../../content/administration/install/install.rst:620 -#: ../../content/administration/install/install.rst:813 +#: ../../content/administration/install/install.rst:619 +#: ../../content/administration/install/install.rst:812 msgid "Where `CommunityPath` is the path of the Odoo Community installation and `mydb` is the name of the PostgreSQL database." msgstr "" -#: ../../content/administration/install/install.rst:640 +#: ../../content/administration/install/install.rst:639 msgid "Mac OS" msgstr "" -#: ../../content/administration/install/install.rst:704 +#: ../../content/administration/install/install.rst:703 msgid "Odoo requires Python 3.7 or later to run. Use your preferred package manager (homebrew_, macports_) to download and install Python 3 on your machine if it is not already done." msgstr "" -#: ../../content/administration/install/install.rst:723 +#: ../../content/administration/install/install.rst:722 msgid "Odoo uses PostgreSQL as database management system. Use `postgres.app `_ to download and install PostgreSQL (supported version: 10.0 and later)." msgstr "" -#: ../../content/administration/install/install.rst:727 +#: ../../content/administration/install/install.rst:726 msgid "To make the command line tools bundled with `postgres.app` available, make sure to setup your `$PATH` variable by following the `Postgres.app CLI Tools Instructions `_." msgstr "" -#: ../../content/administration/install/install.rst:760 +#: ../../content/administration/install/install.rst:759 msgid "Non-Python dependencies need to be installed with a package manager:" msgstr "" -#: ../../content/administration/install/install.rst:762 +#: ../../content/administration/install/install.rst:761 msgid "Download and install the **Command Line Tools**:" msgstr "" -#: ../../content/administration/install/install.rst:768 +#: ../../content/administration/install/install.rst:767 msgid "Download and install the package manager of your choice (homebrew_, macports_)." msgstr "" -#: ../../content/administration/install/install.rst:769 +#: ../../content/administration/install/install.rst:768 msgid "Install non-python dependencies." msgstr "" -#: ../../content/administration/install/install.rst:779 +#: ../../content/administration/install/install.rst:778 msgid "Download and install **nodejs** with your preferred package manager (homebrew_, macports_)." msgstr "" -#: ../../content/administration/install/install.rst:817 +#: ../../content/administration/install/install.rst:816 msgid "Some versions of python on Mac might lead to the following error message: `current limit exceeds maximum limit`. In that case, add the following parameter `--limit-memory-hard 0` to avoid the problem." msgstr "" -#: ../../content/administration/install/install.rst:838 +#: ../../content/administration/install/install.rst:837 #: ../../content/administration/maintain/update.rst:147 msgid "Docker" msgstr "" -#: ../../content/administration/install/install.rst:840 +#: ../../content/administration/install/install.rst:839 msgid "The full documentation on how to use Odoo with Docker can be found on the official Odoo `docker image `_ page." msgstr "" @@ -1403,6 +1403,246 @@ msgstr "" msgid "Maintain" msgstr "" +#: ../../content/administration/maintain/azure_oauth.rst:3 +msgid "Connect Microsoft Outlook 365 to Odoo using Azure OAuth" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:5 +msgid "Odoo is compatible with Microsoft's Azure OAuth for Microsoft 365. In order to send and receive secure emails from a custom domain, all that is required is to configure a few settings on the Azure platform and on the back end of the Odoo database. This configuration works with either a personal email address or an address created by a custom domain." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:11 +msgid "`Microsoft Learn: Register an application with the Microsoft identity platform `_" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:15 +msgid "Setup in Microsoft Azure Portal" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:18 +msgid "Create a new application" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:20 +msgid "To get started, go to `Microsoft's Azure Portal `_. Log in with the :guilabel:`Microsoft Outlook Office 365` account if there is one, otherwise log in with the personal :guilabel:`Microsoft account`. A user with administrative access to the Azure Settings will need to connect and perform the following configuration. Next, navigate to the section labeled :guilabel:`Manage Azure Active Directory`." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:26 +msgid "Now, click on :guilabel:`Add (+)`, located in the top menu, and then select :guilabel:`App registration`. On the :guilabel:`Register an application` screen, rename the :guilabel:`Name` to `Odoo` or something recognizable. Under the :guilabel:`Supported account types` section select :guilabel:`Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)`." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:32 +msgid "Under the :guilabel:`Redirect URL` section, select :guilabel:`Web` as the platform, and then input `https:///microsoft_outlook/confirm` in the :guilabel:`URL` field. The Odoo base URL is the canonical domain at which your Odoo instance can be reached in the URL field." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:37 +msgid "*mydatabase.odoo.com*, where *mydatabase* is the actual prefix of the database's subdomain, assuming it's hosted on Odoo.com" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:40 +msgid "After the URL has been added to the field, :guilabel:`Register` the application so it is created." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:43 +msgid "API permissions" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:45 +msgid "The :guilabel:`API permissions` should be set next. Odoo will need specific API permissions to be able to read (IMAP) and send (IMAP) emails in the Microsoft 365 setup. First, click the :guilabel:`API permissions` link, located in the left menu bar. Next, click on the :guilabel:`(+) Add a Permission` button and select :guilabel:`Microsoft Graph` under :guilabel:`Commonly Used Microsoft APIs`. After, select the :guilabel:`Delegated Permissions` option." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:51 +msgid "In the search bar, search for the following :guilabel:`Deregulated permissions` and click :guilabel:`Add permissions` for each one:" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:54 +msgid ":guilabel:`SMTP.Send`" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:55 +msgid ":guilabel:`IMAP.AccessAsUser.All`" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:58 +msgid "The :guilabel:`User.Read` permission will be added by default." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:None +msgid "API permissions needed for Odoo integration are listed under the Microsoft Graph." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:65 +msgid "Assign users and groups" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:67 +msgid "After adding the API permissions, navigate back to the :guilabel:`Overview` of the :guilabel:`Application` in the top of the left sidebar menu." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:70 +msgid "Now, add users to this application. Under the :guilabel:`Essentials` overview table, click on the link labeled :guilabel:`Managed Application in Local Directory`, or the last option on the bottom right-hand side of the table." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:None +msgid "Add users/groups by clicking the Managed application in local directory link for the\n" +"created application." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:79 +msgid "In the left sidebar menu, select :guilabel:`Users and Groups`. Next, click on :guilabel:`(+) Add User/Group`. Depending on the account, either a :guilabel:`Group` and a :guilabel:`User` can be added, or only :guilabel:`Users`. Personal accounts will only allow for :guilabel:`Users` to be added." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:84 +msgid "Under :guilabel:`Users` or :guilabel:`Groups`, click on :guilabel:`None Selected` and add the users or group of users that will be sending emails from the :guilabel:`Microsoft account` in Odoo. :guilabel:`Add` the users/groups, click :guilabel:`Select`, and then :guilabel:`Assign` them to the application." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:90 +msgid "Create credentials" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:92 +msgid "Now that the Microsoft Azure app is set up, credentials need to be created for the Odoo setup. These include the :guilabel:`Client ID` and :guilabel:`Client Secret`. To start, the :guilabel:`Client ID` can be copied from the :guilabel:`Overview` page of the app. The :guilabel:`Client ID` or :guilabel:`Application ID` is located under the :guilabel:`Display Name` in the :guilabel:`Essentials` overview of the app." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:None +msgid "Application/Client ID located in the Overview of the app." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:102 +msgid "Next, the :guilabel:`Client Secret Value` needs to be retrieved. To get this value, click on :guilabel:`Certificates & Secrets` in the left sidebar menu. Then, a :guilabel:`Client Secret` needs to be produced. In order to do this, click on the :guilabel:`(+) New Client Secret` button." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:106 +msgid "A window on the right will populate with a button labeled :guilabel:`Add a client secret`. Under :guilabel:`Description`, type in `Odoo Fetchmail` or something recognizable, and then set the :guilabel:`expiration date`." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:111 +msgid "A new :guilabel:`Client Secret` will need to be produced and configured if the first one expires. In this event, there could be an interruption of service, so the expiration date should be noted and set to the furthest possible date." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:115 +msgid "Next, click on :guilabel:`Add` when these two values are entered. A :guilabel:`Client Secret Value` and :guilabel:`Secret ID` will be created. It is important to copy the :guilabel:`Value` or :guilabel:`Client Secret Value` into a notepad as it will become encrypted after leaving this page. The :guilabel:`Secret ID` is not needed." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:None +msgid "Client Secret Value or Value in the app's credentials." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:124 +msgid "After these steps, the following items should be ready to be set up in Odoo:" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:126 +msgid "A client ID (:guilabel:`Client ID` or :guilabel:`Application ID`)" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:127 +msgid "A client secret (:guilabel:`Value` or :guilabel:`Client Secret Value`)" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:129 +msgid "This completes the setup on the :guilabel:`Microsoft Azure Portal` side." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:132 +#: ../../content/administration/maintain/google_oauth.rst:84 +msgid "Setup in Odoo" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:135 +msgid "Enter Microsoft Outlook credentials" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:137 +msgid "First, open the Odoo database and navigate to the :guilabel:`Apps` module. Then, remove the :guilabel:`Apps` filter from the search bar and type in `Outlook`. After that, install the module called :guilabel:`Microsoft Outlook`." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:141 +msgid "Next, navigate to :menuselection:`Settings --> General Settings`, and under the :guilabel:`Discuss` section, ensure that the checkbox for :guilabel:`Custom Email Servers` is checked. This populates a new option for :guilabel:`Outlook Credentials`." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:145 +msgid ":guilabel:`Save` the progress." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:147 +msgid "Then, copy and paste the :guilabel:`Client ID` (Application ID) and :guilabel:`Client Secret (Client Secret Value)` into the respective fields and :guilabel:`Save` the settings." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:None +msgid "Outlook Credentials in Odoo General Settings." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:155 +#: ../../content/administration/maintain/google_oauth.rst:98 +msgid "Configure outgoing email server" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:157 +msgid "On the :guilabel:`General Settings` page, under the :guilabel:`Custom Email Servers` setting, click the :guilabel:`Outgoing Email Servers` link to configure the Microsoft account." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:160 +msgid "Then, create a new email server and check the box for :guilabel:`Outlook`. Next, fill in the :guilabel:`Name` (it can be anything) and the Microsoft Outlook email :guilabel:`Username`." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:163 +msgid "If the :guilabel:`From Filter` field is empty, enter either a :ref:`domain or email address `." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:166 +msgid "Then, cick on :guilabel:`Connect your Outlook account`." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:168 +msgid "A new window from Microsoft opens to complete the :guilabel:`authorization process`. Select the appropriate email address that is being configured in Odoo." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:None +msgid "Permission page to grant access between newly created app and Odoo." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:175 +msgid "Then, allow Odoo to access the Microsoft account by clicking on :guilabel:`Yes`. After this, the page will navigate back to the newly configured :guilabel:`Outgoing Mail Server` in Odoo. The configuration automatically loads the :guilabel:`token` in Odoo, and a tag stating :guilabel:`Outlook Token Valid` appears in green." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:None +msgid "Valid Outlook Token indicator." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:184 +msgid "Finally, click :guilabel:`Test Connection`. A confirmation message should appear. The Odoo database can now send safe, secure emails through Microsoft Outlook using OAuth authentication." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:188 +msgid "Multiple user configuration" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:190 +msgid "Each user should have a separate server set up. The :guilabel:`from-filter` should be set so that only the user's email is sent from that server. In other words, only a user with an email address that matches the set :guilabel:`from-filter` is able to use this server." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:194 +msgid "After setting the :guilabel:`from-filter`, set up a fallback email account to allow for the sending of :guilabel:`notifications`. The fallback email must be configured as a :guilabel:`general transactional server`. The :guilabel:`mail.default.from` system parameter must be set to the :guilabel:`username` of the general transactional server account. For more information see :ref:`Use a default email address `." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:201 +#: ../../content/administration/maintain/mailjet_api.rst:213 +msgid "The :guilabel:`System Parameters` can be accessed by activating :doc:`../../applications/general/developer_mode` in the :menuselection:`Settings --> Technical --> Parameters --> System Parameters` menu." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:206 +msgid "Configure incoming email server" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:208 +msgid "The incoming account should be configured in a similar way to the outgoing email account. Navigate to the :guilabel:`Incoming Mail Servers` in the :guilabel:`Technical Menu` and :guilabel:`Create` a new configuration. Check or Select the button next to :guilabel:`Outlook Oauth Authentication` and enter the :guilabel:`Microsoft Outlook username`. Click on :guilabel:`Connect your Outlook account`. Odoo will state: :guilabel:`Outlook Token Valid` Now :guilabel:`Test and Confirm` the account. The account should be ready to receive email to the Odoo database." +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:216 +msgid ":doc:`../../applications/general/email_communication/email_servers`" +msgstr "" + #: ../../content/administration/maintain/domain_names.rst:3 msgid "Domain names" msgstr "" @@ -1560,7 +1800,7 @@ msgid "Add a CNAME record" msgstr "" #: ../../content/administration/maintain/domain_names.rst:128 -msgid "A **CNAME record** is a type of DNS record that points to the IP address of another website rather than to directly to an IP address." +msgid "A **CNAME record** is a type of DNS record that points to the domain of another website rather than directly to an IP address." msgstr "" #: ../../content/administration/maintain/domain_names.rst:131 @@ -1601,7 +1841,7 @@ msgid "Create a **CNAME record** pointing to the address of your database." msgstr "" #: ../../content/administration/maintain/domain_names.rst:154 -msgid "While Odoo suggests creating a CNAME record for your ``www.`` subdomain (``www.example.com``, you can of course use any domain name of your choice, with any subdomain (e.g., ``anything.example.com``)." +msgid "While Odoo suggests creating a CNAME record for your ``www.`` subdomain (``www.example.com``), you can of course use any domain name of your choice, with any subdomain (e.g., ``anything.example.com``)." msgstr "" #: ../../content/administration/maintain/domain_names.rst:159 @@ -2020,10 +2260,6 @@ msgstr "" msgid "Client ID and Client Secret for Google OAuth." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:84 -msgid "Setup in Odoo" -msgstr "" - #: ../../content/administration/maintain/google_oauth.rst:87 msgid "Enter Google Credentials" msgstr "" @@ -2036,10 +2272,6 @@ msgstr "" msgid "Next, navigate to :menuselection:`Settings --> General Settings`, and under the :guilabel:`Discuss` section, ensure that the checkbox for :guilabel:`Custom Email Servers` is checked. This populates a new option for :guilabel:`Gmail Credentials`. Then, copy and paste the :guilabel:`Client ID` and :guilabel:`Client Secret` into the respective fields and :guilabel:`Save` the settings." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:98 -msgid "Configure outgoing email server" -msgstr "" - #: ../../content/administration/maintain/google_oauth.rst:100 msgid "After that, on the :guilabel:`General Settings` page, under :guilabel:`Custom Email Servers`, click :guilabel:`Outgoing Email Servers` to configure the external Gmail account." msgstr "" @@ -2315,6 +2547,223 @@ msgstr "" msgid "Grab a :ref:`backup of your Odoo.sh production database `." msgstr "" +#: ../../content/administration/maintain/mailjet_api.rst:3 +msgid "Mailjet API" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:5 +msgid "Odoo is compatible with Mailjet's :abbr:`API (Application Programming Interface)` for mass mailing. Set up a dedicated mass mailing server through Mailjet by configuring settings in the Mailjet account and the Odoo database. In some circumstances, settings need to be configured on the custom domain's :abbr:`DNS (Domain Name System)` settings as well." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:11 +msgid "Set up in Mailjet" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:14 +msgid "Create API credentials" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:16 +msgid "To get started, sign in to the `Mailjet Account Information `_ page. Next, navigate to the :guilabel:`Senders & Domains` section and click on :guilabel:`SMTP and SEND API Settings`." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:None +msgid "SMTP and Send API Settings link in the Senders & Domains section of Mailjet." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:24 +msgid "Then, copy the :abbr:`SMTP (Simple Mail Transfer Protocol)` configuration settings onto a notepad. They can be found under the :guilabel:`Configuration (SMTP only)` section. The :abbr:`SMTP (Simple Mail Transfer Protocol)` configuration settings include the server address, the security option needed (Use :abbr:`SSL (Secure Sockets Layer)`/:abbr:`TLS (Transport Layer Security)`), and the port number. The settings are needed to configure Mailjet in Odoo, which is covered in the :ref:`last section `." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:32 +msgid "`Mailjet: How can I configure my SMTP parameters? `_" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:36 +msgid "Odoo blocks `port 25` on Odoo Online and Odoo.sh databases. :ref:`See reference here `." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:None +msgid "SMTP configuration from Mailjet." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:43 +msgid "Next, click on the button labeled :guilabel:`Retrieve your API credentials` to retrieve the Mailjet API credentials." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:46 +msgid "Then, click on the eye icon to reveal the :guilabel:`API key`. Copy this key to a notepad, as this serves as the :guilabel:`Username` in the Odoo configuration. Next, click on the :guilabel:`Generate Secret Key` button to generate the :guilabel:`Secret Key`. Copy this key to a notepad, as this serves as the :guilabel:`Password` in the Odoo configuration." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:52 +msgid "Add verified sender address(es)" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:54 +msgid "The next step is to add a sender address or a domain to the Mailjet account settings so that the email address or domain is approved to send emails using Mailjet's servers. First, navigate to the `Mailjet Account Information `_ page. Next, click on the :guilabel:`Add a Sender Domain or Address` link under the :guilabel:`Senders & Domains` section." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:None +msgid "Add a sender domain or address in the Mailjet interface." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:63 +msgid "Determine if a sender's email address or the entire domain needs to be added to the Mailjet settings. It may be easier to configure the domain as a whole if :abbr:`DNS (Domain Name System)` access is available. Jump to the :ref:`Add a domain ` section for steps on adding the domain." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:69 +msgid "Either all email addresses of the Odoo database users who are sending emails using Mailjet's servers need to be configured or the domain(s) of the users' email addresses can be configured." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:72 +msgid "By default, the email address originally set up in the Mailjet account is added as a trusted sender. To add another email address, click on the button labeled :guilabel:`Add a sender address`. Then, add the email address that is configured to send from the custom domain." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:76 +msgid "At minimum the following email addresses should be set up in the provider and verified in Mailjet:" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:78 +msgid "notifications\\@yourdomain.com" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:79 +msgid "bounce\\@yourdomain.com" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:80 +msgid "catchall\\@yourdomain.com" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:83 +msgid "Replace `yourdomain` with the custom domain for the Odoo database. If there isn't one, then use the :guilabel:`mail.catchall.domain` system parameter." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:86 +msgid "After that, fill out the :guilabel:`Email Information` form, making sure to select the appropriate email type: transactional email or mass emails. After completing the form, an activation email is sent to the email address and the trusted sender can be activated." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:90 +msgid "It is recommended to set up the :abbr:`SPF (Sender Policy Framework)`/:abbr:`DKIM (DomainKeys Identified Mail)`/:abbr:`DMARC (Domain-based Message Authentication, Reporting, and Conformance)` settings on the domain of the sender." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:95 +#: ../../content/administration/maintain/mailjet_api.rst:162 +msgid "`Mailjet's SPF/DKIM/DMARC documentation `_" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:99 +msgid "If the database is not using a custom domain, then in order to verify the sender's address, a temporary alias (of the three email addresses mentioned above) should be set up in Odoo CRM to create a lead. Then, the database is able to receive the verification email and verify the accounts." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:107 +msgid "Add a domain" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:109 +msgid "By adding an entire domain to the Mailjet account, all the sender addresses related to that domain are automatically validated for sending emails using Mailjet servers. First, navigate to the `Mailjet Account Information `_ page. Next, click on :guilabel:`Add a Sender Domain or Address` link under the :guilabel:`Senders & Domains` section. Then, click on :guilabel:`Add domain` to add the custom domain." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:116 +msgid "The domain needs to be added to the Mailjet account and then validated through the :abbr:`DNS (Domain Name System)`." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:119 +msgid "After that, fill out the :guilabel:`Add a new Domain` page on Mailjet and click :guilabel:`Continue`." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:122 +msgid "After adding the domain, a validation page will populate. Unless the Odoo database is on-premise (in which case, choose :guilabel:`Option 1`), choose :guilabel:`Option 2: Create a DNS Record`. Copy the TXT record information to a notepad and then navigate to the domain's :abbr:`DNS (Domain Name System)` provider to complete validation." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:None +msgid "The TXT record information to input on the domain's DNS." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:132 +msgid "Setup in the domain's DNS" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:134 +msgid "After getting the TXT record information from the Mailjet account, add a TXT record to the domain's :abbr:`DNS (Domain Name System)`. This process varies depending on the :abbr:`DNS (Domain Name System)` provider. Consult the provider for specific configuration processes. The TXT record information consists of the :guilabel:`Host` and :guilabel:`Value`. Paste these into the corresponding fields in the TXT record." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:141 +msgid "Return to Mailjet account information" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:143 +msgid "After adding the TXT record to the domain's :abbr:`DNS (Domain Name System)`, navigate back to the Mailjet account. Then, navigate to :menuselection:`Account Information --> Add a Sender Domain or Address`, click the gear icon next to :guilabel:`Domain`, and select :guilabel:`Validate`." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:147 +msgid "This action can also be done by going to the `Sender domains & addresses `_ page on the Mailjet account information and clicking on :guilabel:`Manage`." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:150 +msgid "Next, click :guilabel:`Check Now` to validate the TXT record that was added on the domain. A success screen will appear if the domain is configured correctly." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:None +msgid "Check DNS record in Mailjet." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:157 +msgid "After successfully setting up the domain, there is an option to :guilabel:`Authenticate this domain (SPF/DKIM)`. This button populates :abbr:`SPF (Sender Policy Framework)` & :abbr:`DKIM (DomainKeys Identified Mail) records to input into the :abbr:`DNS (Domain Name System)` provider." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:None +msgid "Authenticate the domain with SPF/DKIM records in Mailjet." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:172 +msgid "Set up in Odoo" +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:174 +msgid "To complete the setup, navigate to the Odoo database and go to the :guilabel:`Settings`. With :ref:`developer-mode` turned on, go to the :menuselection:`Technical Menu --> Email --> Outgoing Mail Servers`. Then, create a new outgoing server configuration by clicking on the :guilabel:`Create` button." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:179 +msgid "Next, input the `SMTP server` (in-v3.mailjet.com), `port number` (587 or 465), and `Security (SSL/TLS)` that was copied earlier from the Mailjet account. They can also be found `here `_. It is recommended to use :abbr:`SSL (Secure Sockets Layer)`/:abbr:`TLS (Transport Layer Security)` even though Mailjet may not require it." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:184 +msgid "For the :guilabel:`Username`, input the :guilabel:`API KEY`. For the :guilabel:`Password`, input the :guilabel:`SECRET KEY` that was copied from the Mailjet account to the notepad earlier. These settings can be found on :menuselection:`Mailjet --> Account Settings --> SMTP and SEND API Settings`." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:189 +msgid "Then, if the Mailjet server is used for mass emailing, set the :guilabel:`Priority` value higher than that of any transactional email server(s). Finally, save the settings and :guilabel:`Test the Connection`." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:None +msgid "Odoo outgoing email server settings." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:198 +msgid "In order for the notifications feature to work using Mailjet, there are three settings that need to be set in Odoo." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:201 +msgid "The :guilabel:`From Filter` needs to be set on the server configuration. It is recommended to set it as a domain and not a full email address. It should match the domain in the two proceeding steps. More information can be referenced :ref:`here `." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:205 +msgid "The :guilabel:`mail.default.from` system parameter must have the value `notifications\\@yourdomain.com`." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:207 +msgid "The :guilabel:`mail.default.from_filter` system parameter must have the value `yourdomain.com`. Replace `yourdomain` with the custom domain for the Odoo database. If there isn't one, then use the :guilabel:`mail.catchall.domain` system parameter." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:211 +msgid "For more information see :ref:`Using a default email address `." +msgstr "" + +#: ../../content/administration/maintain/mailjet_api.rst:217 +msgid "Once the setup is complete, the Odoo database is ready to use the Mailjet email server for mass mailing or transactional emails!" +msgstr "" + #: ../../content/administration/maintain/odoo_online.rst:3 msgid "Odoo Online database management" msgstr "" diff --git a/locale/sources/contributing.pot b/locale/sources/contributing.pot index e3d86df52..bf57744fc 100644 --- a/locale/sources/contributing.pot +++ b/locale/sources/contributing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 15.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-02 09:09+0000\n" +"POT-Creation-Date: 2023-01-19 15:32+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -153,867 +153,1103 @@ msgstr "" msgid "It is mainly Odoo employees who develop new features for the codebase and write new content for the documentation. Be sure to discuss any idea for a new feature or page with the Odoo team so they can give you the green light before you begin working on it. Some features may already be in development on their side, and only approved features can be merged." msgstr "" -#: ../../content/contributing/development.rst:6 +#: ../../content/contributing/check_mergeability_status.rst:1 +#: ../../content/contributing/check_mergeability_status.rst:1 +#: ../../content/contributing/check_mergeability_status.rst:1 +#: ../../content/contributing/check_mergeability_status.rst:1 +#: ../../content/contributing/check_mergeability_status.rst:1 +#: ../../content/contributing/check_mergeability_status.rst:1 +msgid "At the bottom of the page, check the mergeability status and address any issues." +msgstr "" + +#: ../../content/contributing/configure_git_authorship.rst:1 +#: ../../content/contributing/configure_git_authorship.rst:1 +#: ../../content/contributing/configure_git_authorship.rst:1 +msgid "Configure Git to identify yourself as the author of your future contributions. Enter the same email address you used to register on GitHub." +msgstr "" + +#: ../../content/contributing/configure_github_account.rst:1 +#: ../../content/contributing/configure_github_account.rst:1 +#: ../../content/contributing/configure_github_account.rst:1 +msgid "`Generate a new SSH key and register it on your GitHub account `_." +msgstr "" + +#: ../../content/contributing/create_github_account.rst:1 +#: ../../content/contributing/create_github_account.rst:1 +#: ../../content/contributing/create_github_account.rst:1 +msgid "First, you need to `create a GitHub account `_. Odoo uses GitHub to manage the source code of its products, and this is where you will make your changes and submit them for review." +msgstr "" + +#: ../../content/contributing/development.rst:5 msgid "Development" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:6 -msgid "Coding Guidelines" +#: ../../content/contributing/development.rst:13 +msgid "If you are reading this, chances are that you are interested in learning how to contribute to the codebase of Odoo. Whether that's the case or you landed here by accident, we've got you covered!" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:8 +#: ../../content/contributing/development.rst:17 +#: ../../content/contributing/documentation.rst:19 +msgid ":doc:`Discover other ways to contribute to Odoo <../contributing>`" +msgstr "" + +#: ../../content/contributing/development.rst:19 +msgid "When you feel ready, jump to the :ref:`contributing/development/setup` section to begin your journey in contributing to the development of Odoo." +msgstr "" + +#: ../../content/contributing/development.rst:25 +#: ../../content/contributing/documentation.rst:63 +msgid "Environment setup" +msgstr "" + +#: ../../content/contributing/development.rst:27 +msgid "The instructions below help you prepare your environment for making local changes to the codebase and then push them to GitHub. Skip this section and go to :ref:`contributing/development/first-contribution` if you have already completed this step." +msgstr "" + +#: ../../content/contributing/development.rst:33 +msgid "Go to `github.com/odoo/odoo `_ and click on the :guilabel:`Fork` button in the top right corner to create a fork (:dfn:`your own copy`) of the repository on your account. Do the same with `github.com/odoo/enterprise `_ if you have access to it. This creates a copy of the codebase to which you can make changes without affecting the main codebase. Skip this step if you work at Odoo." +msgstr "" + +#: ../../content/contributing/install_git.rst:1 +#: ../../content/contributing/install_git.rst:1 +#: ../../content/contributing/install_git.rst:1 +msgid "`Install Git `_. It is a command-line (:dfn:`a text interface`) tool that allows tracking the history of changes made to a file and, more importantly, working on different versions of that file simultaneously. It means you do not need to worry about overwriting someone else’s pending work when making changes." +msgstr "" + +#: ../../content/contributing/install_git.rst:6 +#: ../../content/contributing/install_git.rst:6 +#: ../../content/contributing/install_git.rst:6 +msgid "Verify that the installation directory of Git is included in your system's `PATH` variable." +msgstr "" + +#: ../../content/contributing/install_git.rst:10 +#: ../../content/contributing/install_git.rst:10 +#: ../../content/contributing/documentation.rst:97 +#: ../../content/contributing/documentation.rst:124 +#: ../../content/contributing/documentation.rst:140 +#: ../../content/contributing/install_git.rst:10 +msgid "Linux and macOS" +msgstr "" + +#: ../../content/contributing/install_git.rst:12 +#: ../../content/contributing/install_git.rst:12 +#: ../../content/contributing/install_git.rst:12 +msgid "Follow the `guide to update the PATH variable on Linux and macOS `_ with the installation path of Git (by default :file:`/usr/bin/git`)." +msgstr "" + +#: ../../content/contributing/install_git.rst:16 +#: ../../content/contributing/install_git.rst:16 +#: ../../content/contributing/documentation.rst:104 +#: ../../content/contributing/documentation.rst:130 +#: ../../content/contributing/documentation.rst:146 +#: ../../content/contributing/install_git.rst:16 +msgid "Windows" +msgstr "" + +#: ../../content/contributing/install_git.rst:18 +#: ../../content/contributing/install_git.rst:18 +#: ../../content/contributing/install_git.rst:18 +msgid "Follow the `guide to update the PATH variable on Windows `_ with the installation path of Git (by default :file:`C:\\\\Program Files\\\\Git`)." +msgstr "" + +#: ../../content/contributing/development.rst:40 +msgid ":ref:`Install Odoo from the sources `. Make sure to fetch the sources through Git with SSH." +msgstr "" + +#: ../../content/contributing/development.rst:42 +msgid "Configure Git to push changes to your fork(s) rather than to the main codebase. If you work at Odoo, configure Git to push changes to the shared forks created on the account **odoo-dev**." +msgstr "" + +#: ../../content/contributing/development.rst:47 +msgid "Link Git with your fork(s)" +msgstr "" + +#: ../../content/contributing/development.rst:49 +msgid "In the command below, replace `` with the name of the GitHub account on which you created the fork(s)." +msgstr "" + +#: ../../content/contributing/development.rst:56 +msgid "If you have access to `odoo/enterprise`, configure the related remote too." +msgstr "" + +#: ../../content/contributing/development.rst:62 +msgid "Link Git with odoo-dev" +msgstr "" + +#: ../../content/contributing/development.rst:72 +msgid "That's it! You are ready to :ref:`make your first contribution `." +msgstr "" + +#: ../../content/contributing/development.rst:79 +#: ../../content/contributing/documentation.rst:158 +msgid "Make your first contribution" +msgstr "" + +#: ../../content/contributing/development.rst:82 +msgid "Odoo development can be challenging for beginners. We recommend you to be knowledgeable enough to code a small module before contributing. If that is not the case, take some time to go through the :doc:`developer tutorials ` to fill in the gaps." +msgstr "" + +#: ../../content/contributing/development.rst:85 +#: ../../content/contributing/documentation.rst:204 +msgid "Some steps of this guide require to be comfortable with Git. Here are some `tutorials `_ and an `interactive training `_ if you are stuck at some point." +msgstr "" + +#: ../../content/contributing/development.rst:89 +msgid "Now that your environment is set up, you can start contributing to the codebase. In a terminal, navigate to the directory where you installed Odoo from sources and follow the guide below." +msgstr "" + +#: ../../content/contributing/development.rst:92 +msgid "Choose the version of Odoo to which you want to make changes. Keep in mind that contributions targeting an :doc:`unsupported version of Odoo ` are not accepted. This guide assumes that the changes target Odoo 15, which corresponds to branch `15.0`." +msgstr "" + +#: ../../content/contributing/development.rst:96 +#: ../../content/contributing/documentation.rst:216 +msgid "Create a new branch starting from branch 15.0. Prefix the branch name with the base branch: `15.0-...`. If you work at Odoo, suffix the branch name with your Odoo handle: `15.0-...-xyz`." +msgstr "" + +#: ../../content/contributing/development.rst:110 +msgid "`Sign the Odoo CLA `_ if not already done. Skip this step if you work at Odoo." +msgstr "" + +#: ../../content/contributing/development.rst:112 +msgid "Make the desired changes to the codebase. When working on the codebase, follow these rules:" +msgstr "" + +#: ../../content/contributing/development.rst:114 +msgid "Keep your changes focused and specific. It is best to work on one particular feature or bug fix at a time rather than tackle multiple unrelated changes simultaneously." +msgstr "" + +#: ../../content/contributing/development.rst:116 +msgid "Respect the `stable policy `_ when working in another branch than `master`." +msgstr "" + +#: ../../content/contributing/development.rst:119 +msgid "Follow the :doc:`coding guidelines `." +msgstr "" + +#: ../../content/contributing/development.rst:120 +msgid "Test your changes thoroughly and :doc:`write tests ` to ensure that everything is working as expected and that there are no regressions or unintended consequences." +msgstr "" + +#: ../../content/contributing/development.rst:124 +#: ../../content/contributing/documentation.rst:249 +msgid "Commit your changes. Write a clear commit message as instructed in the :doc:`Git guidelines `." +msgstr "" + +#: ../../content/contributing/development.rst:132 +#: ../../content/contributing/documentation.rst:257 +msgid "Push your change to your fork, for which we added the remote alias `dev`." +msgstr "" + +#: ../../content/contributing/development.rst:140 +#: ../../content/contributing/documentation.rst:274 +msgid "Open a :abbr:`PR (Pull Request)` on GitHub to submit your changes for review." +msgstr "" + +#: ../../content/contributing/development.rst:142 +msgid "Go to the `compare page of the odoo/odoo codebase `_, or the `compare page of the odoo/enterprise codebase `_, depending on which codebase your changes target." +msgstr "" + +#: ../../content/contributing/development.rst:146 +#: ../../content/contributing/documentation.rst:278 +msgid "Select **15.0** for the base." +msgstr "" + +#: ../../content/contributing/development.rst:147 +#: ../../content/contributing/documentation.rst:279 +msgid "Click on :guilabel:`compare across forks`." +msgstr "" + +#: ../../content/contributing/development.rst:148 +msgid "Select **/odoo** or **/enterprise** for the head repository. Replace `` with the name of the GitHub account on which you created the fork or by **odoo-dev** if you work at Odoo." +msgstr "" + +#: ../../content/contributing/development.rst:151 +#: ../../content/contributing/documentation.rst:192 +#: ../../content/contributing/documentation.rst:283 +msgid "Review your changes and click on the :guilabel:`Create pull request` button." +msgstr "" + +#: ../../content/contributing/development.rst:152 +#: ../../content/contributing/documentation.rst:193 +#: ../../content/contributing/documentation.rst:284 +msgid "Tick the :guilabel:`Allow edits from maintainer` checkbox. Skip this step if you work at Odoo." +msgstr "" + +#: ../../content/contributing/development.rst:153 +#: ../../content/contributing/documentation.rst:286 +msgid "Complete the description and click on the :guilabel:`Create pull request` button again." +msgstr "" + +#: ../../content/contributing/handle_reviews.rst:1 +#: ../../content/contributing/handle_reviews.rst:1 +#: ../../content/contributing/handle_reviews.rst:1 +#: ../../content/contributing/handle_reviews.rst:1 +#: ../../content/contributing/handle_reviews.rst:1 +#: ../../content/contributing/handle_reviews.rst:1 +msgid "As soon as your :abbr:`PR (Pull Request)` is ready for merging, a member of the Odoo team will be automatically assigned for review. If the reviewer has questions or remarks, they will post them as comments and you will be notified by email. Those comments must be resolved for the contribution to go forward." +msgstr "" + +#: ../../content/contributing/development.rst:157 +msgid "Once your changes are approved, the review merges them and they become available for all Odoo users after the next code update!" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:5 +msgid "Coding guidelines" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:7 msgid "This page introduces the Odoo Coding Guidelines. Those aim to improve the quality of Odoo Apps code. Indeed proper code improves readability, eases maintenance, helps debugging, lowers complexity and promotes reliability. These guidelines should be applied to every new module and to all new development." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:15 +#: ../../content/contributing/development/coding_guidelines.rst:14 msgid "When modifying existing files in **stable version** the original file style strictly supersedes any other style guidelines. In other words please never modify existing files in order to apply these guidelines. It avoids disrupting the revision history of code lines. Diff should be kept minimal. For more details, see our `pull request guide `_." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:23 +#: ../../content/contributing/development/coding_guidelines.rst:22 msgid "When modifying existing files in **master (development) version** apply those guidelines to existing code only for modified code or if most of the file is under revision. In other words modify existing files structure only if it is going under major changes. In that case first do a **move** commit then apply the changes related to the feature." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:30 +#: ../../content/contributing/development/coding_guidelines.rst:29 msgid "Module structure" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:33 +#: ../../content/contributing/development/coding_guidelines.rst:32 msgid "Directories" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:34 +#: ../../content/contributing/development/coding_guidelines.rst:33 msgid "A module is organized in important directories. Those contain the business logic; having a look at them should make you understand the purpose of the module." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:37 +#: ../../content/contributing/development/coding_guidelines.rst:36 msgid "*data/* : demo and data xml" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:38 +#: ../../content/contributing/development/coding_guidelines.rst:37 msgid "*models/* : models definition" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:39 +#: ../../content/contributing/development/coding_guidelines.rst:38 msgid "*controllers/* : contains controllers (HTTP routes)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:40 +#: ../../content/contributing/development/coding_guidelines.rst:39 msgid "*views/* : contains the views and templates" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:41 +#: ../../content/contributing/development/coding_guidelines.rst:40 msgid "*static/* : contains the web assets, separated into *css/, js/, img/, lib/, ...*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:43 +#: ../../content/contributing/development/coding_guidelines.rst:42 msgid "Other optional directories compose the module." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:45 +#: ../../content/contributing/development/coding_guidelines.rst:44 msgid "*wizard/* : regroups the transient models (``models.TransientModel``) and their views" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:46 +#: ../../content/contributing/development/coding_guidelines.rst:45 msgid "*report/* : contains the printable reports and models based on SQL views. Python objects and XML views are included in this directory" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:47 +#: ../../content/contributing/development/coding_guidelines.rst:46 msgid "*tests/* : contains the Python tests" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:51 +#: ../../content/contributing/development/coding_guidelines.rst:50 msgid "File naming" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:53 +#: ../../content/contributing/development/coding_guidelines.rst:52 msgid "File naming is important to quickly find information through all odoo addons. This section explains how to name files in a standard odoo module. As an example we use a `plant nursery `_ application. It holds two main models *plant.nursery* and *plant.order*." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:58 +#: ../../content/contributing/development/coding_guidelines.rst:57 msgid "Concerning *models*, split the business logic by sets of models belonging to a same main model. Each set lies in a given file named based on its main model. If there is only one model, its name is the same as the module name. Each inherited model should be in its own file to help understanding of impacted models." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:72 +#: ../../content/contributing/development/coding_guidelines.rst:71 msgid "Concerning *security*, three main files should be used:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:74 +#: ../../content/contributing/development/coding_guidelines.rst:73 msgid "First one is the definition of access rights done in a :file:`ir.model.access.csv` file." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:75 +#: ../../content/contributing/development/coding_guidelines.rst:74 msgid "User groups are defined in :file:`_groups.xml`." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:76 +#: ../../content/contributing/development/coding_guidelines.rst:75 msgid "Record rules are defined in :file:`_security.xml`." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:87 +#: ../../content/contributing/development/coding_guidelines.rst:86 msgid "Concerning *views*, backend views should be split like models and suffixed by ``_views.xml``. Backend views are list, form, kanban, activity, graph, pivot, .. views. To ease split by model in views main menus not linked to specific actions may be extracted into an optional ``_menus.xml`` file. Templates (QWeb pages used notably for portal / website display) and bundles (import of JS and CSS assets) are put in separate files. Those are respectively ``_templates.xml`` and ``assets.xml`` files." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:107 +#: ../../content/contributing/development/coding_guidelines.rst:106 msgid "Concerning *data*, split them by purpose (demo or data) and main model. Filenames will be the main_model name suffixed by ``_demo.xml`` or ``_data.xml``. For instance for an application having demo and data for its main model as well as subtypes, activities and mail templates all related to mail module:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:120 +#: ../../content/contributing/development/coding_guidelines.rst:119 msgid "Concerning *controllers*, generally all controllers belong to a single controller contained in a file named ``.py``. An old convention in Odoo is to name this file ``main.py`` but it is considered as outdated. If you need to inherit an existing controller from another module do it in ``.py``. For example adding portal controller in an application is done in ``portal.py``." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:134 +#: ../../content/contributing/development/coding_guidelines.rst:133 msgid "Concerning *static files*, Javascript files follow globally the same logic as python models. Each component should be in its own file with a meaningful name. For instance, the activity widgets are located in ``activity.js`` of mail module. Subdirectories can also be created to structure the 'package' (see web module for more details). The same logic should be applied for the templates of JS widgets (static XML files) and for their styles (scss files). Don't link data (image, libraries) outside Odoo: do not use an URL to an image but copy it in the codebase instead." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:143 +#: ../../content/contributing/development/coding_guidelines.rst:142 msgid "Concerning *wizards*, naming convention is the same of for python models: ``.py`` and ``_views.xml``. Both are put in the wizard directory. This naming comes from old odoo applications using the wizard keyword for transient models." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:155 +#: ../../content/contributing/development/coding_guidelines.rst:154 msgid "Concerning *statistics reports* done with python / SQL views and classic views naming is the following :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:165 +#: ../../content/contributing/development/coding_guidelines.rst:164 msgid "Concerning *printable reports* which contain mainly data preparation and Qweb templates naming is the following :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:175 +#: ../../content/contributing/development/coding_guidelines.rst:174 msgid "The complete tree of our Odoo module therefore looks like" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:234 +#: ../../content/contributing/development/coding_guidelines.rst:233 msgid "File names should only contain ``[a-z0-9_]`` (lowercase alphanumerics and ``_``)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:237 +#: ../../content/contributing/development/coding_guidelines.rst:236 msgid "Use correct file permissions : folder 755 and file 644." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:242 +#: ../../content/contributing/development/coding_guidelines.rst:241 msgid "XML files" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:245 +#: ../../content/contributing/development/coding_guidelines.rst:244 msgid "Format" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:246 +#: ../../content/contributing/development/coding_guidelines.rst:245 msgid "To declare a record in XML, the **record** notation (using **) is recommended:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:248 +#: ../../content/contributing/development/coding_guidelines.rst:247 msgid "Place ``id`` attribute before ``model``" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:249 +#: ../../content/contributing/development/coding_guidelines.rst:248 msgid "For field declaration, ``name`` attribute is first. Then place the *value* either in the ``field`` tag, either in the ``eval`` attribute, and finally other attributes (widget, options, ...) ordered by importance." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:254 +#: ../../content/contributing/development/coding_guidelines.rst:253 msgid "Try to group the record by model. In case of dependencies between action/menu/views, this convention may not be applicable." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:256 +#: ../../content/contributing/development/coding_guidelines.rst:255 msgid "Use naming convention defined at the next point" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:257 +#: ../../content/contributing/development/coding_guidelines.rst:256 msgid "The tag ** is only used to set not-updatable data with ``noupdate=1``. If there is only not-updatable data in the file, the ``noupdate=1`` can be set on the ```` tag and do not set a ```` tag." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:275 +#: ../../content/contributing/development/coding_guidelines.rst:274 msgid "Odoo supports custom tags acting as syntactic sugar:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:277 +#: ../../content/contributing/development/coding_guidelines.rst:276 msgid "menuitem: use it as a shortcut to declare a ``ir.ui.menu``" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:278 +#: ../../content/contributing/development/coding_guidelines.rst:277 msgid "template: use it to declare a QWeb View requiring only the ``arch`` section of the view." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:280 +#: ../../content/contributing/development/coding_guidelines.rst:279 msgid "These tags are preferred over the *record* notation." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:284 +#: ../../content/contributing/development/coding_guidelines.rst:283 msgid "XML IDs and naming" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:287 +#: ../../content/contributing/development/coding_guidelines.rst:286 msgid "Security, View and Action" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:289 +#: ../../content/contributing/development/coding_guidelines.rst:288 msgid "Use the following pattern :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:291 +#: ../../content/contributing/development/coding_guidelines.rst:290 msgid "For a menu: :samp:`{}_menu`, or :samp:`{}_menu_{do_stuff}` for submenus." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:292 +#: ../../content/contributing/development/coding_guidelines.rst:291 msgid "For a view: :samp:`{}_view_{}`, where *view_type* is ``kanban``, ``form``, ``tree``, ``search``, ..." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:294 +#: ../../content/contributing/development/coding_guidelines.rst:293 msgid "For an action: the main action respects :samp:`{}_action`. Others are suffixed with :samp:`_{}`, where *detail* is a lowercase string briefly explaining the action. This is used only if multiple actions are declared for the model." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:298 +#: ../../content/contributing/development/coding_guidelines.rst:297 msgid "For window actions: suffix the action name by the specific view information like :samp:`{}_action_view_{}`." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:300 +#: ../../content/contributing/development/coding_guidelines.rst:299 msgid "For a group: :samp:`{}_group_{}` where *group_name* is the name of the group, generally 'user', 'manager', ..." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:302 +#: ../../content/contributing/development/coding_guidelines.rst:301 msgid "For a rule: :samp:`{}_rule_{}` where *concerned_group* is the short name of the concerned group ('user' for the 'model_name_group_user', 'public' for public user, 'company' for multi-company rules, ...)." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:307 +#: ../../content/contributing/development/coding_guidelines.rst:306 msgid "Name should be identical to xml id with dots replacing underscores. Actions should have a real naming as it is used as display name." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:361 +#: ../../content/contributing/development/coding_guidelines.rst:360 msgid "Inheriting XML" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:363 +#: ../../content/contributing/development/coding_guidelines.rst:362 msgid "Xml Ids of inheriting views should use the same ID as the original record. It helps finding all inheritance at a glance. As final Xml Ids are prefixed by the module that creates them there is no overlap." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:367 +#: ../../content/contributing/development/coding_guidelines.rst:366 msgid "Naming should contain an ``.inherit.{details}`` suffix to ease understanding the override purpose when looking at its name." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:378 +#: ../../content/contributing/development/coding_guidelines.rst:377 msgid "New primary views do not require the inherit suffix as those are new records based upon the first one." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:393 -#: ../../content/contributing/documentation.rst:223 +#: ../../content/contributing/development/coding_guidelines.rst:392 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:879 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:881 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:897 msgid "Python" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:397 +#: ../../content/contributing/development/coding_guidelines.rst:396 msgid "Do not forget to read the :ref:`Security Pitfalls ` section as well to write secure code." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:401 +#: ../../content/contributing/development/coding_guidelines.rst:400 msgid "PEP8 options" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:403 +#: ../../content/contributing/development/coding_guidelines.rst:402 msgid "Using a linter can help show syntax and semantic warnings or errors. Odoo source code tries to respect Python standard, but some of them can be ignored." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:406 +#: ../../content/contributing/development/coding_guidelines.rst:405 msgid "E501: line too long" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:407 +#: ../../content/contributing/development/coding_guidelines.rst:406 msgid "E301: expected 1 blank line, found 0" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:408 +#: ../../content/contributing/development/coding_guidelines.rst:407 msgid "E302: expected 2 blank lines, found 1" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:411 +#: ../../content/contributing/development/coding_guidelines.rst:410 msgid "Imports" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:412 +#: ../../content/contributing/development/coding_guidelines.rst:411 msgid "The imports are ordered as" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:414 +#: ../../content/contributing/development/coding_guidelines.rst:413 msgid "External libraries (one per line sorted and split in python stdlib)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:415 +#: ../../content/contributing/development/coding_guidelines.rst:414 msgid "Imports of ``odoo``" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:416 +#: ../../content/contributing/development/coding_guidelines.rst:415 msgid "Imports from Odoo modules (rarely, and only if necessary)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:418 +#: ../../content/contributing/development/coding_guidelines.rst:417 msgid "Inside these 3 groups, the imported lines are alphabetically sorted." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:436 +#: ../../content/contributing/development/coding_guidelines.rst:435 msgid "Idiomatics of Programming (Python)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:438 +#: ../../content/contributing/development/coding_guidelines.rst:437 msgid "Always favor *readability* over *conciseness* or using the language features or idioms." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:439 +#: ../../content/contributing/development/coding_guidelines.rst:438 msgid "Don't use ``.clone()``" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:450 +#: ../../content/contributing/development/coding_guidelines.rst:449 msgid "Python dictionary : creation and update" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:475 +#: ../../content/contributing/development/coding_guidelines.rst:474 msgid "Use meaningful variable/class/method names" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:476 +#: ../../content/contributing/development/coding_guidelines.rst:475 msgid "Useless variable : Temporary variables can make the code clearer by giving names to objects, but that doesn't mean you should create temporary variables all the time:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:488 +#: ../../content/contributing/development/coding_guidelines.rst:487 msgid "Multiple return points are OK, when they're simpler" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:508 +#: ../../content/contributing/development/coding_guidelines.rst:507 msgid "Know your builtins : You should at least have a basic understanding of all the Python builtins (http://docs.python.org/library/functions.html)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:516 +#: ../../content/contributing/development/coding_guidelines.rst:515 msgid "Also, ``if 'key' in my_dict`` and ``if my_dict.get('key')`` have very different meaning, be sure that you're using the right one." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:519 +#: ../../content/contributing/development/coding_guidelines.rst:518 msgid "Learn list comprehensions : Use list comprehension, dict comprehension, and basic manipulation using ``map``, ``filter``, ``sum``, ... They make the code easier to read." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:532 +#: ../../content/contributing/development/coding_guidelines.rst:531 msgid "Collections are booleans too : In python, many objects have \"boolean-ish\" value when evaluated in a boolean context (such as an if). Among these are collections (lists, dicts, sets, ...) which are \"falsy\" when empty and \"truthy\" when containing items:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:543 +#: ../../content/contributing/development/coding_guidelines.rst:542 msgid "So, you can write ``if some_collection:`` instead of ``if len(some_collection):``." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:546 +#: ../../content/contributing/development/coding_guidelines.rst:545 msgid "Iterate on iterables" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:560 +#: ../../content/contributing/development/coding_guidelines.rst:559 msgid "Use dict.setdefault" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:576 +#: ../../content/contributing/development/coding_guidelines.rst:575 msgid "As a good developer, document your code (docstring on methods, simple comments for tricky part of code)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:578 +#: ../../content/contributing/development/coding_guidelines.rst:577 msgid "In additions to these guidelines, you may also find the following link interesting: http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html (a little bit outdated, but quite relevant)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:583 +#: ../../content/contributing/development/coding_guidelines.rst:582 msgid "Programming in Odoo" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:585 +#: ../../content/contributing/development/coding_guidelines.rst:584 msgid "Avoid to create generators and decorators: only use the ones provided by the Odoo API." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:587 +#: ../../content/contributing/development/coding_guidelines.rst:586 msgid "As in python, use ``filtered``, ``mapped``, ``sorted``, ... methods to ease code reading and performance." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:591 +#: ../../content/contributing/development/coding_guidelines.rst:590 msgid "Propagate the context" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:592 +#: ../../content/contributing/development/coding_guidelines.rst:591 msgid "The context is a ``frozendict`` that cannot be modified. To call a method with a different context, the ``with_context`` method should be used :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:601 +#: ../../content/contributing/development/coding_guidelines.rst:600 msgid "Passing parameter in context can have dangerous side-effects." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:603 +#: ../../content/contributing/development/coding_guidelines.rst:602 msgid "Since the values are propagated automatically, some unexpected behavior may appear. Calling ``create()`` method of a model with *default_my_field* key in context will set the default value of *my_field* for the concerned model. But if during this creation, other objects (such as sale.order.line, on sale.order creation) having a field name *my_field* are created, their default value will be set too." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:609 +#: ../../content/contributing/development/coding_guidelines.rst:608 msgid "If you need to create a key context influencing the behavior of some object, choose a good name, and eventually prefix it by the name of the module to isolate its impact. A good example are the keys of ``mail`` module : *mail_create_nosubscribe*, *mail_notrack*, *mail_notify_user_signature*, ..." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:616 +#: ../../content/contributing/development/coding_guidelines.rst:615 msgid "Think extendable" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:618 +#: ../../content/contributing/development/coding_guidelines.rst:617 msgid "Functions and methods should not contain too much logic: having a lot of small and simple methods is more advisable than having few large and complex methods. A good rule of thumb is to split a method as soon as it has more than one responsibility (see http://en.wikipedia.org/wiki/Single_responsibility_principle)." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:623 +#: ../../content/contributing/development/coding_guidelines.rst:622 msgid "Hardcoding a business logic in a method should be avoided as it prevents to be easily extended by a submodule." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:649 +#: ../../content/contributing/development/coding_guidelines.rst:648 msgid "The above code is over extendable for the sake of example but the readability must be taken into account and a tradeoff must be made." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:652 +#: ../../content/contributing/development/coding_guidelines.rst:651 msgid "Also, name your functions accordingly: small and properly named functions are the starting point of readable/maintainable code and tighter documentation." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:655 +#: ../../content/contributing/development/coding_guidelines.rst:654 msgid "This recommendation is also relevant for classes, files, modules and packages. (See also http://en.wikipedia.org/wiki/Cyclomatic_complexity)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:660 +#: ../../content/contributing/development/coding_guidelines.rst:659 msgid "Never commit the transaction" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:661 +#: ../../content/contributing/development/coding_guidelines.rst:660 msgid "The Odoo framework is in charge of providing the transactional context for all RPC calls. The principle is that a new database cursor is opened at the beginning of each RPC call, and committed when the call has returned, just before transmitting the answer to the RPC client, approximately like this:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:682 +#: ../../content/contributing/development/coding_guidelines.rst:681 msgid "If any error occurs during the execution of the RPC call, the transaction is rolled back atomically, preserving the state of the system." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:685 +#: ../../content/contributing/development/coding_guidelines.rst:684 msgid "Similarly, the system also provides a dedicated transaction during the execution of tests suites, so it can be rolled back or not depending on the server startup options." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:689 +#: ../../content/contributing/development/coding_guidelines.rst:688 msgid "The consequence is that if you manually call ``cr.commit()`` anywhere there is a very high chance that you will break the system in various ways, because you will cause partial commits, and thus partial and unclean rollbacks, causing among others:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:694 +#: ../../content/contributing/development/coding_guidelines.rst:693 msgid "inconsistent business data, usually data loss" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:695 +#: ../../content/contributing/development/coding_guidelines.rst:694 msgid "workflow desynchronization, documents stuck permanently" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:696 +#: ../../content/contributing/development/coding_guidelines.rst:695 msgid "tests that can't be rolled back cleanly, and will start polluting the database, and triggering error (this is true even if no error occurs during the transaction)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:707 +#: ../../content/contributing/development/coding_guidelines.rst:706 msgid "Here is the very simple rule:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:701 +#: ../../content/contributing/development/coding_guidelines.rst:700 msgid "You should **NEVER** call ``cr.commit()`` yourself, **UNLESS** you have created your own database cursor explicitly! And the situations where you need to do that are exceptional!" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:705 +#: ../../content/contributing/development/coding_guidelines.rst:704 msgid "And by the way if you did create your own cursor, then you need to handle error cases and proper rollback, as well as properly close the cursor when you're done with it." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:709 +#: ../../content/contributing/development/coding_guidelines.rst:708 msgid "And contrary to popular belief, you do not even need to call ``cr.commit()`` in the following situations: - in the ``_auto_init()`` method of an *models.Model* object: this is taken care of by the addons initialization method, or by the ORM transaction when creating custom models - in reports: the ``commit()`` is handled by the framework too, so you can update the database even from within a report - within *models.Transient* methods: these methods are called exactly like regular *models.Model* ones, within a transaction and with the corresponding ``cr.commit()/rollback()`` at the end - etc. (see general rule above if you are in doubt!)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:721 +#: ../../content/contributing/development/coding_guidelines.rst:720 msgid "All ``cr.commit()`` calls outside of the server framework from now on must have an **explicit comment** explaining why they are absolutely necessary, why they are indeed correct, and why they do not break the transactions. Otherwise they can and will be removed !" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:728 +#: ../../content/contributing/development/coding_guidelines.rst:727 msgid "Use translation method correctly" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:730 +#: ../../content/contributing/development/coding_guidelines.rst:729 msgid "Odoo uses a GetText-like method named \"underscore\" ``_( )`` to indicate that a static string used in the code needs to be translated at runtime using the language of the context. This pseudo-method is accessed within your code by importing as follows:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:739 +#: ../../content/contributing/development/coding_guidelines.rst:738 msgid "A few very important rules must be followed when using it, in order for it to work and to avoid filling the translations with useless junk." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:742 +#: ../../content/contributing/development/coding_guidelines.rst:741 msgid "Basically, this method should only be used for static strings written manually in the code, it will not work to translate field values, such as Product names, etc. This must be done instead using the translate flag on the corresponding field." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:747 +#: ../../content/contributing/development/coding_guidelines.rst:746 msgid "The method accepts optional positional or named parameter The rule is very simple: calls to the underscore method should always be in the form ``_('literal string')`` and nothing else:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:790 +#: ../../content/contributing/development/coding_guidelines.rst:789 msgid "Also, keep in mind that translators will have to work with the literal values that are passed to the underscore function, so please try to make them easy to understand and keep spurious characters and formatting to a minimum. Translators must be aware that formatting patterns such as ``%s`` or ``%d``, newlines, etc. need to be preserved, but it's important to use these in a sensible and obvious manner:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:810 +#: ../../content/contributing/development/coding_guidelines.rst:809 msgid "In general in Odoo, when manipulating strings, prefer ``%`` over ``.format()`` (when only one variable to replace in a string), and prefer ``%(varname)`` instead of position (when multiple variables have to be replaced). This makes the translation easier for the community translators." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:817 +#: ../../content/contributing/development/coding_guidelines.rst:816 msgid "Symbols and Conventions" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:827 +#: ../../content/contributing/development/coding_guidelines.rst:826 msgid "Model name (using the dot notation, prefix by the module name) :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:820 +#: ../../content/contributing/development/coding_guidelines.rst:819 msgid "When defining an Odoo Model : use singular form of the name (*res.partner* and *sale.order* instead of *res.partnerS* and *saleS.orderS*)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:822 +#: ../../content/contributing/development/coding_guidelines.rst:821 msgid "When defining an Odoo Transient (wizard) : use ``.`` where *related_base_model* is the base model (defined in *models/*) related to the transient, and *action* is the short name of what the transient do. Avoid the *wizard* word. For instance : ``account.invoice.make``, ``project.task.delegate.batch``, ..." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:826 +#: ../../content/contributing/development/coding_guidelines.rst:825 msgid "When defining *report* model (SQL views e.i.) : use ``.report.``, based on the Transient convention." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:829 +#: ../../content/contributing/development/coding_guidelines.rst:828 msgid "Odoo Python Class : use camelcase (Object-oriented style)." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:840 +#: ../../content/contributing/development/coding_guidelines.rst:839 msgid "Variable name :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:838 +#: ../../content/contributing/development/coding_guidelines.rst:837 msgid "use camelcase for model variable" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:839 +#: ../../content/contributing/development/coding_guidelines.rst:838 msgid "use underscore lowercase notation for common variable." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:840 +#: ../../content/contributing/development/coding_guidelines.rst:839 msgid "suffix your variable name with *_id* or *_ids* if it contains a record id or list of id. Don't use ``partner_id`` to contain a record of res.partner" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:848 +#: ../../content/contributing/development/coding_guidelines.rst:847 msgid "``One2Many`` and ``Many2Many`` fields should always have *_ids* as suffix (example: sale_order_line_ids)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:849 +#: ../../content/contributing/development/coding_guidelines.rst:848 msgid "``Many2One`` fields should have *_id* as suffix (example : partner_id, user_id, ...)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:859 +#: ../../content/contributing/development/coding_guidelines.rst:858 msgid "Method conventions" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:851 +#: ../../content/contributing/development/coding_guidelines.rst:850 msgid "Compute Field : the compute method pattern is *_compute_*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:852 +#: ../../content/contributing/development/coding_guidelines.rst:851 msgid "Search method : the search method pattern is *_search_*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:853 +#: ../../content/contributing/development/coding_guidelines.rst:852 msgid "Default method : the default method pattern is *_default_*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:854 +#: ../../content/contributing/development/coding_guidelines.rst:853 msgid "Selection method: the selection method pattern is *_selection_*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:855 +#: ../../content/contributing/development/coding_guidelines.rst:854 msgid "Onchange method : the onchange method pattern is *_onchange_*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:856 +#: ../../content/contributing/development/coding_guidelines.rst:855 msgid "Constraint method : the constraint method pattern is *_check_*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:857 +#: ../../content/contributing/development/coding_guidelines.rst:856 msgid "Action method : an object action method is prefix with *action_*. Since it uses only one record, add ``self.ensure_one()`` at the beginning of the method." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:870 +#: ../../content/contributing/development/coding_guidelines.rst:869 msgid "In a Model attribute order should be" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:862 +#: ../../content/contributing/development/coding_guidelines.rst:861 msgid "Private attributes (``_name``, ``_description``, ``_inherit``, ``_sql_constraints``, ...)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:863 +#: ../../content/contributing/development/coding_guidelines.rst:862 msgid "Default method and ``default_get``" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:864 +#: ../../content/contributing/development/coding_guidelines.rst:863 msgid "Field declarations" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:865 +#: ../../content/contributing/development/coding_guidelines.rst:864 msgid "Compute, inverse and search methods in the same order as field declaration" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:866 +#: ../../content/contributing/development/coding_guidelines.rst:865 msgid "Selection method (methods used to return computed values for selection fields)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:867 +#: ../../content/contributing/development/coding_guidelines.rst:866 msgid "Constrains methods (``@api.constrains``) and onchange methods (``@api.onchange``)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:868 +#: ../../content/contributing/development/coding_guidelines.rst:867 msgid "CRUD methods (ORM overrides)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:869 +#: ../../content/contributing/development/coding_guidelines.rst:868 msgid "Action methods" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:870 +#: ../../content/contributing/development/coding_guidelines.rst:869 msgid "And finally, other business methods." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:926 +#: ../../content/contributing/development/coding_guidelines.rst:925 msgid "Javascript and CSS" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:929 +#: ../../content/contributing/development/coding_guidelines.rst:928 msgid "Static files organization" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:931 +#: ../../content/contributing/development/coding_guidelines.rst:930 msgid "Odoo addons have some conventions on how to structure various files. We explain here in more details how web assets are supposed to be organized." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:934 +#: ../../content/contributing/development/coding_guidelines.rst:933 msgid "The first thing to know is that the Odoo server will serve (statically) all files located in a *static/* folder, but prefixed with the addon name. So, for example, if a file is located in *addons/web/static/src/js/some_file.js*, then it will be statically available at the url *your-odoo-server.com/web/static/src/js/some_file.js*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:939 +#: ../../content/contributing/development/coding_guidelines.rst:938 msgid "The convention is to organize the code according to the following structure:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:941 +#: ../../content/contributing/development/coding_guidelines.rst:940 msgid "*static*: all static files in general" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:943 +#: ../../content/contributing/development/coding_guidelines.rst:942 msgid "*static/lib*: this is the place where js libs should be located, in a sub folder. So, for example, all files from the *jquery* library are in *addons/web/static/lib/jquery*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:945 +#: ../../content/contributing/development/coding_guidelines.rst:944 msgid "*static/src*: the generic static source code folder" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:947 +#: ../../content/contributing/development/coding_guidelines.rst:946 msgid "*static/src/css*: all css files" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:948 +#: ../../content/contributing/development/coding_guidelines.rst:947 msgid "*static/fonts*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:949 +#: ../../content/contributing/development/coding_guidelines.rst:948 msgid "*static/img*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:950 +#: ../../content/contributing/development/coding_guidelines.rst:949 msgid "*static/src/js*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:952 +#: ../../content/contributing/development/coding_guidelines.rst:951 msgid "*static/src/js/tours*: end user tour files (tutorials, not tests)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:954 +#: ../../content/contributing/development/coding_guidelines.rst:953 msgid "*static/src/scss*: scss files" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:955 +#: ../../content/contributing/development/coding_guidelines.rst:954 msgid "*static/src/xml*: all qweb templates that will be rendered in JS" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:957 +#: ../../content/contributing/development/coding_guidelines.rst:956 msgid "*static/tests*: this is where we put all test related files." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:959 +#: ../../content/contributing/development/coding_guidelines.rst:958 msgid "*static/tests/tours*: this is where we put all tour test files (not tutorials)." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:962 +#: ../../content/contributing/development/coding_guidelines.rst:961 msgid "Javascript coding guidelines" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:964 +#: ../../content/contributing/development/coding_guidelines.rst:963 msgid "``use strict;`` is recommended for all javascript files" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:965 +#: ../../content/contributing/development/coding_guidelines.rst:964 msgid "Use a linter (jshint, ...)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:966 +#: ../../content/contributing/development/coding_guidelines.rst:965 msgid "Never add minified Javascript Libraries" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:967 +#: ../../content/contributing/development/coding_guidelines.rst:966 msgid "Use camelcase for class declaration" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:969 +#: ../../content/contributing/development/coding_guidelines.rst:968 msgid "More precise JS guidelines are detailed in the `github wiki `_. You may also have a look at existing API in Javascript by looking Javascript References." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:974 +#: ../../content/contributing/development/coding_guidelines.rst:973 msgid "CSS coding guidelines" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:976 +#: ../../content/contributing/development/coding_guidelines.rst:975 msgid "Prefix all your classes with *o_* where *module_name* is the technical name of the module ('sale', 'im_chat', ...) or the main route reserved by the module (for website module mainly, i.e. : 'o_forum' for *website_forum* module). The only exception for this rule is the webclient: it simply uses *o_* prefix." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:981 +#: ../../content/contributing/development/coding_guidelines.rst:980 msgid "Avoid using *id* tag" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:982 +#: ../../content/contributing/development/coding_guidelines.rst:981 msgid "Use Bootstrap native classes" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:983 +#: ../../content/contributing/development/coding_guidelines.rst:982 msgid "Use underscore lowercase notation to name class" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:988 -msgid "Git" +#: ../../content/contributing/development/git_guidelines.rst:3 +msgid "Git guidelines" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:991 +#: ../../content/contributing/development/git_guidelines.rst:6 msgid "Configure your git" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:993 +#: ../../content/contributing/development/git_guidelines.rst:8 msgid "Based on ancestral experience and oral tradition, the following things go a long way towards making your commits more helpful:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:996 +#: ../../content/contributing/development/git_guidelines.rst:11 msgid "Be sure to define both the user.email and user.name in your local git config" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1002 +#: ../../content/contributing/development/git_guidelines.rst:17 msgid "Be sure to add your full name to your Github profile here. Please feel fancy and add your team, avatar, your favorite quote, and whatnot ;-)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1006 +#: ../../content/contributing/development/git_guidelines.rst:21 msgid "Commit message structure" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1008 +#: ../../content/contributing/development/git_guidelines.rst:23 msgid "Commit message has four parts: tag, module, short description and full description. Try to follow the preferred structure for your commit messages" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1031 +#: ../../content/contributing/development/git_guidelines.rst:46 msgid "Tag and module name" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1033 +#: ../../content/contributing/development/git_guidelines.rst:48 msgid "Tags are used to prefix your commit. They should be one of the following" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1035 +#: ../../content/contributing/development/git_guidelines.rst:50 msgid "**[FIX]** for bug fixes: mostly used in stable version but also valid if you are fixing a recent bug in development version;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1037 +#: ../../content/contributing/development/git_guidelines.rst:52 msgid "**[REF]** for refactoring: when a feature is heavily rewritten;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1038 +#: ../../content/contributing/development/git_guidelines.rst:53 msgid "**[ADD]** for adding new modules;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1039 +#: ../../content/contributing/development/git_guidelines.rst:54 msgid "**[REM]** for removing resources: removing dead code, removing views, removing modules, ...;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1041 +#: ../../content/contributing/development/git_guidelines.rst:56 msgid "**[REV]** for reverting commits: if a commit causes issues or is not wanted reverting it is done using this tag;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1043 +#: ../../content/contributing/development/git_guidelines.rst:58 msgid "**[MOV]** for moving files: use git move and do not change content of moved file otherwise Git may loose track and history of the file; also used when moving code from one file to another;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1046 +#: ../../content/contributing/development/git_guidelines.rst:61 msgid "**[REL]** for release commits: new major or minor stable versions;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1047 +#: ../../content/contributing/development/git_guidelines.rst:62 msgid "**[IMP]** for improvements: most of the changes done in development version are incremental improvements not related to another tag;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1049 +#: ../../content/contributing/development/git_guidelines.rst:64 msgid "**[MERGE]** for merge commits: used in forward port of bug fixes but also as main commit for feature involving several separated commits;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1051 +#: ../../content/contributing/development/git_guidelines.rst:66 msgid "**[CLA]** for signing the Odoo Individual Contributor License;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1052 +#: ../../content/contributing/development/git_guidelines.rst:67 msgid "**[I18N]** for changes in translation files;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1054 +#: ../../content/contributing/development/git_guidelines.rst:69 msgid "After tag comes the modified module name. Use the technical name as functional name may change with time. If several modules are modified, list them or use various to tell it is cross-modules. Unless really required or easier avoid modifying code across several modules in the same commit. Understanding module history may become difficult." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1061 +#: ../../content/contributing/development/git_guidelines.rst:76 msgid "Commit message header" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1063 +#: ../../content/contributing/development/git_guidelines.rst:78 msgid "After tag and module name comes a meaningful commit message header. It should be self explanatory and include the reason behind the change. Do not use single words like \"bugfix\" or \"improvements\". Try to limit the header length to about 50 characters for readability." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1068 +#: ../../content/contributing/development/git_guidelines.rst:83 msgid "Commit message header should make a valid sentence once concatenated with ``if applied, this commit will
``. For example ``[IMP] base: prevent to archive users linked to active partners`` is correct as it makes a valid sentence ``if applied, this commit will prevent users to archive...``." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1074 +#: ../../content/contributing/development/git_guidelines.rst:89 msgid "Commit message full description" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1076 +#: ../../content/contributing/development/git_guidelines.rst:91 msgid "In the message description specify the part of the code impacted by your changes (module name, lib, transversal object, ...) and a description of the changes." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1079 +#: ../../content/contributing/development/git_guidelines.rst:94 msgid "First explain WHY you are modifying code. What is important if someone goes back to your commit in about 4 decades (or 3 days) is why you did it. It is the purpose of the change." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1083 +#: ../../content/contributing/development/git_guidelines.rst:98 msgid "What you did can be found in the commit itself. If there was some technical choices involved it is a good idea to explain it also in the commit message after the why. For Odoo R&D developers \"PO team asked me to do it\" is not a valid why, by the way." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1087 +#: ../../content/contributing/development/git_guidelines.rst:102 msgid "Please avoid commits which simultaneously impact multiple modules. Try to split into different commits where impacted modules are different. It will be helpful if we need to revert changes in a given module separately." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1091 +#: ../../content/contributing/development/git_guidelines.rst:106 msgid "Don't hesitate to be a bit verbose. Most people will only see your commit message and judge everything you did in your life just based on those few sentences. No pressure at all." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1095 +#: ../../content/contributing/development/git_guidelines.rst:110 msgid "**You spend several hours, days or weeks working on meaningful features. Take some time to calm down and write clear and understandable commit messages.**" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1098 +#: ../../content/contributing/development/git_guidelines.rst:113 msgid "If you are an Odoo R&D developer the WHY should be the purpose of the task you are working on. Full specifications make the core of the commit message. **If you are working on a task that lacks purpose and specifications please consider making them clear before continuing.**" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1103 +#: ../../content/contributing/development/git_guidelines.rst:118 msgid "Finally here are some examples of correct commit messages :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1126 +#: ../../content/contributing/development/git_guidelines.rst:141 msgid "Use the long description to explain the *why* not the *what*, the *what* can be seen in the diff" msgstr "" @@ -1026,353 +1262,180 @@ msgid "This introductory guide will help you acquire the tools and knowledge you msgstr "" #: ../../content/contributing/documentation.rst:21 -msgid "reStructuredText" +msgid "Read the :ref:`introduction to the reStructuredText language ` if you are not familiar with it. Then, you have two courses of action to start contributing to the documentation, depending on whether you want to propose minor changes to existing content or you instead want to work on significant changes to new and existing content." msgstr "" -#: ../../content/contributing/documentation.rst:23 -msgid "Our documentation is written in **reStructuredText** (RST), a `lightweight markup language `_ consisting of normal text augmented with markup which allows including headings, images, notes, and so on. This might seem a bit abstract but there is no need to worry. :abbr:`RST (reStructuredText)` is not hard to learn, especially if you intend to make only small changes to the content." +#: ../../content/contributing/documentation.rst:26 +msgid "**For minor changes**, for example, adding a paragraph or fixing a typo, we recommend **using the GitHub interface**. This is the easiest and fastest way to submit your changes, and it is suitable for non-technical people. Jump directly to the :ref:`contributing/documentation/first-contribution` section to get started." msgstr "" -#: ../../content/contributing/documentation.rst:29 -msgid "If you need to learn about a specific markup, head over to :doc:`our cheat sheet for RST ` which contains all the information that you should ever need for the user documentation of Odoo." +#: ../../content/contributing/documentation.rst:30 +msgid "**For more complex changes**, it is necessary to **use Git** and work from a local copy of the documentation. Follow the instructions in the :ref:`contributing/documentation/setup` section to first prepare your environment." msgstr "" -#: ../../content/contributing/documentation.rst:34 -msgid "We kindly ask you to observe a set of :doc:`content ` and :doc:`RST ` guidelines as you write documentation. This ensures that you stay consistent with the rest of the documentation and facilitates the approval of your content changes as they are reviewed by a redactor at Odoo." +#: ../../content/contributing/documentation.rst:37 +msgid "reStructuredText (RST)" msgstr "" -#: ../../content/contributing/documentation.rst:40 +#: ../../content/contributing/documentation.rst:39 +msgid "The documentation is written in **reStructuredText** (RST), a `lightweight markup language `_ consisting of regular text augmented with markup, which allows including headings, images, notes, and so on. This might seem a bit abstract, but there is no need to worry; :abbr:`RST (reStructuredText)` is not hard to learn, especially if you intend to make minor changes to the content." +msgstr "" + +#: ../../content/contributing/documentation.rst:45 +msgid "If you need to learn about a specific markup, head over to our :doc:`cheat sheet for RST `; it contains all the information you should ever need for the documentation of Odoo." +msgstr "" + +#: ../../content/contributing/documentation.rst:50 +msgid "We kindly ask you to observe a set of :doc:`content ` and :doc:`RST ` guidelines as you write documentation. This ensures that you stay consistent with the rest of the documentation and facilitates the approval of your content changes as the Odoo team reviews them." +msgstr "" + +#: ../../content/contributing/documentation.rst:56 msgid ":doc:`documentation/content_guidelines`" msgstr "" -#: ../../content/contributing/documentation.rst:41 +#: ../../content/contributing/documentation.rst:57 msgid ":doc:`documentation/rst_cheat_sheet`" msgstr "" -#: ../../content/contributing/documentation.rst:42 +#: ../../content/contributing/documentation.rst:58 msgid ":doc:`documentation/rst_guidelines`" msgstr "" -#: ../../content/contributing/documentation.rst:47 -msgid "Getting started" +#: ../../content/contributing/documentation.rst:65 +msgid "The instructions below help you prepare your environment for making local changes to the documentation and then push them to GitHub. Skip this section and go to :ref:`contributing/documentation/first-contribution` if you have already completed this step or want to make changes from the GitHub interface." msgstr "" -#: ../../content/contributing/documentation.rst:49 -msgid "As our documentation is maintained on GitHub, you will need a free GitHub account. Click `here `_ to create one." +#: ../../content/contributing/documentation.rst:72 +msgid "Go to `github.com/odoo/documentation `_ and click on the :guilabel:`Fork` button in the top right corner to create a fork (:dfn:`your own copy`) of the repository on your account. This creates a copy of the codebase to which you can make changes without affecting the main codebase. Skip this step if you work at Odoo." msgstr "" -#: ../../content/contributing/documentation.rst:52 -msgid "Now, depending on whether you want to update existing content, or rather work on new content and make file changes, you have two courses of action:" +#: ../../content/contributing/documentation.rst:78 +msgid "Clone the sources with Git and navigate into the local repository." msgstr "" -#: ../../content/contributing/documentation.rst:55 -msgid "**For small changes** in ``.rst`` files only, i.e. addition/edition of paragraphs or typos, **we suggest that you use the GitHub interface**. This is the easiest and fasted way to submit your request for changes for the documentation and is suitable for non-technical people. Read :ref:`contributing/github-interface` to learn how to use this method." +#: ../../content/contributing/documentation.rst:85 +msgid "Configure Git to push changes to your fork rather than to the main codebase. In the commands below, replace `` with the name of the GitHub account on which you created the fork. Skip this step if you work at Odoo." msgstr "" -#: ../../content/contributing/documentation.rst:59 -msgid "**For more complex cases**, it is necessary to **use Git and work from a local copy of the documentation**. This method seems intimidating but only requires basic knowledge of Git. See :ref:`contributing/canonical-git-workflow` for more information on this method." +#: ../../content/contributing/documentation.rst:93 +msgid "Configure Git to ease the collaboration between writers coming from different systems." msgstr "" -#: ../../content/contributing/documentation.rst:66 -msgid "Use the GitHub interface" +#: ../../content/contributing/documentation.rst:111 +msgid "Install the latest release of `Python `_ and `pip `_ on your machine." msgstr "" -#: ../../content/contributing/documentation.rst:68 -msgid "Verify that you are browsing the documentation in the version that you intend to change. The version can be selected from the dropdown in the top menu." +#: ../../content/contributing/documentation.rst:113 +msgid "Install the Python dependencies of the documentation with pip." msgstr "" -#: ../../content/contributing/documentation.rst:71 -msgid "Head over to the page that you want to change and click on the **Edit on GitHub** button in the top right corner of the page." -msgstr "" - -#: ../../content/contributing/documentation.rst:74 -msgid "If you do not have edit rights on the repository (`odoo/documentation `_), you need to fork it by clicking on the appropriate button. In other terms, you create a copy of the entire repository on your own account. If you do have the edit rights, skip this step." -msgstr "" - -#: ../../content/contributing/documentation.rst:81 -msgid "Make the appropriate changes while taking care of following the :doc:`content ` and :doc:`RST ` guidelines." -msgstr "" - -#: ../../content/contributing/documentation.rst:84 -msgid "Click on the **Preview changes** button to review your contribution in a more human-readable format. Be aware that the preview is not able to handle all markups correctly. Notes and tips, for instance, are not correctly rendered. The version of your content published to the website will be, however." -msgstr "" - -#: ../../content/contributing/documentation.rst:89 -msgid "Go to the bottom of the page to create a commit (:dfn:`what packs your changes together and labels them with a commit message`) of your changes." -msgstr "" - -#: ../../content/contributing/documentation.rst:0 -msgid "In first text box, describe your changes. For instance, \"Fix a typo\" and \"Add documentation for invoicing of sales orders\" are two clear commit messages." -msgstr "" - -#: ../../content/contributing/documentation.rst:0 -msgid "In the second text box, justify *why* you made these changes, if you feel that it is not obvious." -msgstr "" - -#: ../../content/contributing/documentation.rst:96 -msgid "Select the option \"Create a new branch for this commit and start a pull request.\" if you have the choice (if you have partial or full edit writes on the repository). If not, skip this step." -msgstr "" - -#: ../../content/contributing/documentation.rst:99 -msgid "Click on the green button. It is either labelled \"Commit changes\" or \"Propose file change\"." -msgstr "" - -#: ../../content/contributing/documentation.rst:103 -msgid "In the dropdown for the selection of the base branch (i.e., the version of the documentation that your changes concern), make sure to select the same version as in the first step of this guide and click on the **Create pull request** button." -msgstr "" - -#: ../../content/contributing/documentation.rst:109 -msgid "Double-check your :abbr:`PR (Pull Request)` and, when ready, click again on the **Create pull request** button to submit your changes for review by a content writer at Odoo." -msgstr "" - -#: ../../content/contributing/documentation.rst:114 -#: ../../content/contributing/documentation.rst:417 -msgid "You're done! If your changes are approved straight away they will appear in the documentation the very next day. It may also be the case that the reviewer has a question or a remark, so make sure to check your notifications or your emails, depending on your account settings." -msgstr "" - -#: ../../content/contributing/documentation.rst:121 -msgid "Use the canonical Git workflow" +#: ../../content/contributing/documentation.rst:119 +msgid "Verify that the installation directory of the Python dependencies is included in your system's `PATH` variable." msgstr "" #: ../../content/contributing/documentation.rst:126 -msgid "Prepare your machine" +msgid "Follow the `guide to update the PATH variable on Linux and macOS `_ with the installation path of the Python dependencies (by default :file:`~/.local/bin`)." msgstr "" -#: ../../content/contributing/documentation.rst:131 -msgid "Install Git" +#: ../../content/contributing/documentation.rst:132 +msgid "Follow the `guide to update the PATH variable on Windows `_ with the installation path of the Python dependencies." msgstr "" -#: ../../content/contributing/documentation.rst:133 -msgid "We use `Git `_ to manage the files of the user documentation. It is a tool that allows to track the history of changes made to a file and, more importantly, to work on different versions of those files at the same time. It means that you do not need to worry about overwriting someone else’s pending work when you start editing the documentation." +#: ../../content/contributing/documentation.rst:136 +msgid "Install Make." msgstr "" -#: ../../content/contributing/documentation.rst:138 -msgid "You must then configure Git to identify yourself as the author of your future contribution. Enter the same email address as the one you used to register on GitHub." +#: ../../content/contributing/documentation.rst:148 +msgid "Follow the `guide to install Make on Windows `_." msgstr "" -#: ../../content/contributing/documentation.rst:141 -msgid "Download and install **Git** on your machine." +#: ../../content/contributing/documentation.rst:151 +msgid "`Install pngquant `_." msgstr "" -#: ../../content/contributing/documentation.rst:142 -msgid "Verify that `the installation folder of Git is included in your system's PATH variable `_." +#: ../../content/contributing/documentation.rst:152 +msgid "That's it! You are ready to :ref:`make your first contribution ` with Git." msgstr "" -#: ../../content/contributing/documentation.rst:144 -#: ../../content/contributing/documentation.rst:172 -#: ../../content/contributing/documentation.rst:337 -#: ../../content/contributing/documentation.rst:357 -#: ../../content/contributing/documentation.rst:388 -msgid "Execute the following commands in a terminal:" +#: ../../content/contributing/documentation.rst:162 +msgid "Contribute from the GitHub interface" msgstr "" -#: ../../content/contributing/documentation.rst:154 -msgid "Fetch the sources" +#: ../../content/contributing/documentation.rst:164 +msgid "Verify that you are browsing the documentation in the version that you intend to change. The version can be selected from the dropdown in the top menu." msgstr "" -#: ../../content/contributing/documentation.rst:156 -msgid "As stated earlier, our documentation (in all its versions) is maintained on GitHub at `github.com/odoo/documentation `_. A modification is made by the mean of a :abbr:`PR (Pull Request)` (:dfn:`proposal of content changes`) to allow for a review of the changes before updating the sources of the documentation." +#: ../../content/contributing/documentation.rst:166 +msgid "Head to the page that you want to change and click on the :guilabel:`Edit on GitHub` button in the top right corner of the page." msgstr "" -#: ../../content/contributing/documentation.rst:161 -msgid "Prior to submitting a modification, you need to make a copy of the sources and download that copy on your machine. Git's CLI (:dfn:`command-line interface`) allows downloading the sources by passing an URL to its :command:`git clone` command. You must choose the protocol of the URL depending on what you want to do with the sources: choose HTTPS if you intend to only build the documentation locally; choose SSH if you plan on proposing content changes." -msgstr "" - -#: ../../content/contributing/documentation.rst:167 -msgid "Go to `github.com/odoo/documentation `_ and click on the **Fork** button in the top right corner. If you work at Odoo, skip this step." -msgstr "" - -#: ../../content/contributing/documentation.rst:176 -msgid "Clone with HTTPS" -msgstr "" - -#: ../../content/contributing/documentation.rst:183 -#: ../../content/contributing/documentation.rst:197 -msgid "Replace `` with your GitHub username. If you work at Odoo, replace it with `odoo`." -msgstr "" - -#: ../../content/contributing/documentation.rst:186 -msgid "Clone with SSH" -msgstr "" - -#: ../../content/contributing/documentation.rst:189 -msgid "Make sure that you `registered your SSH key on GitHub `_." -msgstr "" - -#: ../../content/contributing/documentation.rst:200 -msgid "In order to ease the collaboration between writers coming from many different systems and teams, execute the following group of commands that correspond to your :abbr:`OS (Operating System)` in a terminal." -msgstr "" - -#: ../../content/contributing/documentation.rst:204 -msgid "Windows:" -msgstr "" - -#: ../../content/contributing/documentation.rst:212 -msgid "Linux or Mac OS:" -msgstr "" - -#: ../../content/contributing/documentation.rst:225 -msgid "Because the documentation is written in :abbr:`RST (reStructuredText)`, it needs to be built (:dfn:`converted to HTML`) in order to display nicely. This is done by the documentation generator which takes the original :abbr:`RST (reStructuredText)` files as input, transforms the markups in a human-readable format, and outputs HTML files to be read in your web browser." +#: ../../content/contributing/documentation.rst:168 +msgid "Click on the :guilabel:`Fork this repository` button to create a fork (:dfn:`your own copy`) of the repository on your account. This creates a copy of the codebase to which you can make changes without affecting the main codebase. Skip this step if you work at Odoo." msgstr "" +#: ../../content/contributing/documentation.rst:175 #: ../../content/contributing/documentation.rst:230 -msgid "The documentation generator that we use is called `Sphinx `_. and is written in `Python `_. You have to install Python in order to use Sphinx. For the record, Sphinx is the program and Python the programming language, but you do not need to know much more about them so don't panic!" +msgid "Make the desired changes while taking care of following the :doc:`content ` and :doc:`RST ` guidelines." msgstr "" -#: ../../content/contributing/documentation.rst:235 -msgid "Python comes with its own package manager: `pip `_. It allows installing Python dependencies in a single command." +#: ../../content/contributing/documentation.rst:180 +msgid "Click on the :guilabel:`Preview changes` button to review your contribution in a more human-readable format. Be aware that the preview is not able to handle all markups correctly. Notes and tips, for instance, are shown as plain text." msgstr "" -#: ../../content/contributing/documentation.rst:239 -msgid "Download and install the recommended release (`see README file `_) of **Python 3** on your machine." +#: ../../content/contributing/documentation.rst:184 +msgid "Scroll to the bottom of the page and fill out the small form to propose your changes. In the first text box, write a very short summary of your changes. For instance, \"Fix a typo\" or \"Add documentation for invoicing of sales orders\". In the second text box, explain *why* you are proposing these changes. Then, click on the :guilabel:`Propose changes` button." msgstr "" -#: ../../content/contributing/documentation.rst:242 -msgid "Make sure to have **pip** installed on your machine (on Windows, you can install pip alongside Python)." +#: ../../content/contributing/documentation.rst:195 +msgid "Review the summary that you wrote about your changes and click on the :guilabel:`Create pull request` button again." msgstr "" -#: ../../content/contributing/documentation.rst:244 -msgid "Execute the following commands in a terminal to verify that both installations finished successfully:" +#: ../../content/contributing/documentation/changes_approved.rst:1 +#: ../../content/contributing/documentation/changes_approved.rst:1 +#: ../../content/contributing/documentation/changes_approved.rst:1 +#: ../../content/contributing/documentation/changes_approved.rst:1 +#: ../../content/contributing/documentation/changes_approved.rst:1 +msgid "Once your changes are approved, the reviewer merges them and they appear online the next day!" msgstr "" -#: ../../content/contributing/documentation.rst:252 -msgid "Execute the following commands in a terminal to install the Python dependencies of the documentation:" +#: ../../content/contributing/documentation.rst:201 +msgid "Contribute with Git" msgstr "" -#: ../../content/contributing/documentation.rst:261 -msgid "Depending on your :abbr:`OS (Operating System)`, you may need to run the commands ``python`` and ``pip`` instead of ``python3`` and ``pip3``" +#: ../../content/contributing/documentation.rst:208 +msgid "Now that your environment is set up, you can start contributing to the documentation. In a terminal, navigate to the directory where you cloned the sources and follow the guide below." msgstr "" -#: ../../content/contributing/documentation.rst:267 -msgid "Make" +#: ../../content/contributing/documentation.rst:211 +msgid "Choose the version of the documentation to which you want to make changes. Keep in mind that contributions targeting an :doc:`unsupported version of Odoo ` are not accepted. This guide assumes that the changes target the documentation of Odoo 15, which corresponds to branch `15.0`." msgstr "" -#: ../../content/contributing/documentation.rst:269 -msgid "`Make `_ is a tool that packs a bunch of command-lines into one to be easier to remember and to type. In our case, it is used to execute complex Sphinx build commands by using a single and simpler one instead." +#: ../../content/contributing/documentation.rst:233 +msgid "Compress all PNG images that you added or modified." msgstr "" -#: ../../content/contributing/documentation.rst:273 -msgid "Download and install **Make** on your machine." +#: ../../content/contributing/documentation.rst:240 +msgid "Write a `redirect rule `_ for every RST file that your renamed." msgstr "" -#: ../../content/contributing/documentation.rst:274 -msgid "Verify that `the installation folder of Make is included in your system's PATH variable `_." +#: ../../content/contributing/documentation.rst:243 +msgid "Build the documentation with :command:`make`. Then, open :file:`_build/index.html` in your web browser to browse the documentation with your changes." +msgstr "" + +#: ../../content/contributing/documentation.rst:247 +msgid "Use :command:`make help` to learn about other useful commands." +msgstr "" + +#: ../../content/contributing/documentation.rst:265 +msgid "If you work at Odoo, push your changes directly to the main codebase whose remote alias is `origin`." +msgstr "" + +#: ../../content/contributing/documentation.rst:276 +msgid "Go to the `compare page of the odoo/documentation codebase `_." msgstr "" #: ../../content/contributing/documentation.rst:280 -msgid "pngquant" -msgstr "" - -#: ../../content/contributing/documentation.rst:282 -msgid "`pngquant `_ is a tool that we use to compress PNG images so that the documentation does not end up weighting several Gigabytes in a few year span." -msgstr "" - -#: ../../content/contributing/documentation.rst:285 -msgid "Download and install **pngquant** on your machine." -msgstr "" - -#: ../../content/contributing/documentation.rst:286 -msgid "Verify that `the installation folder of pngquant is included in your system's PATH variable `_." -msgstr "" - -#: ../../content/contributing/documentation.rst:292 -msgid "Prepare your version" -msgstr "" - -#: ../../content/contributing/documentation.rst:294 -msgid "Now that your machine is all set up, it is time to do the same for your version of the documentation files. As it would not be convenient to have several people working on the version 15.0 in parallel (conflicts of content would occur all the time), and in order to be able to create a :abbr:`PR (Pull Request)`, you must `create a new branch `_ starting from the branch 15.0. In other words, you copy the entirety of this version’s files and give it another name. For this example, we will go with ``15.0-my_contribution``." -msgstr "" - -#: ../../content/contributing/documentation.rst:302 -msgid "Execute the following commands in a terminal to..." -msgstr "" - -#: ../../content/contributing/documentation.rst:304 -msgid "Navigate to the documentation folder:" -msgstr "" - -#: ../../content/contributing/documentation.rst:310 -msgid "Switch to the version 15.0:" -msgstr "" - -#: ../../content/contributing/documentation.rst:316 -msgid "Create your own branch which will be a copy of 15.0:" -msgstr "" - -#: ../../content/contributing/documentation.rst:325 -msgid "Perform your changes" -msgstr "" - -#: ../../content/contributing/documentation.rst:327 -msgid "You can now perform any change you want to the documentation files. These changes must be compliant with :abbr:`RST (reStructuredText)` syntax (see :doc:`documentation/rst_cheat_sheet`) and with our :doc:`content ` and :doc:`RST ` guidelines." -msgstr "" - -#: ../../content/contributing/documentation.rst:333 -msgid "If your changes include the addition of a new image, for instance :file:`my-image.png`, proceed as follows:" -msgstr "" - -#: ../../content/contributing/documentation.rst:336 -msgid "Make sure that the image is in ``.png`` format." -msgstr "" - -#: ../../content/contributing/documentation.rst:344 -msgid "Delete :file:`my-image.png`." -msgstr "" - -#: ../../content/contributing/documentation.rst:345 -msgid "Rename :file:`my-image-fs8.png` to :file:`my-image.png`." -msgstr "" - -#: ../../content/contributing/documentation.rst:346 -msgid "If your changes include renaming or moving an RST file to a new location, follow the `manual for redirect rules `_ to create the appropriate redirect rule(s)." -msgstr "" - -#: ../../content/contributing/documentation.rst:353 -msgid "Preview your changes" -msgstr "" - -#: ../../content/contributing/documentation.rst:355 -msgid "To preview your changes in a generated documentation, proceed as follows:" -msgstr "" - -#: ../../content/contributing/documentation.rst:366 -msgid "You can omit the :command:`make clean` command when no recent change has been made to the hierarchy of documentation files." -msgstr "" - -#: ../../content/contributing/documentation.rst:369 -msgid "Fix any error or warning shown in the logs of the build." -msgstr "" - -#: ../../content/contributing/documentation.rst:370 -msgid "Open the file :file:`documentation/_build/html/index.html` with your default web browser." -msgstr "" - -#: ../../content/contributing/documentation.rst:373 -msgid "These steps have for only purpose to show you the final results of your changes. They have no impact on the documentation source files." -msgstr "" - -#: ../../content/contributing/documentation.rst:379 -msgid "Submit your changes" -msgstr "" - -#: ../../content/contributing/documentation.rst:382 -msgid "We expect you to have basic knowledge of Git, which should be enough to cover the basic flow of a one-time contribution. If you plan on submitting several contributions, work on older versions of the documentation or perform any other advanced action, we recommend you to be confident with Git. Help yourself with `this manual of Git `_ and `this interactive tutorial `_." -msgstr "" - -#: ../../content/contributing/documentation.rst:396 -msgid "Go to `github.com/odoo/documentation/pulls `_ and click on the **New pull request** button." -msgstr "" - -#: ../../content/contributing/documentation.rst:401 -msgid "If you forked the base repository in the section :ref:`contributing/fetch-sources`, click on the link **compare across forks** If not, skip this step." -msgstr "" - -#: ../../content/contributing/documentation.rst:406 -msgid "In the dropdown for the selection of the base branch (i.e., the version of the documentation that your changes concern), make sure to select the version that your changes target (here **15.0**)." -msgstr "" - -#: ../../content/contributing/documentation.rst:412 -msgid "Double-check your :abbr:`PR (Pull Request)` and, when ready, click again on the **Create pull request** button to submit your changes for review by a redactor at Odoo." +msgid "Select **/odoo** for the head repository. Replace `` with the name of the GitHub account on which you created the fork. Skip this step if you work at Odoo." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:3 @@ -1649,34 +1712,34 @@ msgid "Adding a few images to illustrate your text helps the readers to understa msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:185 -msgid "Don't forget to :ref:`compress your PNG files with pngquant `." +msgid "Don't forget to :ref:`compress your PNG files with pngquant `." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:190 +#: ../../content/contributing/documentation/content_guidelines.rst:191 msgid "Screenshots" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:192 +#: ../../content/contributing/documentation/content_guidelines.rst:193 msgid "Screenshots are automatically resized to fit the content block's width. This implies that screenshots can't be too wide, else they would appear very small on-screen. Therefore, we recommend to avoid to take screenshots of a full screen display of the app, unless it is relevant to do so." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:196 +#: ../../content/contributing/documentation/content_guidelines.rst:197 msgid "A few tips to improve your screenshots:" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:198 +#: ../../content/contributing/documentation/content_guidelines.rst:199 msgid "**Zoom** in your browser. We recommend a 110% zoom for better results." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:199 +#: ../../content/contributing/documentation/content_guidelines.rst:200 msgid "**Resize** your browser's width, either by *resizing the window* itself or by opening the *browser's developer tools* (press the ``F12`` key) and resizing the width." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:201 +#: ../../content/contributing/documentation/content_guidelines.rst:202 msgid "**Select** the relevant area, rather than keeping the full window." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:202 +#: ../../content/contributing/documentation/content_guidelines.rst:203 msgid "If necessary, you can **edit** the screenshot to remove unnecessary fields and to narrow even more Odoo's display." msgstr "" @@ -1684,71 +1747,71 @@ msgstr "" msgid "Three tips to take good screenshots for the Odoo documentation." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:210 +#: ../../content/contributing/documentation/content_guidelines.rst:211 msgid "Resizing the window's width is the most important step to do as Odoo's responsive design automatically resizes all fields to match the window's width." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:216 +#: ../../content/contributing/documentation/content_guidelines.rst:217 msgid "Media files" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:218 +#: ../../content/contributing/documentation/content_guidelines.rst:219 msgid "A **media filename**:" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:220 +#: ../../content/contributing/documentation/content_guidelines.rst:221 msgid "is written in **lower-case letters**" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:221 +#: ../../content/contributing/documentation/content_guidelines.rst:222 msgid "is **relevant** to the media's content. (E.g., :file:`screenshot-tips.gif`.)" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:222 +#: ../../content/contributing/documentation/content_guidelines.rst:223 msgid "separates its words with a **hyphen** ``-`` (E.g., :file:`awesome-filename.png`.)" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:224 +#: ../../content/contributing/documentation/content_guidelines.rst:225 msgid "Each document has its own folder in which the media files are located. The folder's name must be the same as the document's filename." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:227 +#: ../../content/contributing/documentation/content_guidelines.rst:228 msgid "For example, the document :file:`doc_filename.rst` refers to two images that are placed in the folder ``doc_filename``." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:239 +#: ../../content/contributing/documentation/content_guidelines.rst:240 msgid "Previously, image filenames would mostly be named with numbers (e.g., :file:`feature01.png`) and placed in a single ``media`` folder. While it is advised not to name your *new* images in that fashion, it is also essential **not to rename unchanged files**, as doing this would double the weight of renamed image files on the repository. They will eventually all be replaced as the content referencing those images is updated." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:248 +#: ../../content/contributing/documentation/content_guidelines.rst:249 msgid "ALT tags" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:250 +#: ../../content/contributing/documentation/content_guidelines.rst:251 msgid "An **ALT tag** is a *text alternative* to an image. This text is displayed if the browser fails to render the image. It is also helpful for users who are visually impaired. Finally, it helps search engines, such as Google, to understand what the image is about and index it correctly, which improves the :abbr:`SEO (Search Engine Optimization)` significantly." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:255 +#: ../../content/contributing/documentation/content_guidelines.rst:256 msgid "Good ALT tags are:" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:257 +#: ../../content/contributing/documentation/content_guidelines.rst:258 msgid "**Short** (one line maximum)" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:258 +#: ../../content/contributing/documentation/content_guidelines.rst:259 msgid "**Not a repetition** of a previous sentence or title" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:259 +#: ../../content/contributing/documentation/content_guidelines.rst:260 msgid "A **good description** of the action happening on the image" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:260 +#: ../../content/contributing/documentation/content_guidelines.rst:261 msgid "Easily **understandable** if read aloud" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:263 +#: ../../content/contributing/documentation/content_guidelines.rst:264 msgid ":ref:`RST cheat sheet: image directive `" msgstr "" @@ -2595,7 +2658,7 @@ msgid "Use relative links for internal URLs" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:10 -msgid "If you need to reference an internal documentation page or a file that is not sitting in the same directory as your current page, always make use of *relative file paths* rather than *absolute file paths*. An absolute file path indicates the location of the target from the root of its file tree. A relative file path makes use of smart notations (such as ``../`` git that redirects to the parent folder) to indicate the location of the target *relative* to that of the source document." +msgid "If you need to reference an internal documentation page or a file that is not sitting in the same directory as your current page, always make use of *relative file paths* rather than *absolute file paths*. An absolute file path indicates the location of the target from the root of its file tree. A relative file path makes use of smart notations (such as ``../`` that redirects to the parent folder) to indicate the location of the target *relative* to that of the source document." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:19 diff --git a/locale/sources/finance.pot b/locale/sources/finance.pot index 8b250e3c3..e0d539201 100644 --- a/locale/sources/finance.pot +++ b/locale/sources/finance.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 15.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-02 09:09+0000\n" +"POT-Creation-Date: 2023-01-19 15:35+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -192,6 +192,7 @@ msgstr "" #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/colombia.rst:34 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/germany.rst:58 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/italy.rst:18 +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:8 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/luxembourg.rst:6 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/mexico.rst:78 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/peru.rst:25 @@ -215,6 +216,7 @@ msgstr "" #: ../../content/applications/finance/accounting/receivables/customer_payments/followup.rst:14 #: ../../content/applications/finance/accounting/receivables/customer_payments/online_payment.rst:15 #: ../../content/applications/finance/accounting/reporting/declarations/intrastat.rst:19 +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:11 #: ../../content/applications/finance/accounting/taxation/taxes/B2B_B2C.rst:60 #: ../../content/applications/finance/accounting/taxation/taxes/cash_basis_taxes.rst:14 #: ../../content/applications/finance/accounting/taxation/taxes/default_taxes.rst:19 @@ -1668,6 +1670,8 @@ msgstr "" #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/egypt.rst:16 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/france.rst:182 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/india.rst:16 +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:16 +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:34 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/luxembourg.rst:14 #: ../../content/applications/finance/accounting/receivables/customer_invoices/electronic_invoicing.rst:93 msgid "Name" @@ -1676,6 +1680,8 @@ msgstr "" #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/argentina.rst:27 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/egypt.rst:17 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/india.rst:17 +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:17 +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:35 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/luxembourg.rst:15 #: ../../content/applications/finance/accounting/receivables/customer_invoices/electronic_invoicing.rst:94 msgid "Technical name" @@ -1685,6 +1691,8 @@ msgstr "" #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/egypt.rst:18 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/france.rst:59 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/india.rst:18 +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:18 +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:36 #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/luxembourg.rst:16 msgid "Description" msgstr "" @@ -7122,6 +7130,138 @@ msgstr "" msgid "Per inviare la fattura tramite PEC e generare il file XML, basterà cliccare su invia. Il documento verrà poi mostrato tra gli allegati." msgstr "" +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:3 +msgid "Kenya" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:10 +msgid ":ref:`Install ` the following modules to get all the features of the Kenyan localization:" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:19 +msgid ":guilabel:`Kenyan - Accounting`" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:20 +msgid "`l10n_ke`" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:21 +msgid "Installing this module grants you access to the list of accounts used in the local GAAP and the list of common taxes (VAT, etc.)." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:23 +msgid ":guilabel:`Kenyan - Accounting Reports`" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:24 +msgid "`l10n_ke_reports`" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:25 +msgid "Installing this module grants you access to improved accounting reports for Kenya, such as Profit and Loss and Balance Sheets." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:28 +msgid "You also have to install the **Kenya Tremol Device EDI Integration** package to be able to report your taxes to the **Kenya Revenue Authority (KRA)** using the Tremol G03 Control Unit:" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:37 +msgid ":guilabel:`Kenya Tremol Device EDI Integration`" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:38 +msgid "`l10n_ke_edi_tremol`" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:39 +msgid "Installing this module integrates with the Kenyan G03 Tremol control unit device to report taxes to KRA through TIMS." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:None +msgid "The three modules for the Kenya Fiscal Localization Package on Odoo" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:47 +msgid "Kenyan TIMS integration" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:49 +msgid "The Kenya Revenue Authority (KRA) has decided to go digital for tax collection through the **Tax Invoice Management System (TIMS)**. As of December 1st, 2022, all VAT-registered persons should comply with TIMS. The goal is to reduce VAT fraud, increase tax revenue, and increase VAT compliance through standardization, validation, and transmission of invoices to KRA on a real-time or near real-time basis." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:55 +msgid "All VAT-registered taxpayers should use a **compliant tax register**. Odoo decided to develop the integration of the **Tremol G03 Control Unit (type C)**, which can be run locally through USB. This device validates invoices to ensure financial documents meet the new regulations and send the validated tax invoices directly to KRA. Installing a proxy server that provides a gateway between users and the internet is required." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:62 +msgid "Installing the proxy server on a Windows device" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:64 +msgid "Go to `odoo.com/download `_, fill out the required information and click :guilabel:`Download`." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:None +msgid "Install the Proxy Server on a Windows device" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:71 +msgid "Once it is loaded on your computer, a wizard opens. You have to read and agree with the terms of the agreement. On the next page, select the :guilabel:`type of install: Odoo IoT`. Then, click :guilabel:`Next` and :guilabel:`Install`. Once completed, click :guilabel:`Next`. Check the :guilabel:`Start Odoo` box to be redirected to Odoo automatically, and then click :guilabel:`Finish`." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:76 +msgid "A new page opens, confirming your :doc:`IoT Box <../../../../productivity/iot/config/connect>` is up and running. Connect your physical device **Tremol G03 Control Unit (type C)** to your laptop via USB. In the :guilabel:`IoT Device` section, check that your Tremol G03 Control Unit (type C) appears, confirming the connection between the device and your computer." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:None +msgid "Your IoT box is up and running" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:86 +msgid "If the device is not detected, try to plug it in again or click on the :guilabel:`Restart` button in the top right corner." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:90 +msgid ":doc:`Connect an IoT box to your database <../../../../productivity/iot/config/connect>`" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:93 +msgid "Sending the data to KRA using the Tremol G03 Control Unit" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:95 +msgid "As a pre-requisite, check out that the :ref:`Kenyan Accounting modules ` are installed on your database. Then, go to :menuselection:`Accounting --> Configuration --> Settings --> Kenya TIMS Integration section`, and check that the :guilabel:`control Unit Proxy Address` matches the address of the IoT box." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:100 +msgid "To send data to KRA, create a new invoice by going to :menuselection:`Accounting Dashboard --> Customer Invoice card` and clicking :guilabel:`New Invoice`. Upon confirmation of a new invoice, the :guilabel:`Send invoice to Fiscal Device` button appears. Clicking on it sends the invoice details to the device and from the device to the government. The :guilabel:`CU Invoice Number` field is now completed in your invoice, confirming the information has been sent." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:106 +msgid "The :guilabel:`Tremol G03 Fiscal Device` tab contains fields that are automatically completed once the invoice is sent to the government:" +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:109 +msgid ":guilabel:`CU QR Code`: Url from the KRA portal which reflects a QR code." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:110 +msgid ":guilabel:`CU Serial Number`: reflects the serial number of the device." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:111 +msgid ":guilabel:`CU Signing Date and Time`: The date and time when the invoice has been sent to KRA." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:113 +msgid "If you click on :guilabel:`Send and Print`, a .pdf of the invoice is generated. The :guilabel:`Kenyan Fiscal Device Info` is mentioned on the document." +msgstr "" + +#: ../../content/applications/finance/accounting/fiscal_localizations/localizations/kenya.rst:117 +msgid "To verify KRA has received the invoice information, take the :guilabel:`CU Invoice Number` and and enter it in the :guilabel:`Invoice Number Checker` section on `Kenya Revenue Authority website `_. Click :guilabel:`Validate` and find the invoice details." +msgstr "" + #: ../../content/applications/finance/accounting/fiscal_localizations/localizations/luxembourg.rst:3 msgid "Luxembourg" msgstr "" @@ -16726,6 +16866,70 @@ msgstr "" msgid "This report allows you to see the **net** and **tax amounts** for all the taxes grouped by type (sale/purchase)." msgstr "" +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:3 +msgid "Silverfin integration" +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:5 +msgid "`Silverfin `_ is a third-party service provider that offers a cloud platform for accountants." +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:8 +msgid "Odoo and Silverfin provide an integration to automate the synchronisation of data." +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:13 +msgid "To configure this integration, you need to input the following data into your Silverfin account:" +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:15 +msgid "user's email address" +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:16 +msgid ":ref:`Odoo API key `" +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:17 +msgid "URL of the Odoo database" +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:18 +msgid "name of your Odoo database" +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:23 +msgid "Odoo API key" +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:25 +msgid "To create a new API key, navigate to `Odoo's website `_ and sign in with your administrator account. Next, open `your account security settings in developer mode `_, click on :guilabel:`New API Key`, confirm your password, give a descriptive name to your new key, and copy the new API key." +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:31 +msgid "You can copy the API key only at its creation, and you cannot retrieve it later." +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:32 +msgid "The API key provides full access to your user account. Store it securely." +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:33 +msgid "If you need it again, create a new API key." +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:34 +msgid "You can delete your existing API keys from this same page." +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:None +msgid "creation of an Odoo external API key for an integration with Silverfin" +msgstr "" + +#: ../../content/applications/finance/accounting/reporting/silverfin.rst:41 +msgid ":doc:`/developer/api/external_api`" +msgstr "" + #: ../../content/applications/finance/accounting/taxation.rst:5 msgid "Taxation" msgstr "" diff --git a/locale/sources/inventory_and_mrp.pot b/locale/sources/inventory_and_mrp.pot index 1c80bfa15..c63987ef2 100644 --- a/locale/sources/inventory_and_mrp.pot +++ b/locale/sources/inventory_and_mrp.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 15.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-02 09:09+0000\n" +"POT-Creation-Date: 2023-01-19 15:32+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -5366,55 +5366,79 @@ msgid "Manage semi-finished products" msgstr "" #: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:5 -msgid "With Odoo MRP, you can use semi-finished products to simplify a complex *Bill of Materials* or to represent your manufacturing flow more accurately. A *semi-finished product* is a manufactured product that is used as a component in a Bill of Material." +msgid "A *semi-finished product*, also known as a *subassembly*, is a manufactured product that is used as a component in another product's bill of materials (BoM). Semi-finished products are used to simplify complex :abbr:`BoMs (Bills of Materials)` or to more accurately represent a manufacturing flow. A :abbr:`BoM (Bill of Materials)` that contains semi-finished products is referred to as a *multilevel BoM*, where the main *top-level product* and its subassemblies are distinguished." msgstr "" -#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:10 -msgid "A *BoM* that employs *semi-finished products* is referred to as a multi-level BoM, where we distinguish between the *top level Product* and the *sub-assemblies*." +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:12 +msgid "Configure semi-finished products" msgstr "" -#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:15 -msgid "Configure a Multi Level BoM" +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:14 +msgid "To set up a multilevel :abbr:`BoM (Bill of Materials)`, the top-level product and semi-finished products must be configured. Therefore, the first step is to create the semi-finished products and their :abbr:`BoMs (Bills of Materials)`." msgstr "" -#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:17 -msgid "To configure a *multi-level BoM*, you will need the top-level product and its sub-assemblies. Therefore, you must first create the sub-assembly products and their respective Bill of Materials. Please refer to :doc:`bill_configuration` for more details on how to create a BOM." +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:19 +msgid ":doc:`bill_configuration`" +msgstr "" + +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:None +msgid "A bill of materials for a semi-finished product." msgstr "" #: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:26 -msgid "Configure the Main BoM" +msgid "Create the top-level bill of materials (BoM)" msgstr "" #: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:28 -msgid "Then on the final product form, simply add your semi-finished products to the Bill of Material." +msgid "After the semi-finished products are fully configured, navigate to :menuselection:`Manufacturing --> Products --> Products`. Then, :guilabel:`Create` the top-level product. Configure the product's specifications as desired, and be sure to :guilabel:`Save`." msgstr "" -#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:35 -msgid "Manage your production planning" +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:32 +msgid "Once the top-level product is configured, click the :guilabel:`Bill of Materials` smart button on the product form, then click :guilabel:`Create` to make a :abbr:`BoM (Bill of Materials)` for the top-level product. Then, simply add the semi-finished products to this :abbr:`BoM (Bill of Materials)`, along with any other necessary components." msgstr "" -#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:37 -msgid "There are several methods to manage the triggering of the various manufacturing orders." -msgstr "" - -#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:39 -msgid "If every time a manufacturing order is confirmed for the main product, you'd like one for the semi-finished products as well, you have two options:" +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:None +msgid "A bill of materials for a top-level product, containing a subassembly component." msgstr "" #: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:42 -msgid "Option 1 : Create re-ordering rules for the semi-finished products, with both the minimum and maximum desired stock quantities at 0." +msgid "Manage production planning" +msgstr "" + +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:44 +msgid "There are several methods to manage manufacturing order automation for products with multilevel :abbr:`BoMs (Bills of Materials)`." msgstr "" #: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:48 -msgid "Option 2 : Use the Replenish on Order (MTO) route on the semi-finished product, as well as the manufacturing one." +msgid "Semi-finished products are specifically used to manage manufacturable products with multilevel BoMs. If a BoM is being created simply to organize components or bundle sellable products, using :doc:`Kits ` is the more appropriate option." msgstr "" -#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:51 -msgid "Note that Option 1 is usually recommended over Option 2 as it is more flexible. The MTO route creates a unique link between the semi-finished and the top level product, whereas the re-ordering rule allows you to simply unreserve that production from the top level product production and redirect it to another, more pressing demand, for example." +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:52 +msgid "To automatically trigger manufacturing orders for semi-finished products after confirming a manufacturing order for the main product, there are two options:" msgstr "" -#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:56 -msgid "In any case, as soon as the semi-finished product is produced, it will become available in the manufacturing order of the final product, as shown below." +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:55 +msgid "**Option 1 (recommended):** Create *Reordering Rules* for the semi-finished products and set both the minimum and maximum desired stock quantities to `0`." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:59 +msgid ":doc:`../../purchase/products/reordering`" +msgstr "" + +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:61 +msgid "**Option 2:** Activate the :guilabel:`Replenish on Order (MTO)` and :guilabel:`Manufacture` routes under the :guilabel:`Inventory` tab of the semi-finished product's product form." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:64 +msgid "Option 1 is more flexible than Option 2 and is therefore recommended. Reordering rules do not directly link demand to replenishment, and therefore allow stocks to be unreserved and redirected to other orders, if necessary. The Replenish on Order (MTO) route creates a unique link between the semi-finished and top-level products, exclusively reserving quantities for the confirmed top-level manufacturing order." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:70 +msgid "Regardless of the method chosen, semi-finished products must be fully manufactured before manufacturing can begin on the top-level product." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:None +msgid "A manufacturing order for a top-level product." msgstr "" #: ../../content/applications/inventory_and_mrp/manufacturing/management/subcontracting.rst:3 diff --git a/locale/sources/services.pot b/locale/sources/services.pot index b42c96c2a..d0fb45a93 100644 --- a/locale/sources/services.pot +++ b/locale/sources/services.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 15.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-17 09:05+0000\n" +"POT-Creation-Date: 2023-01-19 15:32+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -961,7 +961,11 @@ msgstr "" msgid "Project" msgstr "" -#: ../../content/applications/services/project.rst:11 +#: ../../content/applications/services/project.rst:10 +msgid "Odoo Project is a tool to manage your ongoing projects. Schedule tasks, assign activities to coworkers, and keep track of each project's profitability." +msgstr "" + +#: ../../content/applications/services/project.rst:14 #: ../../content/applications/services/timesheets.rst:11 msgid "`Odoo Tutorials: Project and Timesheets `_" msgstr ""