-
Notifications
You must be signed in to change notification settings - Fork 4
/
development.html
272 lines (231 loc) · 25.3 KB
/
development.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
<!DOCTYPE HTML>
<html lang="es" class="light" dir="ltr">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>Desarrollo - Aprende @lnp2pBot</title>
<!-- Custom HTML head -->
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff">
<link rel="icon" href="favicon.svg">
<link rel="shortcut icon" href="favicon.png">
<link rel="stylesheet" href="css/variables.css">
<link rel="stylesheet" href="css/general.css">
<link rel="stylesheet" href="css/chrome.css">
<link rel="stylesheet" href="css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="highlight.css">
<link rel="stylesheet" href="tomorrow-night.css">
<link rel="stylesheet" href="ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
<body class="sidebar-visible no-js">
<div id="body-container">
<!-- Provide site root to javascript -->
<script>
var path_to_root = "";
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "light";
</script>
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script>
try {
var theme = localStorage.getItem('mdbook-theme');
var sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<!-- Set the theme before any content is loaded, prevents flash -->
<script>
var theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('light')
html.classList.add(theme);
var body = document.querySelector('body');
body.classList.remove('no-js')
body.classList.add('js');
</script>
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
<!-- Hide / unhide sidebar before it is displayed -->
<script>
var body = document.querySelector('body');
var sidebar = null;
var sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
} else {
sidebar = 'hidden';
}
sidebar_toggle.checked = sidebar === 'visible';
body.classList.remove('sidebar-visible');
body.classList.add("sidebar-" + sidebar);
</script>
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<div class="sidebar-scrollbox">
<ol class="chapter"><li class="chapter-item expanded affix "><a href="index.html">@lnp2pBot</a></li><li class="chapter-item expanded "><a href="faq.html"><strong aria-hidden="true">1.</strong> FAQ</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="what-is-lnp2pbot.html"><strong aria-hidden="true">1.1.</strong> ¿Qué es lnp2pBot?</a></li><li class="chapter-item expanded "><a href="what-is-lightning-network.html"><strong aria-hidden="true">1.2.</strong> ¿Qué es Lightning Network?</a></li><li class="chapter-item expanded "><a href="what-do-i-need-to-use-lnp2pbot.html"><strong aria-hidden="true">1.3.</strong> ¿Qué necesito para usar @lnp2pBot?</a></li><li class="chapter-item expanded "><a href="how-do-i-initialize-the-bot.html"><strong aria-hidden="true">1.4.</strong> ¿Cómo inicializo el bot?</a></li><li class="chapter-item expanded "><a href="what-are-the-channels-to-make-exchanges-on-telegram.html"><strong aria-hidden="true">1.5.</strong> ¿Cuáles son los canales para realizar intercambios en telegram?</a></li><li class="chapter-item expanded "><a href="where-i-can-find-offers-for-my-local-currency.html"><strong aria-hidden="true">1.6.</strong> ¿Dónde puedo encontrar ofertas en mi moneda local?</a></li><li class="chapter-item expanded "><a href="do-i-need-to-fill-out-any-user-registration-or-identity-verification.html"><strong aria-hidden="true">1.7.</strong> ¿Necesito llenar algún registro de usuario o verificación de identidad?</a></li><li class="chapter-item expanded "><a href="what-type-of-information-do-you-collect-from-each-user.html"><strong aria-hidden="true">1.8.</strong> ¿Qué tipo de información recopilan de cada usuario?</a></li><li class="chapter-item expanded "><a href="how-does-the-user-reputation-system-work.html"><strong aria-hidden="true">1.9.</strong> ¿Cómo funciona el sistema de reputación de usuario?</a></li><li class="chapter-item expanded "><a href="how-do-i-create-a-sell-order.html"><strong aria-hidden="true">1.10.</strong> ¿Cómo creo una orden de venta?</a></li><li class="chapter-item expanded "><a href="how-do-i-create-a-buy-order.html"><strong aria-hidden="true">1.11.</strong> ¿Cómo creo una orden de compra?</a></li><li class="chapter-item expanded "><a href="how-do-i-find-and-accept-an-offer-to-buy-or-sell.html"><strong aria-hidden="true">1.12.</strong> ¿Cómo busco y acepto una oferta de compra o venta?</a></li><li class="chapter-item expanded "><a href="how-do-i-cancel-a-posted-order.html"><strong aria-hidden="true">1.13.</strong> ¿Cómo cancelo una orden publicada?</a></li><li class="chapter-item expanded "><a href="is-there-a-limit-on-the-amounts-i-can-trade.html"><strong aria-hidden="true">1.14.</strong> ¿Hay límites mínimos o máximos en las cantidades que puedo transar?</a></li><li class="chapter-item expanded "><a href="how-long-does-it-take-to-finalize-a-transaction.html"><strong aria-hidden="true">1.15.</strong> ¿Cuánto tiempo toma concretar una transacción?</a></li><li class="chapter-item expanded "><a href="fees-and-commissions.html"><strong aria-hidden="true">1.16.</strong> ¿Qué tarifas y comisiones debo pagar?</a></li><li class="chapter-item expanded "><a href="what-exchange-rate-does-the-bot-use.html"><strong aria-hidden="true">1.17.</strong> ¿Qué tasa de cambio utiliza el bot?</a></li><li class="chapter-item expanded "><a href="in-which-countries-is-it-available.html"><strong aria-hidden="true">1.18.</strong> ¿En qué países está disponible?</a></li><li class="chapter-item expanded "><a href="community-find.html"><strong aria-hidden="true">1.19.</strong> ¿Cómo puedo encontrar comunidades que operen con mi moneda?</a></li><li class="chapter-item expanded "><a href="how-do-i-make-offers-in-a-community.html"><strong aria-hidden="true">1.20.</strong> ¿Cómo publico ofertas en una comunidad?</a></li><li class="chapter-item expanded "><a href="recommended-wallets.html"><strong aria-hidden="true">1.21.</strong> Wallets recomendadas</a></li><li class="chapter-item expanded "><a href="common-problems-and-solutions.html"><strong aria-hidden="true">1.22.</strong> Problemas comunes y soluciones</a></li><li class="chapter-item expanded "><a href="how-do-i-know-if-seller-released.html"><strong aria-hidden="true">1.23.</strong> ¿Cómo sé si el vendedor realmente liberó los sats?</a></li><li class="chapter-item expanded "><a href="i-cant-receive.html"><strong aria-hidden="true">1.24.</strong> No he podido recibir los sats por mi compra</a></li><li class="chapter-item expanded "><a href="support.html"><strong aria-hidden="true">1.25.</strong> Soporte</a></li><li class="chapter-item expanded "><a href="contact-with-developers.html"><strong aria-hidden="true">1.26.</strong> Contacto con desarrolladores</a></li><li class="chapter-item expanded "><a href="i-am-a-developer-and-i-want-to-contribute.html"><strong aria-hidden="true">1.27.</strong> Soy desarrollador y quiero contribuir</a></li></ol></li><li class="chapter-item expanded "><a href="communities.html"><strong aria-hidden="true">2.</strong> Comunidades</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="trust.html"><strong aria-hidden="true">2.1.</strong> Confianza</a></li><li class="chapter-item expanded "><a href="benevolent-dictator.html"><strong aria-hidden="true">2.2.</strong> Dictador Benevolente</a></li><li class="chapter-item expanded "><a href="how-do-i-create-a-community.html"><strong aria-hidden="true">2.3.</strong> ¿Cómo creo una comunidad?</a></li><li class="chapter-item expanded "><a href="communities-first-steps.html"><strong aria-hidden="true">2.4.</strong> Manos a la obra. Comunidades, primeros pasos</a></li><li class="chapter-item expanded "><a href="modifying-a-community.html"><strong aria-hidden="true">2.5.</strong> Modificando una comunidad</a></li><li class="chapter-item expanded "><a href="creating-orders.html"><strong aria-hidden="true">2.6.</strong> Creando órdenes</a></li><li class="chapter-item expanded "><a href="incentives.html"><strong aria-hidden="true">2.7.</strong> Incentivos</a></li><li class="chapter-item expanded "><a href="managing-a-community.html"><strong aria-hidden="true">2.8.</strong> Administrando una comunidad</a></li><li class="chapter-item expanded "><a href="what-is-a-solver.html"><strong aria-hidden="true">2.9.</strong> ¿Qué es un Solver</a></li><li class="chapter-item expanded "><a href="resolving-disputes.html"><strong aria-hidden="true">2.10.</strong> Resolviendo disputas</a></li><li class="chapter-item expanded "><a href="settle-order.html"><strong aria-hidden="true">2.11.</strong> Completando una orden</a></li><li class="chapter-item expanded "><a href="cancel-order.html"><strong aria-hidden="true">2.12.</strong> Cancelando una orden</a></li><li class="chapter-item expanded "><a href="removing-disputes.html"><strong aria-hidden="true">2.13.</strong> Eliminando disputas</a></li><li class="chapter-item expanded "><a href="ban-user-community.html"><strong aria-hidden="true">2.14.</strong> Expulsar a un usuario de la comunidad</a></li></ol></li><li class="chapter-item expanded "><a href="safe-trades-on-lnp2pbot.html"><strong aria-hidden="true">3.</strong> Intercambios seguros en @lnp2pbot</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="scam-attempts.html"><strong aria-hidden="true">3.1.</strong> Intentos de estafas</a></li><li class="chapter-item expanded "><a href="tips-to-avoid-scams.html"><strong aria-hidden="true">3.2.</strong> Consejos para evitar estafas</a></li><li class="chapter-item expanded "><a href="account-triangulation-scams.html"><strong aria-hidden="true">3.3.</strong> Estafas por triangulación de cuentas o estafas puente</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="prevention-of-account-triangulation-scams.html"><strong aria-hidden="true">3.3.1.</strong> Prevención de estafas puente</a></li></ol></li></ol></li><li class="chapter-item expanded "><a href="contribute.html"><strong aria-hidden="true">4.</strong> Cómo colaborar</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="how-translate-the-bot.html"><strong aria-hidden="true">4.1.</strong> Cómo traducir el bot</a></li><li class="chapter-item expanded "><a href="how-colaborate-with-documentation-translation.html"><strong aria-hidden="true">4.2.</strong> Cómo traducir y colaborar con la documentación</a></li><li class="chapter-item expanded "><a href="development.html" class="active"><strong aria-hidden="true">4.3.</strong> Desarrollo</a></li><li class="chapter-item expanded "><a href="bugs-report.html"><strong aria-hidden="true">4.4.</strong> Reportar errores</a></li><li class="chapter-item expanded "><a href="improvement-propose.html"><strong aria-hidden="true">4.5.</strong> Proponer mejoras</a></li></ol></li></ol>
</div>
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
<div class="sidebar-resize-indicator"></div>
</div>
</nav>
<!-- Track and set sidebar scroll position -->
<script>
var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox');
sidebarScrollbox.addEventListener('click', function(e) {
if (e.target.tagName === 'A') {
sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop);
}
}, { passive: true });
var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll');
sessionStorage.removeItem('sidebar-scroll');
if (sidebarScrollTop) {
// preserve sidebar scroll position when navigating via links within sidebar
sidebarScrollbox.scrollTop = sidebarScrollTop;
} else {
// scroll sidebar to current active section when navigating via "next/previous chapter" buttons
var activeSection = document.querySelector('#sidebar .active');
if (activeSection) {
activeSection.scrollIntoView({ block: 'center' });
}
}
</script>
<div id="page-wrapper" class="page-wrapper">
<div class="page">
<div id="menu-bar-hover-placeholder"></div>
<div id="menu-bar" class="menu-bar sticky">
<div class="left-buttons">
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
<i class="fa fa-bars"></i>
</label>
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
<i class="fa fa-paint-brush"></i>
</button>
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
</ul>
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
<i class="fa fa-search"></i>
</button>
</div>
<h1 class="menu-title">Aprende @lnp2pBot</h1>
<div class="right-buttons">
<a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i>
</a>
</div>
</div>
<div id="search-wrapper" class="hidden">
<form id="searchbar-outer" class="searchbar-outer">
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
</form>
<div id="searchresults-outer" class="searchresults-outer hidden">
<div id="searchresults-header" class="searchresults-header"></div>
<ul id="searchresults">
</ul>
</div>
</div>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script>
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="content" class="content">
<main>
<h1 id="desarrollo"><a class="header" href="#desarrollo">Desarrollo</a></h1>
<p><em>Esta guía se basa en la <a href="https://github.com/bisq-network/bisq/blob/master/CONTRIBUTING.md">guía de contribución de Bisq</a>.</em></p>
<p>Cualquiera es bienvenido a contribuir con <a href="https://t.me/lnp2pBot">lnp2pBot</a>. Si estás buscando por dónde empezar, echa un vistazo a la <a href="https://github.com/grunch/p2plnbot/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22">lista de buenos primeros problemas</a>.</p>
<h3 id="canales-de-comunicación"><a class="header" href="#canales-de-comunicación">Canales de Comunicación</a></h3>
<p>La mayoría de la comunicación sobre <a href="https://t.me/lnp2pBot">lnp2pBot</a> ocurre en el <a href="https://t.me/lnp2pbotHelp">grupo de Telegram</a>. La discusión sobre cambios de código ocurre en los <a href="https://github.com/lnp2pBot/bot/issues">problemas</a> y <a href="https://github.com/lnp2pBot/bot/pulls">solicitudes de extracción</a> de GitHub.</p>
<h3 id="flujo-de-trabajo-del-contribuidor"><a class="header" href="#flujo-de-trabajo-del-contribuidor">Flujo de Trabajo del Contribuidor</a></h3>
<p>Todos los contribuidores de <a href="https://t.me/lnp2pBot">lnp2pBot</a> envían cambios a través de solicitudes de extracción. El flujo de trabajo es el siguiente:</p>
<ul>
<li>Hacer un <em>fork</em> del repositorio.</li>
<li>Crear una rama temática a partir de la rama <code>main</code>.</li>
<li>Hacer <em>commits</em> de los parches.</li>
<li>Unificar <em>commits</em> redundantes o innecesarios.</li>
<li>Enviar una solicitud de extracción desde la rama de tu tema a la rama <code>main</code> del repositorio principal</li>
<li>Realizar cambios en la solicitud de extracción si los revisores lo solicitan y solicitar una revisión.</li>
</ul>
<p>Las solicitudes de extracción deben centrarse en un único cambio. No mezcles, por ejemplo, refactorizaciones con una corrección de errores o la implementación de una nueva característica. Esta práctica facilita que los demás contribuidores revisen cada solicitud de extracción.</p>
<h3 id="revisión-de-solicitudes-de-extracción"><a class="header" href="#revisión-de-solicitudes-de-extracción">Revisión de Solicitudes de Extracción</a></h3>
<p><a href="https://t.me/lnp2pBot">lnp2pBot</a> sigue el flujo de trabajo de revisión establecido por el proyecto Bitcoin Core. Lo siguiente está adaptado de la <a href="https://github.com/bitcoin/bitcoin/blob/master/CONTRIBUTING.md#peer-review">documentación para contribuidores de Bitcoin Core</a>:</p>
<p>Cualquiera puede participar en la revisión de pares, que se expresa mediante comentarios en la solicitud de extracción. Generalmente, los revisores revisarán el código en busca de errores obvios, además de probar el conjunto de parches y opinar sobre los méritos técnicos del parche. Los mantenedores del proyecto tienen en cuenta la revisión de pares al determinar si hay consenso para fusionar una solicitud de extracción (recuerda que las discusiones pueden haberse dispersado en GitHub y Telegram). El siguiente lenguaje se usa dentro de los comentarios de la solicitud de extracción:</p>
<p><code>ACK</code> significa "He probado el código y estoy de acuerdo en que debería fusionarse"<br />
<code>NACK</code> significa "Discrepo en que esto deba fusionarse" y debe ir acompañado de una justificación técnica sólida. Los NACKs sin justificación acompañante pueden ser ignorados<br />
<code>utACK</code> significa "No he probado el código, pero lo he revisado y parece estar bien, estoy de acuerdo en que puede fusionarse"<br />
<code>Concept ACK</code>significa "Estoy de acuerdo en el principio general de esta solicitud de extracción"<br />
<code>Nit</code> se refiere a problemas triviales, a menudo no bloqueantes.</p>
<p>Ten en cuenta que las solicitudes de extracción marcadas como <code>NACK</code> y/o <code>Change requested</code> en GitHub se cierran después de 30 días si no se abordan.</p>
<h3 id="convenciones-de-estilo-y-codificación"><a class="header" href="#convenciones-de-estilo-y-codificación">Convenciones de estilo y codificación</a></h3>
<h4 id="estándares-de-codificación"><a class="header" href="#estándares-de-codificación">Estándares de codificación</a></h4>
<p>Seguimos la <a href="https://github.com/airbnb/javascript">guía de estilo de JavaScript de Airbnb</a> para tener un código más limpio.</p>
<h4 id="configurar-el-nombre-de-usuario-y-correo-electrónico-de-git"><a class="header" href="#configurar-el-nombre-de-usuario-y-correo-electrónico-de-git">Configurar el nombre de usuario y correo electrónico de Git</a></h4>
<p>Consulta <a href="https://help.github.com/articles/setting-your-username-in-git/">https://help.github.com/articles/setting-your-username-in-git/</a> para obtener instrucciones.</p>
<h4 id="escribir-mensajes-de-confirmación-bien-formados"><a class="header" href="#escribir-mensajes-de-confirmación-bien-formados">Escribir mensajes de confirmación bien formados</a></h4>
<p>Desde <a href="https://chris.beams.io/posts/git-commit/#seven-rules">https://chris.beams.io/posts/git-commit/#seven-rules</a>:</p>
<ul>
<li>Separar el asunto del cuerpo con una línea en blanco</li>
<li>Limitar la línea de asunto a 50 caracteres (*)</li>
<li>Poner en mayúscula la línea de asunto</li>
<li>No terminar la línea de asunto con un punto</li>
<li>Usar el modo imperativo en la línea de asunto</li>
<li>Envolver el cuerpo en 72 caracteres (*)</li>
<li>Usar el cuerpo para explicar el qué y el porqué frente al cómo</li>
</ul>
<h4 id="firmar-tus-commits-con-gpg"><a class="header" href="#firmar-tus-commits-con-gpg">Firmar tus commits con GPG</a></h4>
<p>Consulta <a href="https://github.com/blog/2144-gpg-signature-verification">https://github.com/blog/2144-gpg-signature-verification</a> para obtener antecedentes y <a href="https://help.github.com/articles/signing-commits-with-gpg/">https://help.github.com/articles/signing-commits-with-gpg/</a> para obtener instrucciones.</p>
<h4 id="mantener-limpio-el-historial-de-git"><a class="header" href="#mantener-limpio-el-historial-de-git">Mantener limpio el historial de Git</a></h4>
<p>Es muy importante mantener el historial de git claro, ligero y fácilmente navegable. Esto significa que los contribuyentes deben asegurarse de que sus solicitudes de extracción incluyan solo confirmaciones significativas (si son redundantes o se agregaron después de una revisión, deben eliminarse) y no incluir <em>ninguna confirmación de fusión</em>.</p>
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<a rel="prev" href="how-colaborate-with-documentation-translation.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next prefetch" href="bugs-report.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
<div style="clear: both"></div>
</nav>
</div>
</div>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
<a rel="prev" href="how-colaborate-with-documentation-translation.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next prefetch" href="bugs-report.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
</nav>
</div>
<script>
window.playground_copyable = true;
</script>
<script src="elasticlunr.min.js"></script>
<script src="mark.min.js"></script>
<script src="searcher.js"></script>
<script src="clipboard.min.js"></script>
<script src="highlight.js"></script>
<script src="book.js"></script>
<!-- Custom JS scripts -->
</div>
</body>
</html>