;After installing the extension, adjust it to your needs by clickingits icon in the extensions menu to access the options page. This is because features other than infinite scroll are disabled by default.
Después de instalar la extensión, ajústala a tus necesidades haciendo clic en su icono en el menú de extensiones para acceder a la página de opciones. Esto es porque todas las funciones exceptuando el scroll infinito están desactivadas por defecto.

;You can see a list of all the enhancements here: https://gerrit.avm99963.com/plugins/gitiles/infinitegforums/+/HEAD/docs/features.md
Puedes ver una lista con todas las mejoras aquí: https://gerrit.avm99963.com/plugins/gitiles/infinitegforums/+/HEAD/docs/features.es.md

;New additions in future updates will be disabled by default, and can be manually enabled in the options page. Join https://groups.google.com/g/twpowertools-discuss to receive updates about new functionality.
Las nuevas mejoras que se añadan en actualizaciones futuras vendrán desactivadas por defecto, las puedes activar manualmente yendo a la página de opciones. Únete a https://groups.google.com/g/twpowertools-discuss para recibir actualizaciones sobre nueva funcionalidad.

;The source code is available here: https://gerrit.avm99963.com/plugins/gitiles/infinitegforums. Contributions are welcome!
El código fuente está disponible aquí: https://gerrit.avm99963.com/plugins/gitiles/infinitegforums. ¡Cualquier contribución es bienvenida!

;Help translate the extension to your native language! Visit https://avm99963-pontoon.herokuapp.com/projects/tw-power-tools/
¡Ayuda a traducir la extensión a tu idioma nativo! Visita https://avm99963-pontoon.herokuapp.com/projects/tw-power-tools/
