CINXE.COM

Continuous localization - Weblate 5.9 documentation

<!doctype html> <html class="no-js" lang="en" data-content_root="../"> <head><meta charset="utf-8"/> <meta name="viewport" content="width=device-width,initial-scale=1"/> <meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta property="og:title" content="Continuous localization" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://docs.weblate.org/en/latest/admin/continuous.html" /> <meta property="og:site_name" content="Weblate" /> <meta property="og:description" content="There is infrastructure in place so that your translation closely follows development. This way translators can work on translations the entire time, instead of working through huge amount of new t..." /> <meta property="og:image:width" content="1146" /> <meta property="og:image:height" content="600" /> <meta property="og:image" content="https://docs.weblate.org/en/latest/_images/social_previews/summary_admin_continuous_f1fd5da0.png" /> <meta property="og:image:alt" content="There is infrastructure in place so that your translation closely follows development. This way translators can work on translations the entire time, instead..." /> <meta name="description" content="There is infrastructure in place so that your translation closely follows development. This way translators can work on translations the entire time, instead of working through huge amount of new t..." /> <meta name="twitter:card" content="summary_large_image" /> <meta property="fb:app_id" content="741121112629028" /> <meta property="fb:page_id" content="371217713079025" /> <meta name="twitter:site" content="@WeblateOrg" /> <link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="Licensing translations" href="licensing.html" /><link rel="prev" title="Language definitions" href="languages.html" /> <link rel="canonical" href="https://docs.weblate.org/en/latest/admin/continuous.html" /> <!-- Generated with Sphinx 8.1.3 and Furo 2024.08.06 --> <title>Continuous localization - Weblate 5.9 documentation</title> <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a746c00c" /> <link rel="stylesheet" type="text/css" href="../_static/styles/furo.css?v=354aac6f" /> <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" /> <link rel="stylesheet" type="text/css" href="../_static/styles/furo-extensions.css?v=302659d7" /> <link rel="stylesheet" type="text/css" href="https://s.weblate.org/cdn/font-source/source-sans-3.css" /> <link rel="stylesheet" type="text/css" href="https://s.weblate.org/cdn/font-source/source-code-pro.css" /> <style> body { --color-code-background: #f8f8f8; --color-code-foreground: black; --font-stack: "Source Sans 3", sans-serif; --font-stack--monospace: "Source Code Pro", monospace; --color-brand-primary: #1fa385; --color-brand-content: #1fa385; } @media not print { body[data-theme="dark"] { --color-code-background: #202020; --color-code-foreground: #d0d0d0; --font-stack: "Source Sans 3", sans-serif; --font-stack--monospace: "Source Code Pro", monospace; --color-brand-primary: #1fa385; --color-brand-content: #1fa385; } @media (prefers-color-scheme: dark) { body:not([data-theme="light"]) { --color-code-background: #202020; --color-code-foreground: #d0d0d0; --font-stack: "Source Sans 3", sans-serif; --font-stack--monospace: "Source Code Pro", monospace; --color-brand-primary: #1fa385; --color-brand-content: #1fa385; } } } </style><script async type="text/javascript" src="/_/static/javascript/readthedocs-addons.js"></script><meta name="readthedocs-project-slug" content="weblate" /><meta name="readthedocs-version-slug" content="latest" /><meta name="readthedocs-resolver-filename" content="/admin/continuous.html" /><meta name="readthedocs-http-status" content="200" /></head> <body> <script> document.body.dataset.theme = localStorage.getItem("theme") || "auto"; </script> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol id="svg-toc" viewBox="0 0 24 24"> <title>Contents</title> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024"> <path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line> <line x1="3" y1="6" x2="21" y2="6"></line> <line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <symbol id="svg-sun" viewBox="0 0 24 24"> <title>Light mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun"> <circle cx="12" cy="12" r="5"></circle> <line x1="12" y1="1" x2="12" y2="3"></line> <line x1="12" y1="21" x2="12" y2="23"></line> <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> <line x1="1" y1="12" x2="3" y2="12"></line> <line x1="21" y1="12" x2="23" y2="12"></line> <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> </svg> </symbol> <symbol id="svg-moon" viewBox="0 0 24 24"> <title>Dark mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon"> <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" /> </svg> </symbol> <symbol id="svg-sun-with-moon" viewBox="0 0 24 24"> <title>Auto light/dark, in light mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-custom-derived-from-feather-sun-and-tabler-moon"> <path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/> <line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/> <line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/> <line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/> <line x1="19" y1="14.05" x2="20.414" y2="15.464"/> <line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/> <line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/> <line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/> <line x1="19" y1="5.05" x2="20.414" y2="3.636"/> <circle cx="14.5" cy="9.55" r="3.6"/> </svg> </symbol> <symbol id="svg-moon-with-sun" viewBox="0 0 24 24"> <title>Auto light/dark, in dark mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-custom-derived-from-feather-sun-and-tabler-moon"> <path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/> <line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/> <line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/> <line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/> <line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/> <line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/> <line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/> <line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/> <line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/> <circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/> </svg> </symbol> <symbol id="svg-pencil" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code"> <path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" /> <path d="M13.5 6.5l4 4" /> <path d="M20 21l2 -2l-2 -2" /> <path d="M17 17l-2 2l2 2" /> </svg> </symbol> <symbol id="svg-eye" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code"> <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" /> <path d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" /> <path d="M20 21l2 -2l-2 -2" /> <path d="M17 17l-2 2l2 2" /> </svg> </symbol> </svg> <input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation"> <input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc"> <label class="overlay sidebar-overlay" for="__navigation"> <div class="visually-hidden">Hide navigation sidebar</div> </label> <label class="overlay toc-overlay" for="__toc"> <div class="visually-hidden">Hide table of contents sidebar</div> </label> <a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a> <div class="page"> <header class="mobile-header"> <div class="header-left"> <label class="nav-overlay-icon" for="__navigation"> <div class="visually-hidden">Toggle site navigation sidebar</div> <i class="icon"><svg><use href="#svg-menu"></use></svg></i> </label> </div> <div class="header-center"> <a href="../index.html"><div class="brand">Weblate 5.9 documentation</div></a> </div> <div class="header-right"> <div class="theme-toggle-container theme-toggle-header"> <button class="theme-toggle"> <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg> <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg> <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> </button> </div> <label class="toc-overlay-icon toc-header-icon" for="__toc"> <div class="visually-hidden">Toggle table of contents sidebar</div> <i class="icon"><svg><use href="#svg-toc"></use></svg></i> </label> </div> </header> <aside class="sidebar-drawer"> <div class="sidebar-container"> <div class="sidebar-sticky"><a class="sidebar-brand" href="../index.html"> <div class="sidebar-logo-container"> <img class="sidebar-logo" src="../_static/logo-128.png" alt="Logo"/> </div> <span class="sidebar-brand-text">Weblate 5.9 documentation</span> </a><form class="sidebar-search-container" method="get" action="../search.html" role="search"> <input class="sidebar-search" placeholder="Search" name="q" aria-label="Search"> <input type="hidden" name="check_keywords" value="yes"> <input type="hidden" name="area" value="default"> </form> <div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree"> <p class="caption" role="heading"><span class="caption-text">User docs</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../user/basic.html">Weblate basics</a></li> <li class="toctree-l1"><a class="reference internal" href="../user/profile.html">Registration and user profile</a></li> <li class="toctree-l1"><a class="reference internal" href="../user/translating.html">Translating using Weblate</a></li> <li class="toctree-l1"><a class="reference internal" href="../user/files.html">Downloading and uploading translations</a></li> <li class="toctree-l1"><a class="reference internal" href="../user/glossary.html">Glossary</a></li> <li class="toctree-l1"><a class="reference internal" href="../user/checks.html">Checks and fixups</a></li> <li class="toctree-l1"><a class="reference internal" href="../user/search.html">Searching</a></li> <li class="toctree-l1"><a class="reference internal" href="../workflows.html">Translation workflows</a></li> <li class="toctree-l1"><a class="reference internal" href="../faq.html">Frequently Asked Questions</a></li> <li class="toctree-l1 has-children"><a class="reference internal" href="../formats.html">Supported file formats</a><input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><div class="visually-hidden">Toggle navigation of Supported file formats</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2"><a class="reference internal" href="../formats/android.html">Android string resources</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/apple.html">Apple iOS strings</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/appstore.html">App store metadata files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/arb.html">ARB File</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/csv.html">CSV files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/dtd.html">DTD files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/excel.html">Excel Open XML</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/flatxml.html">Flat XML files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/fluent.html">Fluent format</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/formatjs.html">Format.JS JSON file</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/gettext.html">GNU gettext PO (Portable Object)</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/go-i18n.html">go-i18n JSON files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/gotext.html">gotext JSON files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/gwt.html">GWT properties</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/html.html">HTML files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/i18next.html">i18next JSON files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/idml.html">IDML Format</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/ini.html">INI translations</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/innosetup.html">Inno Setup INI translations</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/java.html">Java properties</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/joomla.html">Joomla translations</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/json.html">JSON files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/laravel.html">Laravel PHP strings</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/markdown.html">Markdown files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/mi18n.html">draggable/i18n lang files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/moko.html">Mobile Kotlin resources</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/odf.html">OpenDocument Format</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/php.html">PHP strings</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/qt.html">Qt Linguist .ts</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/resourcedict.html">ResourceDictionary files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/resx.html">.NET resource files (RESX, RESW)</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/ruby.html">Ruby YAML files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/stringsdict.html">Stringsdict format</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/subtitles.html">Subtitle files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/tbx.html">TermBase eXchange format</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/txt.html">Text files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/webextension.html">WebExtension JSON</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/winrc.html">Windows RC files</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/xliff.html">XLIFF</a></li> <li class="toctree-l2"><a class="reference internal" href="../formats/yaml.html">YAML files</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="../vcs.html">Version control integration</a></li> <li class="toctree-l1"><a class="reference internal" href="../api.html">Weblate’s REST API</a></li> <li class="toctree-l1"><a class="reference internal" href="../wlc.html">Weblate Client</a></li> <li class="toctree-l1"><a class="reference internal" href="../python.html">Weblate’s Python API</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Administrator docs</span></p> <ul class="current"> <li class="toctree-l1 has-children"><a class="reference internal" href="install.html">Configuration instructions</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle navigation of Configuration instructions</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2"><a class="reference internal" href="install/docker.html">Installing using Docker</a></li> <li class="toctree-l2"><a class="reference internal" href="install/venv-debian.html">Installing on Debian and Ubuntu</a></li> <li class="toctree-l2"><a class="reference internal" href="install/venv-suse.html">Installing on SUSE and openSUSE</a></li> <li class="toctree-l2"><a class="reference internal" href="install/venv-redhat.html">Installing on RedHat, Fedora and CentOS</a></li> <li class="toctree-l2"><a class="reference internal" href="install/venv-macos.html">Installing on macOS</a></li> <li class="toctree-l2"><a class="reference internal" href="install/source.html">Installing from sources</a></li> <li class="toctree-l2"><a class="reference internal" href="install/openshift.html">Installing on OpenShift</a></li> <li class="toctree-l2"><a class="reference internal" href="install/kubernetes.html">Installing on Kubernetes</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="deployments.html">Weblate deployments</a></li> <li class="toctree-l1"><a class="reference internal" href="upgrade.html">Upgrading Weblate</a></li> <li class="toctree-l1"><a class="reference internal" href="backup.html">Backing up and moving Weblate</a></li> <li class="toctree-l1"><a class="reference internal" href="auth.html">Authentication</a></li> <li class="toctree-l1"><a class="reference internal" href="auth.html#two-factor-authentication">Two-factor authentication</a></li> <li class="toctree-l1"><a class="reference internal" href="access.html">Access control</a></li> <li class="toctree-l1"><a class="reference internal" href="projects.html">Translation projects</a></li> <li class="toctree-l1"><a class="reference internal" href="languages.html">Language definitions</a></li> <li class="toctree-l1 current current-page"><a class="current reference internal" href="#">Continuous localization</a></li> <li class="toctree-l1"><a class="reference internal" href="licensing.html">Licensing translations</a></li> <li class="toctree-l1"><a class="reference internal" href="translating.html">Translation process</a></li> <li class="toctree-l1"><a class="reference internal" href="checks.html">Checks and fixups</a></li> <li class="toctree-l1"><a class="reference internal" href="machine.html">Automatic suggestions</a></li> <li class="toctree-l1"><a class="reference internal" href="addons.html">Add-ons</a></li> <li class="toctree-l1"><a class="reference internal" href="memory.html">Translation Memory</a></li> <li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li> <li class="toctree-l1"><a class="reference internal" href="sample.html">Sample configuration</a></li> <li class="toctree-l1"><a class="reference internal" href="management.html">Management commands</a></li> <li class="toctree-l1"><a class="reference internal" href="announcements.html">Announcements</a></li> <li class="toctree-l1"><a class="reference internal" href="componentlists.html">Component Lists</a></li> <li class="toctree-l1"><a class="reference internal" href="optionals.html">Optional Weblate modules</a></li> <li class="toctree-l1"><a class="reference internal" href="customize.html">Customizing Weblate</a></li> <li class="toctree-l1"><a class="reference internal" href="admin.html">Management interface</a></li> <li class="toctree-l1"><a class="reference internal" href="support.html">Getting support for Weblate</a></li> <li class="toctree-l1"><a class="reference internal" href="../legal.html">Legal documents</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Application developer guide</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../devel/starting.html">Starting with internationalization</a></li> <li class="toctree-l1"><a class="reference internal" href="../devel/integration.html">Integrating with Weblate</a></li> <li class="toctree-l1"><a class="reference internal" href="../devel/gettext.html">Translating software using GNU gettext</a></li> <li class="toctree-l1"><a class="reference internal" href="../devel/sphinx.html">Translating documentation using Sphinx</a></li> <li class="toctree-l1"><a class="reference internal" href="../devel/html.html">Translating HTML and JavaScript using Weblate CDN</a></li> <li class="toctree-l1"><a class="reference internal" href="../devel/thirdparty.html">Localization libraries and packages</a></li> <li class="toctree-l1"><a class="reference internal" href="../devel/alerts.html">Translation component alerts</a></li> <li class="toctree-l1"><a class="reference internal" href="../devel/community.html">Building a translators community</a></li> <li class="toctree-l1"><a class="reference internal" href="../devel/translations.html">Managing translations</a></li> <li class="toctree-l1"><a class="reference internal" href="../devel/review.html">Reviewing strings</a></li> <li class="toctree-l1"><a class="reference internal" href="../devel/share.html">Promoting the translation</a></li> <li class="toctree-l1"><a class="reference internal" href="../devel/reporting.html">Translation progress reporting</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Contributor docs</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../contributing/index.html">Contributing to Weblate</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/communication.html">Weblate Contributor Communication Guidelines</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/start.html">Starting contributing code to Weblate</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/code.html">Weblate source code</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/debugging.html">Debugging Weblate</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/internals.html">Weblate internals</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/addons.html">Developing add-ons</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/frontend.html">Weblate frontend</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/issues.html">Reporting issues in Weblate</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/tests.html">Weblate testsuite and continuous integration</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/schemas.html">Data schemas</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/release.html">Releasing Weblate</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/security.html">Security and privacy</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/modules.html">Contributing to Weblate modules</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/about.html">About Weblate</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/license.html">License</a></li> <li class="toctree-l1"><a class="reference internal" href="../contributing/trademark.html">Weblate Trademark Guidelines</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Change history</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../changes.html">Weblate 5.9</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-8-4">Weblate 5.8.4</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-8-3">Weblate 5.8.3</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-8-2">Weblate 5.8.2</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-8-1">Weblate 5.8.1</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-8">Weblate 5.8</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-7-2">Weblate 5.7.2</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-7-1">Weblate 5.7.1</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-7">Weblate 5.7</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-6-2">Weblate 5.6.2</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-6-1">Weblate 5.6.1</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-6">Weblate 5.6</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-5-5">Weblate 5.5.5</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-5-4">Weblate 5.5.4</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-5-3">Weblate 5.5.3</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-5-2">Weblate 5.5.2</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-5-1">Weblate 5.5.1</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-5">Weblate 5.5</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-4-3">Weblate 5.4.3</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-4-2">Weblate 5.4.2</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-4-1">Weblate 5.4.1</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-4">Weblate 5.4</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-3-1">Weblate 5.3.1</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-3">Weblate 5.3</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-2-1">Weblate 5.2.1</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-2">Weblate 5.2</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-1-1">Weblate 5.1.1</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-1">Weblate 5.1</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-0-2">Weblate 5.0.2</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-0-1">Weblate 5.0.1</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes.html#weblate-5-0">Weblate 5.0</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes/v4.html">Weblate 4.x series</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes/v3.html">Weblate 3.x series</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes/v2.html">Weblate 2.x series</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes/v1.html">Weblate 1.x series</a></li> <li class="toctree-l1"><a class="reference internal" href="../changes/v0.html">Weblate 0.x series</a></li> </ul> </div> <div id="furo-sidebar-ad-placement" class="flat" data-ea-publisher="readthedocs" data-ea-type="readthedocs-sidebar" data-ea-manual="true" ></div> </div> </div> </div> </aside> <div class="main"> <div class="content"> <div class="article-container"> <a href="#" class="back-to-top muted-link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path> </svg> <span>Back to top</span> </a> <div class="content-icon-container"> <div class="view-this-page"> <a class="muted-link" href="https://github.com/WeblateOrg/weblate/blob/main/docs/admin/continuous.rst?plain=true" title="View this page"> <svg><use href="#svg-eye"></use></svg> <span class="visually-hidden">View this page</span> </a> </div><div class="edit-this-page"> <a class="muted-link" href="https://github.com/WeblateOrg/weblate/edit/main/docs/admin/continuous.rst" title="Edit this page"> <svg><use href="#svg-pencil"></use></svg> <span class="visually-hidden">Edit this page</span> </a> </div><div class="theme-toggle-container theme-toggle-content"> <button class="theme-toggle"> <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg> <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg> <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> </button> </div> <label class="toc-overlay-icon toc-content-icon" for="__toc"> <div class="visually-hidden">Toggle table of contents sidebar</div> <i class="icon"><svg><use href="#svg-toc"></use></svg></i> </label> </div> <article role="main" id="furo-main-content"> <section id="continuous-localization"> <span id="continuous-translation"></span><h1>Continuous localization<a class="headerlink" href="#continuous-localization" title="Link to this heading">¶</a></h1> <p>There is infrastructure in place so that your translation closely follows development. This way translators can work on translations the entire time, instead of working through huge amount of new text just prior to release.</p> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference internal" href="../devel/integration.html"><span class="doc">Integrating with Weblate</span></a> describes basic ways to integrate your development with Weblate.</p> </div> <p>This is the process:</p> <ol class="arabic simple"> <li><p>Developers make changes and push them to the VCS repository.</p></li> <li><p>Optionally the translation files are updated, see <a class="reference internal" href="../devel/integration.html#translations-update"><span class="std std-ref">Introducing new strings</span></a>.</p></li> <li><p>Weblate pulls changes from the VCS repository, parses translation files and updates its database, see <a class="reference internal" href="#update-vcs"><span class="std std-ref">Updating repositories</span></a>.</p></li> <li><p>Translators submit translations using the Weblate web interface, or upload offline changes.</p></li> <li><p>Once the translators are finished, Weblate commits the changes to the local repository (see <a class="reference internal" href="#lazy-commit"><span class="std std-ref">Lazy commits</span></a>).</p></li> <li><p>Changes are pushed back to the upstream repository (see <a class="reference internal" href="#push-changes"><span class="std std-ref">Pushing changes from Weblate</span></a>).</p></li> </ol> <div class="graphviz"><object data="../_images/graphviz-a09d5c5363537498f0a022ea9179c5569a46155b.svg" type="image/svg+xml" class="graphviz"> <p class="warning">digraph translations { graph [fontname = &quot;sans-serif&quot;, fontsize=10, ranksep=0.6, newrank=true]; node [fontname = &quot;sans-serif&quot;, fontsize=10, margin=0.15]; edge [fontname = &quot;sans-serif&quot;, fontsize=10]; subgraph cluster_codehosting { rank=same; graph [color=lightgrey, label=&quot;Upstream code hosting&quot;, style=filled ]; &quot;VCS repository&quot; [shape=cylinder]; } subgraph cluster_weblate { rank=same; graph [color=lightgrey, label=&quot;Weblate&quot;, style=filled ]; repo [label=&quot;Weblate repository&quot;, shape=cylinder]; database [label=Database, shape=cylinder]; } &quot;Developers&quot; [shape=box, fillcolor=&quot;#144d3f&quot;, fontcolor=white, style=filled]; &quot;Translators&quot; [shape=box, fillcolor=&quot;#144d3f&quot;, fontcolor=white, style=filled]; &quot;Developers&quot; -&gt; &quot;VCS repository&quot; [label=&quot; 1. Push &quot;]; &quot;VCS repository&quot; -&gt; &quot;VCS repository&quot; [label=&quot; 2. Updating translations &quot;, style=dotted]; &quot;VCS repository&quot; -&gt; repo [label=&quot; 3. Pull &quot;]; repo -&gt; database [label=&quot; 3. Parse translations &quot;]; &quot;database&quot; -&gt; repo [label=&quot; 5. Commit changes &quot;]; &quot;Translators&quot; -&gt; &quot;database&quot; [label=&quot; 4. Translate &quot;]; &quot;repo&quot; -&gt; &quot;VCS repository&quot; [label=&quot; 6. Push repository &quot;]; }</p></object></div> <div class="admonition hint"> <p class="admonition-title">Hint</p> <p>Upstream code hosting is not necessary, you can use Weblate with <a class="reference internal" href="../vcs.html#vcs-local"><span class="std std-ref">Local files</span></a> where there is only the repository inside Weblate.</p> </div> <section id="updating-repositories"> <span id="update-vcs"></span><h2>Updating repositories<a class="headerlink" href="#updating-repositories" title="Link to this heading">¶</a></h2> <p>You should set up some way of updating backend repositories from their source.</p> <ul> <li><p>Use <a class="reference internal" href="../api.html#hooks"><span class="std std-ref">Notification hooks</span></a> to integrate with most of common code hosting services:</p> <ul class="simple"> <li><p><a class="reference internal" href="#github-setup"><span class="std std-ref">Automatically receiving changes from GitHub</span></a></p></li> <li><p><a class="reference internal" href="#gitlab-setup"><span class="std std-ref">Automatically receiving changes from GitLab</span></a></p></li> <li><p><a class="reference internal" href="#bitbucket-setup"><span class="std std-ref">Automatically receiving changes from Bitbucket</span></a></p></li> <li><p><a class="reference internal" href="#pagure-setup"><span class="std std-ref">Automatically receiving changes from Pagure</span></a></p></li> <li><p><a class="reference internal" href="#azure-setup"><span class="std std-ref">Automatically receiving changes from Azure Repos</span></a></p></li> <li><p><a class="reference internal" href="#gitea-setup"><span class="std std-ref">Automatically receiving changes from Gitea Repos</span></a></p></li> </ul> <p>You must also <a class="reference internal" href="projects.html#project-enable-hooks"><span class="std std-ref">Enable hooks</span></a> for this to work.</p> </li> <li><p>Manually trigger update either in the repository management or using <a class="reference internal" href="../api.html#api"><span class="std std-ref">Weblate’s REST API</span></a> or <a class="reference internal" href="../wlc.html#wlc"><span class="std std-ref">Weblate Client</span></a></p></li> <li><p>Enable <a class="reference internal" href="config.html#std-setting-AUTO_UPDATE"><code class="xref std std-setting docutils literal notranslate"><span class="pre">AUTO_UPDATE</span></code></a> to automatically update all components on your Weblate instance</p></li> <li><p>Execute <a class="reference internal" href="management.html#weblate-admin-updategit"><code class="xref std std-wladmin docutils literal notranslate"><span class="pre">updategit</span></code></a> (with selection of project or <code class="docutils literal notranslate"><span class="pre">--all</span></code> to update all)</p></li> </ul> <p>Whenever Weblate updates the repository, the post-update addons will be triggered, see <a class="reference internal" href="addons.html#addons"><span class="std std-ref">Add-ons</span></a>.</p> <section id="avoiding-merge-conflicts"> <span id="avoid-merge-conflicts"></span><h3>Avoiding merge conflicts<a class="headerlink" href="#avoiding-merge-conflicts" title="Link to this heading">¶</a></h3> <p>The merge conflicts from Weblate arise when same file was changed both in Weblate and outside it. There are two approaches to deal with that - avoid edits outside Weblate or integrate Weblate into your updating process, so that it flushes changes prior to updating the files outside Weblate.</p> <p>The first approach is easy with monolingual files — you can add new strings within Weblate and leave whole editing of the files there. For bilingual files, there is usually some kind of message extraction process to generate translatable files from the source code. In some cases this can be split into two parts - one for the extraction generates template (for example gettext POT is generated using <strong class="program">xgettext</strong>) and then further process merges it into actual translations (the gettext PO files are updated using <strong class="program">msgmerge</strong>). You can perform the second step within Weblate and it will ensure that all pending changes are included prior to this operation.</p> <p>The second approach can be achieved by using <a class="reference internal" href="../api.html#api"><span class="std std-ref">Weblate’s REST API</span></a> to force Weblate to push all pending changes and lock the translation while you are doing changes on your side.</p> <p>The script for doing updates can look like this:</p> <div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># Lock Weblate translation</span> wlc<span class="w"> </span>lock <span class="c1"># Push changes from Weblate to upstream repository</span> wlc<span class="w"> </span>push <span class="c1"># Pull changes from upstream repository to your local copy</span> git<span class="w"> </span>pull <span class="c1"># Update translation files, this example is for Django</span> ./manage.py<span class="w"> </span>makemessages<span class="w"> </span>--keep-pot<span class="w"> </span>-a git<span class="w"> </span>commit<span class="w"> </span>-m<span class="w"> </span><span class="s1">&#39;Locale updates&#39;</span><span class="w"> </span>--<span class="w"> </span>locale <span class="c1"># Push changes to upstream repository</span> git<span class="w"> </span>push <span class="c1"># Tell Weblate to pull changes (not needed if Weblate follows your repo</span> <span class="c1"># automatically)</span> wlc<span class="w"> </span>pull <span class="c1"># Unlock translations</span> wlc<span class="w"> </span>unlock </pre></div> </div> <p>If you have multiple components sharing same repository, you need to lock them all separately:</p> <div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>wlc<span class="w"> </span>lock<span class="w"> </span>foo/bar wlc<span class="w"> </span>lock<span class="w"> </span>foo/baz wlc<span class="w"> </span>lock<span class="w"> </span>foo/baj </pre></div> </div> <div class="admonition note"> <p class="admonition-title">Note</p> <p>The example uses <a class="reference internal" href="../wlc.html#wlc"><span class="std std-ref">Weblate Client</span></a>, which needs configuration (API keys) to be able to control Weblate remotely. You can also achieve this using any HTTP client instead of wlc, e.g. curl, see <a class="reference internal" href="../api.html#api"><span class="std std-ref">Weblate’s REST API</span></a>.</p> </div> <section id="avoiding-merge-conflicts-on-weblate-originated-changes"> <h4>Avoiding merge conflicts on Weblate originated changes<a class="headerlink" href="#avoiding-merge-conflicts-on-weblate-originated-changes" title="Link to this heading">¶</a></h4> <p>Even when Weblate is the single source of the changes in the translation files, conflicts can appear when using <a class="reference internal" href="addons.html#addon-weblate-git-squash"><span class="std std-ref">Squash Git commits</span></a> add-on, <a class="reference internal" href="projects.html#component-merge-style"><span class="std std-ref">Merge style</span></a> is configured to <span class="guilabel">Rebase</span>, or you are squashing commits outside of Weblate (for example when merging a pull request).</p> <p>The reason for merge conflicts is different in this case - there are changes in Weblate which happened after you merged Weblate commits. This typically happens if merging is not automated and waits for days or weeks for a human to review them. Git is then sometimes no longer able to identify upstream changes as matching the Weblate ones and refuses to perform a rebase.</p> <p>To approach this, you either need to minimize amount of pending changes in Weblate when you merge a pull request, or avoid the conflicts completely by not squashing changes.</p> <p>Here are few options how to avoid that:</p> <ul class="simple"> <li><p>Do not use neither <a class="reference internal" href="addons.html#addon-weblate-git-squash"><span class="std std-ref">Squash Git commits</span></a> nor squashing at merge time. This is the root cause why git doesn’t recognize changes after merging.</p></li> <li><p>Let Weblate commit pending changes before merging. This will update the pull request with all its changes and both repositories will be in sync.</p></li> <li><p>Use the review features in Weblate (see <a class="reference internal" href="../workflows.html"><span class="doc">Translation workflows</span></a>), so that you can automatically merge GitHub pull requests after CI passes.</p></li> <li><p>Use locking in Weblate to avoid changes while GitHub pull request is in review.</p></li> </ul> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference internal" href="../wlc.html#wlc"><span class="std std-ref">Weblate Client</span></a></p> </div> </section> </section> <section id="automatically-receiving-changes-from-github"> <span id="github-setup"></span><h3>Automatically receiving changes from GitHub<a class="headerlink" href="#automatically-receiving-changes-from-github" title="Link to this heading">¶</a></h3> <p>Weblate comes with native support for GitHub.</p> <p>If you are using Hosted Weblate, the recommended approach is to install the <a class="reference external" href="https://github.com/apps/weblate">Weblate app</a>, that way you will get the correct setup without having to set much up. It can also be used for pushing changes back.</p> <p>To receive notifications on every push to a GitHub repository, add the Weblate Webhook in the repository settings (<span class="guilabel">Webhooks</span>) as shown on the image below:</p> <img alt="../_images/github-settings.png" src="../_images/github-settings.png" /> <p>For the payload URL, append <code class="docutils literal notranslate"><span class="pre">/hooks/github/</span></code> to your Weblate URL, for example for the Hosted Weblate service, this is <code class="docutils literal notranslate"><span class="pre">https://hosted.weblate.org/hooks/github/</span></code>.</p> <p>You can leave other values at default settings (Weblate can handle both content types and consumes just the <cite>push</cite> event).</p> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference internal" href="../api.html#post--hooks-github-" title="POST /hooks/github/"><code class="xref http http-post docutils literal notranslate"><span class="pre">POST</span> <span class="pre">/hooks/github/</span></code></a>, <a class="reference internal" href="../vcs.html#hosted-push"><span class="std std-ref">Accessing repositories from Hosted Weblate</span></a></p> </div> </section> <section id="automatically-receiving-changes-from-bitbucket"> <span id="bitbucket-setup"></span><h3>Automatically receiving changes from Bitbucket<a class="headerlink" href="#automatically-receiving-changes-from-bitbucket" title="Link to this heading">¶</a></h3> <p>Weblate has support for Bitbucket webhooks, add a webhook which triggers upon repository push, with destination to <code class="docutils literal notranslate"><span class="pre">/hooks/bitbucket/</span></code> URL on your Weblate installation (for example <code class="docutils literal notranslate"><span class="pre">https://hosted.weblate.org/hooks/bitbucket/</span></code>).</p> <img alt="../_images/bitbucket-settings.png" src="../_images/bitbucket-settings.png" /> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference internal" href="../api.html#post--hooks-bitbucket-" title="POST /hooks/bitbucket/"><code class="xref http http-post docutils literal notranslate"><span class="pre">POST</span> <span class="pre">/hooks/bitbucket/</span></code></a>, <a class="reference internal" href="../vcs.html#hosted-push"><span class="std std-ref">Accessing repositories from Hosted Weblate</span></a></p> </div> </section> <section id="automatically-receiving-changes-from-gitlab"> <span id="gitlab-setup"></span><h3>Automatically receiving changes from GitLab<a class="headerlink" href="#automatically-receiving-changes-from-gitlab" title="Link to this heading">¶</a></h3> <p>Weblate has support for GitLab hooks, add a project webhook with destination to <code class="docutils literal notranslate"><span class="pre">/hooks/gitlab/</span></code> URL on your Weblate installation (for example <code class="docutils literal notranslate"><span class="pre">https://hosted.weblate.org/hooks/gitlab/</span></code>).</p> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference internal" href="../api.html#post--hooks-gitlab-" title="POST /hooks/gitlab/"><code class="xref http http-post docutils literal notranslate"><span class="pre">POST</span> <span class="pre">/hooks/gitlab/</span></code></a>, <a class="reference internal" href="../vcs.html#hosted-push"><span class="std std-ref">Accessing repositories from Hosted Weblate</span></a></p> </div> </section> <section id="automatically-receiving-changes-from-pagure"> <span id="pagure-setup"></span><h3>Automatically receiving changes from Pagure<a class="headerlink" href="#automatically-receiving-changes-from-pagure" title="Link to this heading">¶</a></h3> <p>Weblate has support for Pagure hooks, add a webhook with destination to <code class="docutils literal notranslate"><span class="pre">/hooks/pagure/</span></code> URL on your Weblate installation (for example <code class="docutils literal notranslate"><span class="pre">https://hosted.weblate.org/hooks/pagure/</span></code>). This can be done in <span class="guilabel">Activate Web-hooks</span> under <span class="guilabel">Project options</span>:</p> <img alt="../_images/pagure-webhook.png" src="../_images/pagure-webhook.png" /> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference internal" href="../api.html#post--hooks-pagure-" title="POST /hooks/pagure/"><code class="xref http http-post docutils literal notranslate"><span class="pre">POST</span> <span class="pre">/hooks/pagure/</span></code></a>, <a class="reference internal" href="../vcs.html#hosted-push"><span class="std std-ref">Accessing repositories from Hosted Weblate</span></a></p> </div> </section> <section id="automatically-receiving-changes-from-azure-repos"> <span id="azure-setup"></span><h3>Automatically receiving changes from Azure Repos<a class="headerlink" href="#automatically-receiving-changes-from-azure-repos" title="Link to this heading">¶</a></h3> <p>Weblate has support for Azure Repos webhooks, add a webhook for <span class="guilabel">Code pushed</span> event with destination to <code class="docutils literal notranslate"><span class="pre">/hooks/azure/</span></code> URL on your Weblate installation (for example <code class="docutils literal notranslate"><span class="pre">https://hosted.weblate.org/hooks/azure/</span></code>). This can be done in <span class="guilabel">Service hooks</span> under <span class="guilabel">Project settings</span>.</p> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference external" href="https://learn.microsoft.com/en-us/azure/devops/service-hooks/services/webhooks?view=azure-devops">Web hooks in Azure DevOps manual</a>, <a class="reference internal" href="../api.html#post--hooks-azure-" title="POST /hooks/azure/"><code class="xref http http-post docutils literal notranslate"><span class="pre">POST</span> <span class="pre">/hooks/azure/</span></code></a>, <a class="reference internal" href="../vcs.html#hosted-push"><span class="std std-ref">Accessing repositories from Hosted Weblate</span></a></p> </div> </section> <section id="automatically-receiving-changes-from-gitea-repos"> <span id="gitea-setup"></span><h3>Automatically receiving changes from Gitea Repos<a class="headerlink" href="#automatically-receiving-changes-from-gitea-repos" title="Link to this heading">¶</a></h3> <p>Weblate has support for Gitea webhooks, add a <span class="guilabel">Gitea Webhook</span> for <span class="guilabel">Push events</span> event with destination to <code class="docutils literal notranslate"><span class="pre">/hooks/gitea/</span></code> URL on your Weblate installation (for example <code class="docutils literal notranslate"><span class="pre">https://hosted.weblate.org/hooks/gitea/</span></code>). This can be done in <span class="guilabel">Webhooks</span> under repository <span class="guilabel">Settings</span>.</p> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference external" href="https://docs.gitea.io/en-us/webhooks/">Webhooks in Gitea manual</a>, <a class="reference internal" href="../api.html#post--hooks-gitea-" title="POST /hooks/gitea/"><code class="xref http http-post docutils literal notranslate"><span class="pre">POST</span> <span class="pre">/hooks/gitea/</span></code></a>, <a class="reference internal" href="../vcs.html#hosted-push"><span class="std std-ref">Accessing repositories from Hosted Weblate</span></a></p> </div> </section> <section id="automatically-receiving-changes-from-gitee-repos"> <span id="gitee-setup"></span><h3>Automatically receiving changes from Gitee Repos<a class="headerlink" href="#automatically-receiving-changes-from-gitee-repos" title="Link to this heading">¶</a></h3> <p>Weblate has support for Gitee webhooks, add a <span class="guilabel">WebHook</span> for <span class="guilabel">Push</span> event with destination to <code class="docutils literal notranslate"><span class="pre">/hooks/gitee/</span></code> URL on your Weblate installation (for example <code class="docutils literal notranslate"><span class="pre">https://hosted.weblate.org/hooks/gitee/</span></code>). This can be done in <span class="guilabel">WebHooks</span> under repository <span class="guilabel">Management</span>.</p> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference external" href="https://gitee.com/help/categories/40">Webhooks in Gitee manual</a>, <a class="reference internal" href="../api.html#post--hooks-gitee-" title="POST /hooks/gitee/"><code class="xref http http-post docutils literal notranslate"><span class="pre">POST</span> <span class="pre">/hooks/gitee/</span></code></a>, <a class="reference internal" href="../vcs.html#hosted-push"><span class="std std-ref">Accessing repositories from Hosted Weblate</span></a></p> </div> </section> <section id="automatically-updating-repositories-nightly"> <h3>Automatically updating repositories nightly<a class="headerlink" href="#automatically-updating-repositories-nightly" title="Link to this heading">¶</a></h3> <p>Weblate automatically fetches remote repositories nightly to improve performance when merging changes later. You can optionally turn this into doing nightly merges as well, by enabling <a class="reference internal" href="config.html#std-setting-AUTO_UPDATE"><code class="xref std std-setting docutils literal notranslate"><span class="pre">AUTO_UPDATE</span></code></a>.</p> </section> </section> <section id="pushing-changes-from-weblate"> <span id="push-changes"></span><h2>Pushing changes from Weblate<a class="headerlink" href="#pushing-changes-from-weblate" title="Link to this heading">¶</a></h2> <p>Each translation component can have a push URL set up (see <a class="reference internal" href="projects.html#component-push"><span class="std std-ref">Repository push URL</span></a>), and in that case Weblate will be able to push change to the remote repository. Weblate can be also be configured to automatically push changes on every commit (this is default, see <a class="reference internal" href="projects.html#component-push-on-commit"><span class="std std-ref">Push on commit</span></a>). If you do not want changes to be pushed automatically, you can do that manually under <span class="guilabel">Repository maintenance</span> or using the API via <a class="reference internal" href="../wlc.html#cmdoption-wlc-arg-push"><code class="xref std std-option docutils literal notranslate"><span class="pre">wlc</span> <span class="pre">push</span></code></a>.</p> <p>The push options differ based on the <a class="reference internal" href="../vcs.html#vcs"><span class="std std-ref">Version control integration</span></a> used, more details are found in that chapter.</p> <p>In case you do not want direct pushes by Weblate, there is support for <a class="reference internal" href="../vcs.html#vcs-github"><span class="std std-ref">GitHub pull requests</span></a>, <a class="reference internal" href="../vcs.html#vcs-gitlab"><span class="std std-ref">GitLab merge requests</span></a>, <a class="reference internal" href="../vcs.html#vcs-gitea"><span class="std std-ref">Gitea pull requests</span></a>, <a class="reference internal" href="../vcs.html#vcs-pagure"><span class="std std-ref">Pagure merge requests</span></a>, <a class="reference internal" href="../vcs.html#vcs-azure-devops"><span class="std std-ref">Azure DevOps pull requests</span></a> pull requests or <a class="reference internal" href="../vcs.html#vcs-gerrit"><span class="std std-ref">Gerrit</span></a> reviews, you can activate these by choosing <span class="guilabel">GitHub</span>, <span class="guilabel">GitLab</span>, <span class="guilabel">Gitea</span>, <span class="guilabel">Gerrit</span>, <span class="guilabel">Azure DevOps</span>, or <span class="guilabel">Pagure</span> as <a class="reference internal" href="projects.html#component-vcs"><span class="std std-ref">Version control system</span></a> in <a class="reference internal" href="projects.html#component"><span class="std std-ref">Component configuration</span></a>.</p> <p>Overall, following options are available with Git, Mercurial, GitHub, GitLab, Gitea, Pagure, Azure DevOps, Bitbucket Server and Bitbucket Cloud:</p> <div class="table-wrapper docutils container"> <table class="docutils align-default"> <thead> <tr class="row-odd"><th class="head"><p>Desired setup</p></th> <th class="head"><p><a class="reference internal" href="projects.html#component-vcs"><span class="std std-ref">Version control system</span></a></p></th> <th class="head"><p><a class="reference internal" href="projects.html#component-push"><span class="std std-ref">Repository push URL</span></a></p></th> <th class="head"><p><a class="reference internal" href="projects.html#component-push-branch"><span class="std std-ref">Push branch</span></a></p></th> </tr> </thead> <tbody> <tr class="row-even"><td><p>No push</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-git"><span class="std std-ref">Git</span></a></p></td> <td><p><cite>empty</cite></p></td> <td><p><cite>empty</cite></p></td> </tr> <tr class="row-odd"><td><p>Push directly</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-git"><span class="std std-ref">Git</span></a></p></td> <td><p>SSH URL</p></td> <td><p><cite>empty</cite></p></td> </tr> <tr class="row-even"><td><p>Push to separate branch</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-git"><span class="std std-ref">Git</span></a></p></td> <td><p>SSH URL</p></td> <td><p>Branch name</p></td> </tr> <tr class="row-odd"><td><p>No push</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-mercurial"><span class="std std-ref">Mercurial</span></a></p></td> <td><p><cite>empty</cite></p></td> <td><p><cite>empty</cite></p></td> </tr> <tr class="row-even"><td><p>Push directly</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-mercurial"><span class="std std-ref">Mercurial</span></a></p></td> <td><p>SSH URL</p></td> <td><p><cite>empty</cite></p></td> </tr> <tr class="row-odd"><td><p>Push to separate branch</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-mercurial"><span class="std std-ref">Mercurial</span></a></p></td> <td><p>SSH URL</p></td> <td><p>Branch name</p></td> </tr> <tr class="row-even"><td><p>GitHub pull request from fork</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-github"><span class="std std-ref">GitHub pull requests</span></a></p></td> <td><p><cite>empty</cite></p></td> <td><p><cite>empty</cite></p></td> </tr> <tr class="row-odd"><td><p>GitHub pull request from branch</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-github"><span class="std std-ref">GitHub pull requests</span></a></p></td> <td><p>SSH URL <a class="footnote-reference brackets" href="#empty" id="id1" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a></p></td> <td><p>Branch name</p></td> </tr> <tr class="row-even"><td><p>GitLab merge request from fork</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-gitlab"><span class="std std-ref">GitLab merge requests</span></a></p></td> <td><p><cite>empty</cite></p></td> <td><p><cite>empty</cite></p></td> </tr> <tr class="row-odd"><td><p>GitLab merge request from branch</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-gitlab"><span class="std std-ref">GitLab merge requests</span></a></p></td> <td><p>SSH URL <a class="footnote-reference brackets" href="#empty" id="id2" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a></p></td> <td><p>Branch name</p></td> </tr> <tr class="row-even"><td><p>Gitea merge request from fork</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-gitea"><span class="std std-ref">Gitea pull requests</span></a></p></td> <td><p><cite>empty</cite></p></td> <td><p><cite>empty</cite></p></td> </tr> <tr class="row-odd"><td><p>Gitea merge request from branch</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-gitea"><span class="std std-ref">Gitea pull requests</span></a></p></td> <td><p>SSH URL <a class="footnote-reference brackets" href="#empty" id="id3" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a></p></td> <td><p>Branch name</p></td> </tr> <tr class="row-even"><td><p>Pagure merge request from fork</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-pagure"><span class="std std-ref">Pagure merge requests</span></a></p></td> <td><p><cite>empty</cite></p></td> <td><p><cite>empty</cite></p></td> </tr> <tr class="row-odd"><td><p>Pagure merge request from branch</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-pagure"><span class="std std-ref">Pagure merge requests</span></a></p></td> <td><p>SSH URL <a class="footnote-reference brackets" href="#empty" id="id4" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a></p></td> <td><p>Branch name</p></td> </tr> <tr class="row-even"><td><p>Azure DevOps pull request from fork</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-azure-devops"><span class="std std-ref">Azure DevOps pull requests</span></a></p></td> <td><p><cite>empty</cite></p></td> <td><p><cite>empty</cite></p></td> </tr> <tr class="row-odd"><td><p>Azure DevOps pull request from branch</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-azure-devops"><span class="std std-ref">Azure DevOps pull requests</span></a></p></td> <td><p>SSH URL <a class="footnote-reference brackets" href="#empty" id="id5" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a></p></td> <td><p>Branch name</p></td> </tr> <tr class="row-even"><td><p>Bitbucket server pull request from fork</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-bitbucket-server"><span class="std std-ref">Bitbucket Server pull requests</span></a></p></td> <td><p><cite>empty</cite></p></td> <td><p><cite>empty</cite></p></td> </tr> <tr class="row-odd"><td><p>Bitbucket server pull request from branch</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-bitbucket-server"><span class="std std-ref">Bitbucket Server pull requests</span></a></p></td> <td><p>SSH URL <a class="footnote-reference brackets" href="#empty" id="id6" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a></p></td> <td><p>Branch name</p></td> </tr> <tr class="row-even"><td><p>Bitbucket Cloud pull request from fork</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-bitbucket-cloud"><span class="std std-ref">Bitbucket Cloud pull requests</span></a></p></td> <td><p><cite>empty</cite></p></td> <td><p><cite>empty</cite></p></td> </tr> <tr class="row-odd"><td><p>Bitbucket Cloud pull request from branch</p></td> <td><p><a class="reference internal" href="../vcs.html#vcs-bitbucket-cloud"><span class="std std-ref">Bitbucket Cloud pull requests</span></a></p></td> <td><p>SSH URL <a class="footnote-reference brackets" href="#empty" id="id7" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a></p></td> <td><p>Branch name</p></td> </tr> </tbody> </table> </div> <aside class="footnote-list brackets"> <aside class="footnote brackets" id="empty" role="doc-footnote"> <span class="label"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></span> <span class="backrefs">(<a role="doc-backlink" href="#id1">1</a>,<a role="doc-backlink" href="#id2">2</a>,<a role="doc-backlink" href="#id3">3</a>,<a role="doc-backlink" href="#id4">4</a>,<a role="doc-backlink" href="#id5">5</a>,<a role="doc-backlink" href="#id6">6</a>,<a role="doc-backlink" href="#id7">7</a>)</span> <p>Can be empty in case <a class="reference internal" href="projects.html#component-repo"><span class="std std-ref">Source code repository</span></a> supports pushing.</p> </aside> </aside> <div class="admonition note"> <p class="admonition-title">Note</p> <p>You can also enable automatic pushing of changes after Weblate commits, this can be done in <a class="reference internal" href="projects.html#component-push-on-commit"><span class="std std-ref">Push on commit</span></a>.</p> </div> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p>See <a class="reference internal" href="../vcs.html#vcs-repos"><span class="std std-ref">Accessing repositories</span></a> for setting up SSH keys, and <a class="reference internal" href="#lazy-commit"><span class="std std-ref">Lazy commits</span></a> for info about when Weblate decides to commit changes.</p> </div> <section id="protected-branches"> <h3>Protected branches<a class="headerlink" href="#protected-branches" title="Link to this heading">¶</a></h3> <p>If you are using Weblate on protected branch, you can configure it to use pull requests and perform actual review on the translations (what might be problematic for languages you do not know). An alternative approach is to waive this limitation for the Weblate push user.</p> <p>For example on GitHub this can be done in the repository configuration:</p> <img alt="../_images/github-protected.png" src="../_images/github-protected.png" /> </section> </section> <section id="interacting-with-others"> <h2>Interacting with others<a class="headerlink" href="#interacting-with-others" title="Link to this heading">¶</a></h2> <p>Weblate makes it easy to interact with others using its API.</p> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference internal" href="../api.html#api"><span class="std std-ref">Weblate’s REST API</span></a></p> </div> </section> <section id="lazy-commits"> <span id="lazy-commit"></span><h2>Lazy commits<a class="headerlink" href="#lazy-commits" title="Link to this heading">¶</a></h2> <p>The behaviour of Weblate is to group commits from the same author into one commit if possible. This greatly reduces the number of commits, however you might need to explicitly tell it to do the commits in case you want to get the VCS repository in sync, e.g. for merge (this is by default allowed for the <span class="guilabel">Managers</span> group, see <a class="reference internal" href="access.html#privileges"><span class="std std-ref">List of privileges</span></a>).</p> <p>The changes in this mode are committed once any of the following conditions are fulfilled:</p> <ul class="simple"> <li><p>Somebody else changes an already changed string.</p></li> <li><p>A merge from upstream occurs.</p></li> <li><p>An explicit commit is requested.</p></li> <li><p>A file download is requested.</p></li> <li><p>Change is older than period defined as <a class="reference internal" href="projects.html#component-commit-pending-age"><span class="std std-ref">Age of changes to commit</span></a> on <a class="reference internal" href="projects.html#component"><span class="std std-ref">Component configuration</span></a>.</p></li> </ul> <div class="admonition hint"> <p class="admonition-title">Hint</p> <p>Commits are created for every component. So in case you have many components you will still see lot of commits. You might utilize <a class="reference internal" href="addons.html#addon-weblate-git-squash"><span class="std std-ref">Squash Git commits</span></a> add-on in that case.</p> </div> <p>If you want to commit changes more frequently and without checking of age, you can schedule a regular task to perform a commit. This can be done using <span class="guilabel">Periodic Tasks</span> in <a class="reference internal" href="admin.html#admin-interface"><span class="std std-ref">The Django admin interface</span></a>. First create desired <span class="guilabel">Interval</span> (for example 120 seconds). Then add new periodic task and choose <code class="docutils literal notranslate"><span class="pre">weblate.trans.tasks.commit_pending</span></code> as <span class="guilabel">Task</span> with <code class="docutils literal notranslate"><span class="pre">{&quot;hours&quot;:</span> <span class="pre">0}</span></code> as <span class="guilabel">Keyword Arguments</span> and desired interval.</p> </section> <section id="processing-repository-with-scripts"> <span id="processing"></span><h2>Processing repository with scripts<a class="headerlink" href="#processing-repository-with-scripts" title="Link to this heading">¶</a></h2> <p>The way to customize how Weblate interacts with the repository is <a class="reference internal" href="addons.html#addons"><span class="std std-ref">Add-ons</span></a>. Consult <a class="reference internal" href="addons.html#addon-script"><span class="std std-ref">Executing scripts from add-on</span></a> for info on how to execute external scripts through add-ons.</p> </section> <section id="keeping-translations-same-across-components"> <span id="translation-consistency"></span><h2>Keeping translations same across components<a class="headerlink" href="#keeping-translations-same-across-components" title="Link to this heading">¶</a></h2> <p>Once you have multiple translation components, you might want to ensure that the same strings have same translation. This can be achieved at several levels.</p> <section id="translation-propagation"> <span id="id8"></span><h3>Translation propagation<a class="headerlink" href="#translation-propagation" title="Link to this heading">¶</a></h3> <p>With <a class="reference internal" href="projects.html#component-allow-translation-propagation"><span class="std std-ref">Allow translation propagation</span></a> enabled (what is the default, see <a class="reference internal" href="projects.html#component"><span class="std std-ref">Component configuration</span></a>), all new translations are automatically done in all components with matching strings. Such translations are properly credited to currently translating user in all components.</p> <div class="admonition note"> <p class="admonition-title">Note</p> <p>The translation propagation requires the key to be match for monolingual translation formats, so keep that in mind when creating translation keys.</p> </div> </section> <section id="consistency-check"> <h3>Consistency check<a class="headerlink" href="#consistency-check" title="Link to this heading">¶</a></h3> <p>The <a class="reference internal" href="../user/checks.html#check-inconsistent"><span class="std std-ref">Inconsistent</span></a> check fires whenever the strings are different. You can utilize this to review such differences manually and choose the right translation.</p> </section> <section id="automatic-translation"> <span id="id9"></span><h3>Automatic translation<a class="headerlink" href="#automatic-translation" title="Link to this heading">¶</a></h3> <p>Automatic translation based on different components can be way to synchronize the translations across components. You can either trigger it manually (see <a class="reference internal" href="../user/translating.html#auto-translation"><span class="std std-ref">Automatic translation</span></a>) or make it run automatically on repository update using add-on (see <a class="reference internal" href="addons.html#addon-weblate-autotranslate-autotranslate"><span class="std std-ref">Automatic translation</span></a>).</p> </section> </section> </section> </article> </div> <footer> <div class="related-pages"> <a class="next-page" href="licensing.html"> <div class="page-info"> <div class="context"> <span>Next</span> </div> <div class="title">Licensing translations</div> </div> <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> </a> <a class="prev-page" href="languages.html"> <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> <div class="page-info"> <div class="context"> <span>Previous</span> </div> <div class="title">Language definitions</div> </div> </a> </div> <div class="bottom-of-page"> <div class="left-details"> <div class="copyright"> Copyright &#169; Michal Čihař </div> Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s <a href="https://github.com/pradyunsg/furo">Furo</a> </div> <div class="right-details"> <div class="icons"> </div> </div> </div> </footer> </div> <aside class="toc-drawer"> <div class="toc-sticky toc-scroll"> <div class="toc-title-container"> <span class="toc-title"> On this page </span> </div> <div class="toc-tree-container"> <div class="toc-tree"> <ul> <li><a class="reference internal" href="#">Continuous localization</a><ul> <li><a class="reference internal" href="#updating-repositories">Updating repositories</a><ul> <li><a class="reference internal" href="#avoiding-merge-conflicts">Avoiding merge conflicts</a><ul> <li><a class="reference internal" href="#avoiding-merge-conflicts-on-weblate-originated-changes">Avoiding merge conflicts on Weblate originated changes</a></li> </ul> </li> <li><a class="reference internal" href="#automatically-receiving-changes-from-github">Automatically receiving changes from GitHub</a></li> <li><a class="reference internal" href="#automatically-receiving-changes-from-bitbucket">Automatically receiving changes from Bitbucket</a></li> <li><a class="reference internal" href="#automatically-receiving-changes-from-gitlab">Automatically receiving changes from GitLab</a></li> <li><a class="reference internal" href="#automatically-receiving-changes-from-pagure">Automatically receiving changes from Pagure</a></li> <li><a class="reference internal" href="#automatically-receiving-changes-from-azure-repos">Automatically receiving changes from Azure Repos</a></li> <li><a class="reference internal" href="#automatically-receiving-changes-from-gitea-repos">Automatically receiving changes from Gitea Repos</a></li> <li><a class="reference internal" href="#automatically-receiving-changes-from-gitee-repos">Automatically receiving changes from Gitee Repos</a></li> <li><a class="reference internal" href="#automatically-updating-repositories-nightly">Automatically updating repositories nightly</a></li> </ul> </li> <li><a class="reference internal" href="#pushing-changes-from-weblate">Pushing changes from Weblate</a><ul> <li><a class="reference internal" href="#protected-branches">Protected branches</a></li> </ul> </li> <li><a class="reference internal" href="#interacting-with-others">Interacting with others</a></li> <li><a class="reference internal" href="#lazy-commits">Lazy commits</a></li> <li><a class="reference internal" href="#processing-repository-with-scripts">Processing repository with scripts</a></li> <li><a class="reference internal" href="#keeping-translations-same-across-components">Keeping translations same across components</a><ul> <li><a class="reference internal" href="#translation-propagation">Translation propagation</a></li> <li><a class="reference internal" href="#consistency-check">Consistency check</a></li> <li><a class="reference internal" href="#automatic-translation">Automatic translation</a></li> </ul> </li> </ul> </li> </ul> </div> </div> </div> </aside> </div> </div><script src="../_static/documentation_options.js?v=696bab92"></script> <script src="../_static/doctools.js?v=9bcbadda"></script> <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/scripts/furo.js?v=5fa4622c"></script> <script src="../_static/clipboard.min.js?v=a7894cd8"></script> <script src="../_static/copybutton.js?v=f281be69"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10