# SOME DESCRIPTIVE TITLE. # Copyright (C) Odoo S.A. # This file is distributed under the same license as the Odoo package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Odoo 16.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-11-17 09:28+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../content/contributing.rst:7 msgid "Contributing" msgstr "" #: ../../content/contributing.rst:9 msgid "First, **thank you** for landing here and helping us improve Odoo!" msgstr "" #: ../../content/contributing.rst:11 msgid "This documentation section is intended as a guide to making contributions for first-timers and veterans." msgstr "" #: ../../content/contributing.rst:14 msgid "As an open-core project, Odoo accepts contributions from everyone, Odoo employees and members of the Odoo community alike, in all of its open-source `GitHub repositories `_." msgstr "" #: ../../content/contributing/development.rst:6 msgid "Development" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:6 msgid "Coding Guidelines" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:8 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 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 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 msgid "Module structure" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:33 msgid "Directories" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:34 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 msgid "*data/* : demo and data xml" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:38 msgid "*models/* : models definition" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:39 msgid "*controllers/* : contains controllers (HTTP routes)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:40 msgid "*views/* : contains the views and templates" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:41 msgid "*static/* : contains the web assets, separated into *css/, js/, img/, lib/, ...*" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:43 msgid "Other optional directories compose the module." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:45 msgid "*wizard/* : regroups the transient models (``models.TransientModel``) and their views" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:46 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 msgid "*tests/* : contains the Python tests" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:51 msgid "File naming" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:53 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 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 msgid "Concerning *security*, three main files should be used:" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:74 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 msgid "User groups are defined in :file:`_groups.xml`." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:76 msgid "Record rules are defined in :file:`_security.xml`." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:87 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 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 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 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 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 msgid "Concerning *statistics reports* done with python / SQL views and classic views naming is the following :" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:165 msgid "Concerning *printable reports* which contain mainly data preparation and Qweb templates naming is the following :" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:175 msgid "The complete tree of our Odoo module therefore looks like" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:234 msgid "File names should only contain ``[a-z0-9_]`` (lowercase alphanumerics and ``_``)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:237 msgid "Use correct file permissions : folder 755 and file 644." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:242 msgid "XML files" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:245 msgid "Format" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:246 msgid "To declare a record in XML, the **record** notation (using **) is recommended:" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:248 msgid "Place ``id`` attribute before ``model``" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:249 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 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 msgid "Use naming convention defined at the next point" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:257 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 msgid "Odoo supports custom tags acting as syntactic sugar:" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:277 msgid "menuitem: use it as a shortcut to declare a ``ir.ui.menu``" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:278 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 msgid "These tags are preferred over the *record* notation." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:284 msgid "XML IDs and naming" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:287 msgid "Security, View and Action" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:289 msgid "Use the following pattern :" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:291 msgid "For a menu: :samp:`{}_menu`, or :samp:`{}_menu_{do_stuff}` for submenus." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:292 msgid "For a view: :samp:`{}_view_{}`, where *view_type* is ``kanban``, ``form``, ``tree``, ``search``, ..." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:294 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 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 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 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 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 msgid "Inheriting XML" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:363 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 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 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:204 #: ../../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 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 msgid "PEP8 options" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:403 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 msgid "E501: line too long" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:407 msgid "E301: expected 1 blank line, found 0" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:408 msgid "E302: expected 2 blank lines, found 1" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:411 msgid "Imports" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:412 msgid "The imports are ordered as" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:414 msgid "External libraries (one per line sorted and split in python stdlib)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:415 msgid "Imports of ``odoo``" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:416 msgid "Imports from Odoo modules (rarely, and only if necessary)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:418 msgid "Inside these 3 groups, the imported lines are alphabetically sorted." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:436 msgid "Idiomatics of Programming (Python)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:438 msgid "Always favor *readability* over *conciseness* or using the language features or idioms." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:439 msgid "Don't use ``.clone()``" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:450 msgid "Python dictionary : creation and update" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:475 msgid "Use meaningful variable/class/method names" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:476 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 msgid "Multiple return points are OK, when they're simpler" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:508 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 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 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 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 msgid "So, you can write ``if some_collection:`` instead of ``if len(some_collection):``." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:546 msgid "Iterate on iterables" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:560 msgid "Use dict.setdefault" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:576 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 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 msgid "Programming in Odoo" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:585 msgid "Avoid to create generators and decorators: only use the ones provided by the Odoo API." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:587 msgid "As in python, use ``filtered``, ``mapped``, ``sorted``, ... methods to ease code reading and performance." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:591 msgid "Propagate the context" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:592 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 msgid "Passing parameter in context can have dangerous side-effects." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:603 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 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 msgid "Think extendable" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:618 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 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 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 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 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 msgid "Never commit the transaction" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:661 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 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 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 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 msgid "inconsistent business data, usually data loss" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:695 msgid "workflow desynchronization, documents stuck permanently" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:696 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 msgid "Here is the very simple rule:" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:701 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 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 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 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 msgid "Use translation method correctly" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:730 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 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 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 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 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 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 msgid "Symbols and Conventions" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:827 msgid "Model name (using the dot notation, prefix by the module name) :" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:820 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 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 msgid "When defining *report* model (SQL views e.i.) : use ``.report.``, based on the Transient convention." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:829 msgid "Odoo Python Class : use camelcase (Object-oriented style)." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:840 msgid "Variable name :" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:838 msgid "use camelcase for model variable" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:839 msgid "use underscore lowercase notation for common variable." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:840 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 msgid "``One2Many`` and ``Many2Many`` fields should always have *_ids* as suffix (example: sale_order_line_ids)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:849 msgid "``Many2One`` fields should have *_id* as suffix (example : partner_id, user_id, ...)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:859 msgid "Method conventions" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:851 msgid "Compute Field : the compute method pattern is *_compute_*" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:852 msgid "Search method : the search method pattern is *_search_*" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:853 msgid "Default method : the default method pattern is *_default_*" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:854 msgid "Selection method: the selection method pattern is *_selection_*" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:855 msgid "Onchange method : the onchange method pattern is *_onchange_*" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:856 msgid "Constraint method : the constraint method pattern is *_check_*" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:857 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 msgid "In a Model attribute order should be" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:862 msgid "Private attributes (``_name``, ``_description``, ``_inherit``, ``_sql_constraints``, ...)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:863 msgid "Default method and ``default_get``" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:864 msgid "Field declarations" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:865 msgid "Compute, inverse and search methods in the same order as field declaration" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:866 msgid "Selection method (methods used to return computed values for selection fields)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:867 msgid "Constrains methods (``@api.constrains``) and onchange methods (``@api.onchange``)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:868 msgid "CRUD methods (ORM overrides)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:869 msgid "Action methods" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:870 msgid "And finally, other business methods." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:926 msgid "Javascript and CSS" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:929 msgid "Static files organization" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:931 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 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 msgid "The convention is to organize the code according to the following structure:" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:941 msgid "*static*: all static files in general" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:943 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 msgid "*static/src*: the generic static source code folder" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:947 msgid "*static/src/css*: all css files" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:948 msgid "*static/fonts*" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:949 msgid "*static/img*" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:950 msgid "*static/src/js*" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:952 msgid "*static/src/js/tours*: end user tour files (tutorials, not tests)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:954 msgid "*static/src/scss*: scss files" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:955 msgid "*static/src/xml*: all qweb templates that will be rendered in JS" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:957 msgid "*static/tests*: this is where we put all test related files." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:959 msgid "*static/tests/tours*: this is where we put all tour test files (not tutorials)." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:962 msgid "Javascript coding guidelines" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:964 msgid "``use strict;`` is recommended for all javascript files" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:965 msgid "Use a linter (jshint, ...)" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:966 msgid "Never add minified Javascript Libraries" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:967 msgid "Use camelcase for class declaration" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:969 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 msgid "CSS coding guidelines" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:976 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 msgid "Avoid using *id* tag" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:982 msgid "Use Bootstrap native classes" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:983 msgid "Use underscore lowercase notation to name class" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:988 msgid "Git" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:991 msgid "Configure your git" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:993 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 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 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 msgid "Commit message structure" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1008 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 msgid "Tag and module name" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1033 msgid "Tags are used to prefix your commit. They should be one of the following" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1035 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 msgid "**[REF]** for refactoring: when a feature is heavily rewritten;" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1038 msgid "**[ADD]** for adding new modules;" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1039 msgid "**[REM]** for removing resources: removing dead code, removing views, removing modules, ...;" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1041 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 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 msgid "**[REL]** for release commits: new major or minor stable versions;" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1047 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 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 msgid "**[CLA]** for signing the Odoo Individual Contributor License;" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1052 msgid "**[I18N]** for changes in translation files;" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1054 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 msgid "Commit message header" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1063 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 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 msgid "Commit message full description" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1076 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 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 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 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 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 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 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 msgid "Finally here are some examples of correct commit messages :" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1126 msgid "Use the long description to explain the *why* not the *what*, the *what* can be seen in the diff" msgstr "" #: ../../content/contributing/documentation.rst:5 msgid "Documentation" msgstr "" #: ../../content/contributing/documentation.rst:14 msgid "This introductory guide will help you acquire the tools and knowledge you need to write documentation, whether you plan to make a minor content change or document an application from scratch." msgstr "" #: ../../content/contributing/documentation.rst:21 msgid "reStructuredText" 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." 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." 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." msgstr "" #: ../../content/contributing/documentation.rst:40 msgid ":doc:`documentation/content_guidelines`" msgstr "" #: ../../content/contributing/documentation.rst:41 msgid ":doc:`documentation/rst_cheat_sheet`" msgstr "" #: ../../content/contributing/documentation.rst:42 msgid ":doc:`documentation/rst_guidelines`" msgstr "" #: ../../content/contributing/documentation.rst:47 msgid "Getting started" 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." 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:" 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." 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." msgstr "" #: ../../content/contributing/documentation.rst:66 msgid "Use the GitHub interface" 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." 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:396 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" msgstr "" #: ../../content/contributing/documentation.rst:126 msgid "Prepare your machine" msgstr "" #: ../../content/contributing/documentation.rst:131 msgid "Install Git" 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." 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." msgstr "" #: ../../content/contributing/documentation.rst:141 msgid "Download and install **Git** on your machine." msgstr "" #: ../../content/contributing/documentation.rst:142 msgid "Verify that `the installation folder of Git is included in your system's PATH variable `_." msgstr "" #: ../../content/contributing/documentation.rst:144 #: ../../content/contributing/documentation.rst:169 #: ../../content/contributing/documentation.rst:317 #: ../../content/contributing/documentation.rst:337 #: ../../content/contributing/documentation.rst:368 msgid "Execute the following commands in a terminal:" msgstr "" #: ../../content/contributing/documentation.rst:154 msgid "Fetch the sources" 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." 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." msgstr "" #: ../../content/contributing/documentation.rst:164 msgid "Go to `github.com/odoo/documentation `_ and click on the **Fork** button in the top right corner." msgstr "" #: ../../content/contributing/documentation.rst:177 msgid "If you do not have edit rights on the repository owned by Odoo, replace \"odoo\" with your Github username in the URL of the command above. If you do have edit rights, it is not necessary to fork the repository." msgstr "" #: ../../content/contributing/documentation.rst:181 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:185 msgid "Windows:" msgstr "" #: ../../content/contributing/documentation.rst:193 msgid "Linux or Mac OS:" msgstr "" #: ../../content/contributing/documentation.rst:206 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." msgstr "" #: ../../content/contributing/documentation.rst:211 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!" msgstr "" #: ../../content/contributing/documentation.rst:216 msgid "Python comes with its own package manager: `pip `_. It allows installing Python dependencies in a single command." msgstr "" #: ../../content/contributing/documentation.rst:220 msgid "Download and install the recommended release (`see README file `_) of **Python 3** on your machine." msgstr "" #: ../../content/contributing/documentation.rst:222 msgid "Make sure to have **pip** installed on your machine (on Windows, you can install pip alongside Python)." msgstr "" #: ../../content/contributing/documentation.rst:224 msgid "Execute the following commands in a terminal to verify that both installations finished successfully:" msgstr "" #: ../../content/contributing/documentation.rst:232 msgid "Execute the following commands in a terminal to install the Python dependencies of the documentation:" msgstr "" #: ../../content/contributing/documentation.rst:241 msgid "Depending on your :abbr:`OS (Operating System)`, you may need to run the commands ``python`` and ``pip`` instead of ``python3`` and ``pip3``" msgstr "" #: ../../content/contributing/documentation.rst:247 msgid "Make" msgstr "" #: ../../content/contributing/documentation.rst:249 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." msgstr "" #: ../../content/contributing/documentation.rst:253 msgid "Download and install **Make** on your machine." msgstr "" #: ../../content/contributing/documentation.rst:254 msgid "Verify that `the installation folder of Make is included in your system's PATH variable `_." msgstr "" #: ../../content/contributing/documentation.rst:260 msgid "pngquant" msgstr "" #: ../../content/contributing/documentation.rst:262 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:265 msgid "Download and install **pngquant** on your machine." msgstr "" #: ../../content/contributing/documentation.rst:266 msgid "Verify that `the installation folder of pngquant is included in your system's PATH variable `_." msgstr "" #: ../../content/contributing/documentation.rst:272 msgid "Prepare your version" msgstr "" #: ../../content/contributing/documentation.rst:274 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 13.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 13.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 ``13.0-my_contribution``." msgstr "" #: ../../content/contributing/documentation.rst:282 msgid "Execute the following commands in a terminal to..." msgstr "" #: ../../content/contributing/documentation.rst:284 msgid "Navigate to the documentation folder:" msgstr "" #: ../../content/contributing/documentation.rst:290 msgid "Switch to the version 13.0:" msgstr "" #: ../../content/contributing/documentation.rst:296 msgid "Create your own branch which will be a copy of 13.0:" msgstr "" #: ../../content/contributing/documentation.rst:305 msgid "Perform your changes" msgstr "" #: ../../content/contributing/documentation.rst:307 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:313 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:316 msgid "Make sure that the image is in ``.png`` format." msgstr "" #: ../../content/contributing/documentation.rst:324 msgid "Delete :file:`my-image.png`." msgstr "" #: ../../content/contributing/documentation.rst:325 msgid "Rename :file:`my-image-fs8.png` to :file:`my-image.png`." msgstr "" #: ../../content/contributing/documentation.rst:326 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:333 msgid "Preview your changes" msgstr "" #: ../../content/contributing/documentation.rst:335 msgid "To preview your changes in a generated documentation, proceed as follows:" msgstr "" #: ../../content/contributing/documentation.rst:346 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:349 msgid "Fix any error or warning shown in the logs of the build." msgstr "" #: ../../content/contributing/documentation.rst:350 msgid "Open the file :file:`documentation/_build/html/index.html` with your default web browser." msgstr "" #: ../../content/contributing/documentation.rst:353 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:359 msgid "Submit your changes" msgstr "" #: ../../content/contributing/documentation.rst:362 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:376 msgid "Go to `github.com/odoo/documentation/pulls `_ and click on the **New pull request** button." msgstr "" #: ../../content/contributing/documentation.rst:381 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:386 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 **13.0**)." msgstr "" #: ../../content/contributing/documentation.rst:391 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." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:3 msgid "Content guidelines" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:5 msgid "To give the community the best documentation possible, we listed here a few guidelines, tips and tricks that will make your content shine at its brightest! While we encourage you to adopt your own writing style, some rules still apply to give the reader more clarity and comprehension." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:10 msgid "We strongly recommend contributors to carefully read the other documents related to this section of the documentation. Good knowledge of the ins and outs of **RST writing** is required to write and submit your contribution. Note that it also affects your writing style itself." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:14 msgid ":doc:`../documentation`" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:15 msgid ":doc:`rst_cheat_sheet`" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:16 msgid ":doc:`rst_guidelines`" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:21 msgid "Writing style" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:23 msgid "**Writing for documentation** isn't the same as writing for a blog or another medium. Readers are more likely to skim read until they've found the information they are looking for. Keep in mind that the user documentation is a place to inform and describe, not to convince and promote." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:30 msgid "Consistency" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:32 msgid "*Consistency is key to everything.*" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:34 msgid "Make sure that your writing style remains **consistent**. If you modify an existing text, try to match the existing tone and presentation, or rewrite it to match your own style." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:40 msgid "Grammatical tenses" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:42 msgid "In English, descriptions and instructions require the use of a **Present Tense**, while a *future tense* is appropriate only when a specific event is to happen ulteriorly. This logic might be different in other languages." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "Good example (present):" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "*Screenshots are automatically resized to fit the content block's width.*" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "Bad example (future):" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "*When you take a screenshot, remember that it will be automatically resized to fit the content block's width.*" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:55 msgid "Paragraphing" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:57 msgid "A paragraph comprises several sentences that are linked by a shared idea. They usually are two to six lines long." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:60 msgid "In English, a new idea implies a new paragraph, rather than having a *line break* as it is common to do in some other languages. *Line breaks* are useful for layout purposes but shouldn't be used as a grammatical way of separating ideas." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:65 msgid ":ref:`RST cheat sheet: Break the line but not the paragraph `" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:70 msgid "Titles and headings" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:72 msgid "To write good titles and headings:" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:74 msgid "**Be concise.**" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:76 msgid "**Avoid sentences**, unnecessary verbs, questions, and titles starting with \"how to.\"" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:78 msgid "**Don't use pronouns** in your titles, especially 2nd person (*your*)." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:79 msgid "Use **sentence case**. This means you capitalize only:" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:81 msgid "the first word of the title or heading" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:82 msgid "the first word after a colon" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:83 msgid "proper nouns (brands, product and service names, etc.)" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:86 msgid "Most titles and headings generally refer to a concept and do *not* represent the name of a feature or a model." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:88 msgid "Do not capitalize the words of an acronym if they don't entail a proper noun." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:89 msgid "Verbs in headings are fine since they often describe an action." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:92 msgid "**Titles** (H1)" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:94 msgid "Quotation templates" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:95 msgid "Lead mining" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:96 msgid "Resupply from another warehouse" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:97 msgid "Synchronize Google Calendar with Odoo" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:98 msgid "Batch payments: SEPA Direct Debit (SDD)" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:99 msgid "Digitize vendor bills with optical character recognition (OCR)" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:101 msgid "**Headings** (H2, H3)" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:103 msgid "Project stages" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:104 msgid "Email alias" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:105 msgid "Confirm the quotation" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:106 msgid "Generate SEPA Direct Debit XML files to submit payments" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:111 msgid "Document structure" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:113 msgid "Use different **heading levels** to organize your text by sections and sub-sections. Your headings are not only displayed in the document but also on the navigation menu (only the H1) and on the \"On this page\" sidebar (all H2 to H6)." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "**H1: Page title**" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "Your *page title* gives your reader a quick and clear understanding of what your content is about." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:122 msgid "The *content* in this section describes the upcoming content from a **business point of view**, and shouldn't put the emphasis on Odoo, as this is documentation and not marketing." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:126 msgid "Start first with a **lead paragraph**, which helps the reader make sure that they've found the right page, then explain the **business aspects of this topic** in the following paragraphs." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "**H2: Section title (configuration)**" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "This first H2 section is about the configuration of the feature, or the prerequisites to achieve a specific goal. To add a path, make sure you use the ``:menuselection:`` specialized directive (see link below)." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "Example:" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "To do so, go to ``:menuselection:`App name --> Menu --> Sub-menu```, and enable the XYZ feature." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "**H2: Section title (main sections)**" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "Create as many main sections as you have actions or features to distinguish. The title can start with a verb, but try to avoid using \"Create ...\"." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "**H3: Subsection**" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:0 msgid "Subsections are perfect for assessing very specific points. The title can be in the form of a question, if appropriate." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:147 msgid "**H2: Next Section**" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:151 msgid ":ref:`RST cheat sheet: headings `" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:152 msgid ":ref:`RST cheat sheet: markups `" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:157 msgid "Organizing the documentation" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:159 msgid "When writing documentation about a given topic, try to keep pages within the same folder organized." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:161 msgid "For most topics, a single page should do the job. Place it in the appropriate section of the documentation (e.g., content related to the CRM app go under :menuselection:`Applications -> Sales -> CRM`) and follow the :ref:`document structure ` guidelines." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:166 msgid "For more complex topics, you may need several pages to cover all their aspects. Usually, you will find yourself adding documentation to a topic that is already partially covered. In that case, either create a new page and place it at the same level as other related pages or add new sections to an existing page. If you are documenting a complex topic from scratch, organize your content between one parent page (the :abbr:`TOC (Tree Of Contents)` page) and several child pages. Whenever possible, write content on the parent page and not only on the child pages. Make the parent page accessible from the navigation menu by using the :ref:`show-content ` metadata directive." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:178 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:440 msgid "Images" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:180 msgid "Adding a few images to illustrate your text helps the readers to understand and memorize your content. However, avoid adding too many images: it isn't necessary to illustrate all steps and features, and it may overload your page." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:185 msgid "Don't forget to :ref:`compress your PNG files with pngquant `." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:190 msgid "Screenshots" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:192 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 msgid "A few tips to improve your screenshots:" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:198 msgid "**Zoom** in your browser. We recommend a 110% zoom for better results." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:199 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 msgid "**Select** the relevant area, rather than keeping the full window." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:202 msgid "If necessary, you can **edit** the screenshot to remove unnecessary fields and to narrow even more Odoo's display." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:None msgid "Three tips to take good screenshots for the Odoo documentation." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:210 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 msgid "Media files" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:218 msgid "A **media filename**:" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:220 msgid "is written in **lower-case letters**" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:221 msgid "is **relevant** to the media's content. (E.g., :file:`screenshot-tips.gif`.)" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:222 msgid "separates its words with a **hyphen** ``-`` (E.g., :file:`awesome-filename.png`.)" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:224 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 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 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 msgid "ALT tags" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:250 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 msgid "Good ALT tags are:" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:257 msgid "**Short** (one line maximum)" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:258 msgid "**Not a repetition** of a previous sentence or title" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:259 msgid "A **good description** of the action happening on the image" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:260 msgid "Easily **understandable** if read aloud" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:263 msgid ":ref:`RST cheat sheet: image directive `" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:5 msgid "RST cheat sheet" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:10 msgid "Headings" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:13 msgid "For each formatting line (e.g., ``===``), write as many symbols (``=``) as there are characters in the header." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:17 msgid "The symbols used for the formatting are, in fact, not important. Only the order in which they are written matters, as it determines the size of the decorated heading. This means that you may encounter different heading formatting and in a different order, in which case you should follow the formatting in place in the document. In any other case, use the formatting shown below." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:20 msgid "Heading size" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:20 msgid "Formatting" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:22 msgid "H1" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:28 msgid "H2" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:33 msgid "H3" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:38 msgid "H4" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:43 msgid "H5" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:48 msgid "H6" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:55 msgid "Each document must have **exactly one H1 heading**. No less, no more." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:60 msgid "Markups" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:65 msgid "Emphasis (italic)" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:67 msgid "To emphasize a part of the text. The text is rendered in italic." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:72 msgid "Fill out the information *before* saving the form." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:81 msgid "Strong emphasis (bold)" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:83 msgid "To emphasize a part of the text. The text is rendered in bold." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:88 msgid "A **subdomain** is a domain that is a part of another domain." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:97 msgid "Technical term (literal)" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:99 msgid "To write a technical term or a specific value to insert. The text is rendered in literal." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:104 msgid "Insert the IP address of your printer, for example, `192.168.1.25`." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:113 msgid "Definitions" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:115 msgid "Use the `dfn` markup to define a term." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:120 msgid "The documentation is written in RST and needs to be built (:dfn:`converted to HTML`) to display nicely." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:131 msgid "Abbreviations" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:133 msgid "Use the `abbr` markup to write a self-defining abbreviation that is displayed as a tooltip." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:138 msgid "Odoo uses :abbr:`OCR (optical character recognition)` and artificial intelligence technologies to recognize the content of the documents." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:149 msgid ":abbr:`GUI (Graphical User Interface)` element" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:151 msgid "Use the `guilabel` markup to identify any text of the interactive user interface (e.g., button labels, view titles, field names, lists items, ...)." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:157 msgid "Update your credentials, then click on :guilabel:`Save`." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:166 msgid "Menu selection" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:168 msgid "Use the `menuselection` markup to guide the user through a sequence of menus." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:173 msgid "To review your sales performance, go to :menuselection:`Sales --> Reporting --> Dashboard`." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:182 msgid "File" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:184 msgid "Use the `file` markup to indicate a file path or name." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:190 msgid "Create redirections with the :file:`redirects.txt` file at the root of the repository." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:199 msgid "Command" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:201 msgid "Use the `command` markup to highlight a command." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:206 msgid "Run the command :command:`make clean html` to delete existing built files and build the documentation to HTML." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:217 msgid "Lists" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:222 msgid "Bulleted list" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:227 msgid "This is a bulleted list." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:228 msgid "It has two items, the second item uses two lines." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:240 msgid "Numbered list" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:245 msgid "This is a numbered list." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:246 msgid "Numbering is automatic." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:256 msgid "Use this format to start the numbering with a number other than one." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:258 msgid "The numbering is automatic from there." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:267 msgid "Prefer the use of autonumbered lists with `#.` for better code resilience." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:272 msgid "Nested lists" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:277 msgid "This is the first item of a bulleted list." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:279 msgid "It has a nested numbered list" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:280 msgid "with two items." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:292 msgid "Hyperlinks" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:297 msgid "External hyperlinks" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:299 msgid "External hyperlinks are links to a URL with a custom label. They follow this syntax: ```label `_``" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:303 msgid "The URL can be a relative path to a file within the documentation." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:304 msgid "Use the :ref:`documentation pages hyperlinks ` if you target another documentation page." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:310 msgid "For instance, `this is an external hyperlink to Odoo's website `_." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:319 msgid "External hyperlink aliases" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:321 msgid "External hyperlink aliases allow creating shortcuts for external hyperlinks." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:322 msgid "The definition syntax is as follows: ``.. _target: URL``" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:323 msgid "There are two ways to reference them, depending on the use case:" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:325 msgid "``target_`` creates a hyperlink with the target name as label and the URL as reference. Note that the ``_`` moved after the target!" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:327 msgid "```label `_`` does exactly what you expect: the label replaces the name of the target, and the target is replaced by the URL." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:333 msgid "A `proof-of-concept `_ is a simplified version, a prototype of what is expected to agree on the main lines of expected changes. `PoC `_ is a common abbreviation." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:347 msgid "Custom anchors" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:349 msgid "Custom anchors follow the same syntax as external hyperlink aliases but without any URL. Indeed, they are internal. They allow referencing a specific part of a document by using the target as an anchor. When the user clicks on the reference, the documentation scrolls to the part of the page containing the anchor." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:354 msgid "The definition syntax is: ``.. _target:``" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:355 msgid "There are two ways to reference them, both using the ``ref`` markup:" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:357 msgid "``:ref:`target``` creates a hyperlink to the anchor with the heading defined below as label." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:358 msgid "``:ref:`label ``` creates a hyperlink to the anchor with the given label." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:360 msgid "See :ref:`contributing/relative-links` to learn how to write proper relative links for internal references." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:364 msgid "Custom anchors can be referenced from other files than the ones in which they are defined." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:365 msgid "Notice that there is no ``_`` at the end, contrary to what is done with :ref:`external hyperlinks `." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:371 msgid "This can easily be done by creating a new product, see `How to create a product? `_ for additional help." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:374 msgid "**How to create a product?**" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:376 msgid "As explained at the `start of the page `_, ..." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:394 msgid "Documentation pages hyperlinks" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:397 msgid "The ``doc`` markup allows referencing a documentation page wherever it is in the file tree through a relative file path." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:398 msgid "As usual, there are two ways to use the markup:" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:401 msgid "``:doc:`path_to_doc_page``` creates a hyperlink to the documentation page with the title of the page as label." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:403 msgid "``:doc:`label ``` creates a hyperlink to the documentation page with the given label." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:409 msgid "Please refer to `this documentation `_ and to `Send a pro-forma invoice `_." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:420 msgid "File download hyperlinks" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:422 msgid "The ``download`` markup allows referencing files (that are not necessarily :abbr:`RST (reStructuredText)` documents) within the source tree to be downloaded." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:428 msgid "Download this `module structure template `_ to start building your module in no time." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:442 msgid "The ``image`` markup allows inserting images in a document." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 msgid "Create an invoice." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:458 msgid "Add the :code:`:class: o-no-modal` `option `_ to an image to prevent opening it in a modal." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:465 msgid "Alert blocks (admonitions)" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:470 msgid "Seealso" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:476 msgid "`Customer invoices `_" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:477 msgid "`Pro-forma invoices `_" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:488 msgid "Note" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:494 msgid "Use this alert block to grab the reader's attention about additional information." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:504 msgid "Tip" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:510 msgid "Use this alert block to inform the reader about a useful trick that requires an action." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:520 #: ../../content/contributing/documentation/rst_guidelines.rst:17 msgid "Example" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:526 msgid "Use this alert block to show an example." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:536 msgid "Exercise" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:542 msgid "Use this alert block to suggest an exercise to the reader." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:552 msgid "Important" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:558 msgid "Use this alert block to notify the reader about important information." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:568 msgid "Warning" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:574 msgid "Use this alert block to require the reader to proceed with caution with what is described in the warning." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:586 msgid "Danger" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:592 msgid "Use this alert block to bring the reader's attention to a serious threat." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:602 msgid "Custom" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:607 msgid "Title" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:609 msgid "Customize this alert block with a **Title** of your choice." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:620 msgid "Tables" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:623 msgid "List tables" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:625 msgid "List tables use two-level bulleted lists to convert data into a table. The first level represents the rows and the second level represents the columns." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:635 msgid "Name" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:636 msgid "Country" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:637 msgid "Favorite color" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:638 msgid "Raúl" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:639 msgid "Montenegro" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:640 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:672 msgid "Purple" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:641 msgid "Mélanie" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:642 msgid "France" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:643 msgid "Red" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:662 msgid "Grid tables" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:664 msgid "Grid tables represent the rendered table and are more visual to work with." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:670 msgid "Shirts" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:670 msgid "T-shirts" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:672 msgid "**Available colours**" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:672 msgid "Green" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:674 msgid "Turquoise" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:674 msgid "Orange" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:676 msgid "**Sleeves length**" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:676 msgid "Long sleeves" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:676 msgid "Short sleeves" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:692 msgid "Use `=` instead of `-` to define header rows." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:693 msgid "Remove `-` and `|` separators to merge cells." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:694 msgid "Make use of `this convenient table generator `_ to build your tables. Then, copy-paste the generated formatting into your document." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:700 msgid "Code blocks" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:720 msgid "Spoilers" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:727 msgid "**42**" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:738 msgid "Content tabs" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:741 msgid "The `tabs` markup may not work well in some situations. In particular:" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:743 msgid "The tabs' headers cannot be translated." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:744 msgid "A tab cannot contain :ref:`headings `." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:745 msgid "An :ref:`alert block ` cannot contain tabs." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:746 msgid "A tab cannot contain :ref:`custom anchors `." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:751 msgid "Basic tabs" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:753 msgid "Basic tabs are useful to split the content into multiple options. The `tabs` markup is used to define sequence of tabs. Each tab is then defined with the `tab` markup followed by a label." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:761 msgid "Odoo Online" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:763 msgid "Content dedicated to Odoo Online users." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:765 msgid "Odoo.sh" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:767 msgid "Alternative for Odoo.sh users." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:769 msgid "On-premise" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:771 msgid "Third version for On-premise users." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:792 msgid "Nested tabs" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:794 msgid "Tabs can be nested inside one another." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:801 msgid "Stars" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:805 msgid "The Sun" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:807 msgid "The closest star to us." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:809 msgid "Proxima Centauri" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:811 msgid "The second closest star to us." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:813 msgid "Polaris" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:815 msgid "The North Star." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:817 msgid "Moons" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:821 msgid "The Moon" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:823 msgid "Orbits the Earth." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:825 msgid "Titan" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:827 msgid "Orbits Jupiter." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:864 msgid "Group tabs" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:866 msgid "Group tabs are special tabs that synchronize based on a group label. The last selected group is remembered and automatically selected when the user returns to the page or visits another page with the tabs group. The `group-tab` markup is used to define group tabs." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:875 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:877 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:889 msgid "C++" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:883 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:885 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:904 msgid "Java" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:956 msgid "Code tabs" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:958 msgid "Code tabs are essentially :ref:`group tabs ` that treat the content as a :ref:`code block `. The `code-tab` markup is used to define a code tab. Just as for the `code-block` markup, the language defines the syntax highlighting of the tab. If set, the label is used instead of the language for grouping tabs." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1009 msgid "Document metadata" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1011 msgid "Sphinx supports document-wide metadata markups that specify a behavior for the entire page." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1012 msgid "They must be placed between colons (`:`) at the top of the source file." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1015 msgid "**Metadata**" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1015 msgid "**Purpose**" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1017 msgid "`show-content`" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1017 msgid "Make a toctree page accessible from the navigation menu." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1019 msgid "`show-toc`" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1019 msgid "Show the table of content on a page that has the `show-content` metadata markup." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1022 msgid "`code-column`" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 msgid "Show a dynamic side column that can be used to display interactive tutorials or code excerpts." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 msgid "For example, see :doc:`/applications/finance/accounting/getting_started/memento`." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1027 msgid "`hide-page-toc`" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1027 msgid "Hide the \"On this page\" sidebar and use full page width for the content." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1029 msgid "`custom-css`" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1029 msgid "Link CSS files (comma-separated) to the document." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1031 msgid "`custom-js`" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1031 msgid "Link JS files (comma-separated) to the document." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1033 msgid "`classes`" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1033 msgid "Assign the specified classes to the `
` element of the document." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1035 msgid "`orphan`" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1035 msgid "Suppress the need to include the document in a toctree." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1037 msgid "`nosearch`" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1037 msgid "Exclude the document from search results." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1043 msgid "Formatting tips" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1048 msgid "Break the line but not the paragraph" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 msgid "A first long line that you break in two -> here <- is rendered as a single line." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 msgid "A second line that follows a line break." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1066 msgid "Escape markup symbols (Advanced)" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1068 msgid "Markup symbols escaped with backslashes (``\\``) are rendered normally. For instance, ``this \\*\\*line of text\\*\\* with \\*markup\\* symbols`` is rendered as “this \\*\\*line of text\\*\\* with \\*markup\\* symbols”." msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:1072 msgid "When it comes to backticks (`````), which are used in many cases such as :ref:`external hyperlinks `, using backslashes for escaping is no longer an option because the outer backticks interpret enclosed backslashes and thus prevent them from escaping inner backticks. For instance, ```\\`this formatting\\```` produces an ``[UNKNOWN NODE title_reference]`` error. Instead, `````this formatting````` should be used to produce the following result: ```this formatting```." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:3 msgid "RST guidelines" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:8 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." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:19 msgid "Given the following source file tree:" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:34 msgid "A reference to the rendered :file:`prices.html` and :file:`variants.html` could be made from :file:`import.rst` as follows:" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:37 msgid "Absolute:" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:39 msgid "``https://odoo.com/documentation/master/applications/sales/sales/products_prices/prices.html``" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:40 msgid "``https://odoo.com/documentation/master/applications/sales/sales/products_prices/products/variants.html``" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:42 msgid "Relative:" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:44 msgid "``../prices.html``" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:45 msgid "``variants.html``" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:47 msgid "The relative links are clearly superior in terms of readability and stability: the references survive version updates, folder name changes and file tree restructurations." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:53 msgid "Start a new line before the 100th character" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:55 msgid "In RST, it is possible to break a line without forcing a line break on the rendered HTML. Make use of this feature to write **lines of maximum 100 characters**. A line break in a sentence results in an additional whitespace in HTML. That means that you do not need to leave a trailing whitespace at the end of a line to separate words." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:61 msgid "You can safely break a line around the separators (``-->``) of ``menuselection`` markups and anywhere in a hyperlink reference. For the ``doc``, ``ref`` and ``download`` markups, this is only true for the label part of the reference." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:66 msgid "Example: Line breaks within markups" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:75 msgid "Be consistent with indentation" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:77 msgid "Use only spaces (never tabs)." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:79 msgid "Use as many spaces at the beginning of an indented line as needed to align it with the first character of the markup in the line above. This usually implies 3 spaces but you only need 2 for bulleted lists." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:84 msgid "Example: The first ``:`` is below the ``i`` (3 spaces)" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:93 msgid "Example: The ``:titlesonly:`` and page references start below the ``t`` (3 spaces)" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:104 msgid "Example: Continuation lines resume below the ``I``’s of “Invoice” (2 spaces)" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:114 msgid "Use the menuselection markup" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:116 msgid "Although chaining characters ``‣`` and menu names works fine to indicate a user which menus to click, it is best to use the ``menuselection`` markup (see :ref:`contributing/menuselection`) for the same result. Indeed, it renders the menus chain consistently with the rest of the documentation and would automatically adapt to the new graphic chart if we were to switch to a new one. This markup is used inline as follows: ``:menuselection:`Sales --> Settings --> Products --> Variants```." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:125 msgid "Write resilient code" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:127 msgid "Prefer the use of ``#.`` in numbered lists instead of ``1.``, ``2.``, etc. This removes the risk of breaking the numbering when adding new elements to the list and is easier to maintain." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:129 msgid "Avoid using implicit hyperlink targets and prefer internal hyperlink targets instead. Referencing the implicit target ``How to print quotations?`` is more prone to break than a reference to the explicit target ``_print_quotation`` which never appears in the rendered HTML and is thus even less likely to be modified." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:137 msgid "Prefix hyperlink targets with application names" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:139 msgid "As hyperlink targets are visible from the entire documentation when referenced with the ``ref`` markup, it is recommended to prefix the target name with that of the related application. For instance, naming a target ``_amazon/form`` instead of ``_form`` avoids unwanted behaviors and makes the purpose of the target clear." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:147 msgid "Don’t break hyperlink targets" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:149 msgid "When refactoring (improving without adding new content) section headings or hyperlink targets, take care not to break any hyperlink reference to these targets or update them accordingly." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:155 msgid "Use single-underscore suffixes for hyperlink references" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:160 msgid "Although using a double-underscore suffix works most of the time for classic hyperlink references, it is not recommended as double-underscores normally indicate an anonymous hyperlink reference. This is a special kind of hyperlink reference that makes use of nameless hyperlink targets consisting only of two underscore." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:162 msgid "tl;dr: Double-underscore suffixes work until they don’t and are bad practice, use single-underscore suffixes instead." msgstr ""