2
0
mirror of https://github.com/inventree/inventree-website.git synced 2025-06-18 04:55:32 +00:00
Files
LavissaWoW
SchrodingersGat
SergeoLacruz
about
afkiwers
alternatives
assets
blog
2021
10
11
22
translation.html
2022
2023
2024
feed.atom
extend
lippoliv
matmair
melektron
news
piramja
plugins
use
wolflu05
.nojekyll
404.html
CNAME
LavissaWoW.html
SergeoLacruz.html
afwkiers.html
blog.html
contribute.html
demo.html
deploy.html
digitalocean.html
functions.html
index.html
lippoliv.html
matmair.html
melektron.html
news.html
newsletter.html
piramja.html
plugins.html
publishers.html
robots.txt
schrodingersgat.html
sitemap.xml
support.html
wolflu05.html
inventree-website/blog/2021/11/22/translation.html
SchrodingersGat da1167e5e1 deploy: 28a6c0d0f1
2025-02-22 00:18:52 +00:00

237 lines
12 KiB
HTML

<!DOCTYPE html>
<html lang=" en-US ">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/assets/splide/css/splide.min.css">
<link rel="stylesheet" href="/assets/index.css">
<link rel="shortcut icon" type="image/png" href="/assets/icon/favicon.ico">
<script src="/assets/splide/js/splide.min.js"></script>
<!-- Fontawesome integration -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css">
<title>InvenTree - Translating InvenTree</title>
<meta itemprop="description" name="description"
content="InvenTree is an open-source inventory management system which provides intuitive parts management and stock control. It is at the center of an ecosystem of a..." />
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Translating InvenTree | InvenTree</title>
<meta name="generator" content="Jekyll v4.3.3" />
<meta property="og:title" content="Translating InvenTree" />
<meta name="author" content="SchrodingersGat" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="How we provide translation support for InvenTree in multiple languages" />
<meta property="og:description" content="How we provide translation support for InvenTree in multiple languages" />
<link rel="canonical" href="/blog/2021/11/22/translation" />
<meta property="og:url" content="/blog/2021/11/22/translation" />
<meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2021-11-22T00:00:00+00:00" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Translating InvenTree" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SchrodingersGat"},"dateModified":"2021-11-22T00:00:00+00:00","datePublished":"2021-11-22T00:00:00+00:00","description":"How we provide translation support for InvenTree in multiple languages","headline":"Translating InvenTree","mainEntityOfPage":{"@type":"WebPage","@id":"/blog/2021/11/22/translation"},"url":"/blog/2021/11/22/translation"}</script>
<!-- End Jekyll SEO tag -->
</head>
<body class="flex flex-col antialiased cm-gray-1 min-h-screen">
<div class="flex-none">
<header class="cm-gray-2 body-font sticky top-0 z-50 bg-gradient-to-r from-white to-secondary">
<div class="container mx-auto flex flex-wrap p-5 flex-row items-center">
<a class="flex title-font font-medium items-center cm-gray-1 mb-0 mr-2" href="/">
<img src="/assets/logo.png" alt="logo" height="32" width="32" class="h-8">
<span class="ml-3 text-xl">InvenTree</span>
</a>
<div class="flex-grow xs:flex-none"></div>
<nav class="md:mr-auto md:py-1 xs:ml-4 xs:pl-4 xs:border-l xs:border-gray-400 flex flex-wrap items-center text-base justify-center">
<a class="mr-5 hover:cm-gray-1" href="/deploy.html">Deploy</a>
<a class="mr-5 hover:cm-gray-1" href="https://docs.inventree.org/en/stable/">Docs</a>
<a class="mr-5 hover:cm-gray-1" href="/blog">Blog</a>
</nav>
</div>
</header> <header>
<a href="/blog" class="flex items-center m-5 text-xl hover:underline">
<img class="w-6 h-6" alt="go back" src="/assets/back.svg">
<span>Back</span>
</a>
</header>
<article>
<h1>Translating InvenTree</h1>
<p>
22 Nov 2021
<a href="/schrodingersgat">Oliver</a>
</p>
<p>How we provide translation support for InvenTree in multiple languages</p>
<h3 id="community-contributed-translations">Community Contributed Translations</h3>
<p>At the time of writing, InvenTree provides language translations for 25 languages (in addition to English), with over 11,000 translated words! This is thanks to the sustained efforts of 130+ InvenTree users, who have contributed their time to make our software better for everyone.</p>
<p>Translation progress can be viewed on our <a href="https://crowdin.com/project/inventree">Crowdin project page</a>. Here you can view the current status of the translation efforts:</p>
<p><img src="/assets/blog/2022-11-22-translation.png" alt="Translations"></p>
<h3 id="translation-pipeline">Translation Pipeline</h3>
<p>As translations are entirely community contributed, we need a software framework that allows non-technical users to submit and proofread translations, and a way to bring those translations back into the InvenTree software.</p>
<h4 id="backend---django">Backend - Django</h4>
<p>At its core, InvenTree is built on the <a href="https://www.djangoproject.com/">Django</a> framework, which provides a <a href="https://docs.djangoproject.com/en/4.1/topics/i18n/translation/">translation framework</a> “out of the box”.</p>
<p>The Django translation framework provides a toolkit for marking certain text strings as “translatable”. Translation strings are able to be replaced by a translated string from a language specified by the user - <em>if a translation for the text is available in that language</em>.</p>
<p>There are many files within the InvenTree project which can provide these translation strings:</p>
<ul>
<li>Python source files</li>
<li>Javascript source files</li>
<li>HTML template files</li>
</ul>
<p>Additionally, translation support is provided for the <a href="/extend/app.html">InvenTree Mobile App</a>!</p>
<h4 id="exporting-translations---github">Exporting Translations - GitHub</h4>
<p>On every commit to the InvenTree main branch, the source code is analyzed to discover and extract translation strings. This information is then pushed to a separate code branch, which is monitored by the <a href="#community-translation---crowdin">translation service</a></p>
<h4 id="community-translation---crowdin">Community Translation - Crowdin</h4>
<p>The crucial piece of the puzzle is the integration with <a href="https://crowdin.com/">Crowdin</a> - an online translation service which provides community contributed translation, and supports open source projects.</p>
<p>Crowdin monitors the <a href="https://github.com/inventree/inventree">InvenTree GitHub repository</a> for any changes to translation files, and provides a user interface for translators to suggest appropriate translated strings.</p>
<p>Suggested translations are then approved (again, by the InvenTree user community), and periodically pushed back to the InvenTree GitHub repo.</p>
<h4 id="merging-translations---github">Merging Translations - GitHub</h4>
<p>Updated translated strings are periodically merged back into the main code branch, keeping the InvenTree code base up to date.</p>
<h3 id="contributing">Contributing</h3>
<p>The translation framework is provided by the InvenTree team to make our software more useful and appealing to a greater number of people. The entire translation effort is driven by the InvenTree community. Any contributions, no matter how large or small, are greatly encouraged!</p>
<p>If you would like to see improved translations in a particular language, read the <a href="/contribute.html#translate">contribution guide</a>! The InvenTree project benefits greatly from your efforts, and you get a great piece of open source software in your native language.</p>
<h4 id="adding-new-languages">Adding New Languages</h4>
<p>If you would like to see support for a new language, <a href="https://github.com/inventree/InvenTree/issues/new?assignees=&amp;labels=enhancement%2Ctriage%3Anot-checked&amp;template=feature_request.yaml&amp;title=%5BFR%5D+title">raise an issue on our GitHub page</a>.</p>
</article>
</div>
<div class="flex-grow"></div>
<div class="flex-none">
<footer class="cm-gray-2 body-font">
<div class="container px-5 pt-8 mx-auto flex md:flex-row md:flex-nowrap flex-wrap flex-col">
<div class="w-64 flex-shrink-0 md:mx-0 mx-auto text-center md:text-left">
<div class="flex title-font font-medium items-center md:justify-start justify-center cm-gray-1">
<img src="/assets/logo.png" alt="logo" height="32" width="32" class="h-8">
<span class="ml-3 text-xl">InvenTree</span>
</div>
<p class="mt-2 text-sm cm-gray-3">Intuitive Inventory Management</p>
</div>
<div class="flex-grow flex flex-wrap md:pl-10 mb-1 md:mt-0 mt-10 md:text-left text-center md:justify-left justify-center">
<div class="md:w-1/4 px-4">
<h2 class="footer-categorie title-font">
Quick
</h2>
<nav class="list-none mb-10"><ul>
<li><a href="/demo.html" class="footer-link">Demo</a></li>
<li><a href="/deploy.html" class="footer-link">Deploy</a></li>
<li><a href="https://docs.inventree.org/en/stable/" class="footer-link">Docs</a></li>
<li><a href="/news" class="footer-link">News</a></li>
<li><a href="/plugins" class="footer-link">Plugin List</a></li>
</ul></nav>
</div>
<div class="md:w-1/4 px-4">
<h2 class="footer-categorie title-font">
<a href="/extend/">Ecosystem</a>
</h2>
<nav class="list-none mb-10"><ul>
<li><a href="/extend/api.html" class="footer-link">API</a></li>
<li><a href="/extend/app.html" class="footer-link">App</a></li>
<li><a href="/extend/plugin/" class="footer-link">Plugins</a></li>
<li><a href="/extend/integrate/" class="footer-link">Integrations</a></li>
</ul></nav>
</div>
<div class="md:w-1/4 px-4">
<h2 class="footer-categorie title-font">
Sitemap
</h2>
<nav class="list-none mb-10"><ul>
<li><a href="/about/" class="footer-link">About</a></li>
<li><a href="/alternatives/" class="footer-link">Alternatives</a></li>
<li><a href="/blog" class="footer-link">Blog</a></li>
<li><a href="/contribute.html" class="footer-link">Contribute</a></li>
<li><a href="/support.html" class="footer-link">Support</a></li>
</ul></nav>
</div>
</div>
</div>
<div class="bg-gray-100">
<div class="container mx-auto py-4 px-5 flex flex-wrap flex-col sm:flex-row">
<p class="cm-gray-2 text-sm text-center sm:text-left">© 2021-now InvenTree by<a href="https://github.com/inventree" rel="noopener" class="cm-gray-2 ml-1" target="_blank">@inventree</a>— website made with ♥ by<a href="https://github.com/matmair" rel="noopener" class="cm-gray-2 ml-1" target="_blank">@matmair</a></p>
<span class="inline-flex sm:ml-auto sm:mt-0 mt-2 justify-center sm:justify-start">
<a href="https://github.com/inventree/inventree" alt="github repo" class="ml-3 cm-gray-3">
<img class="h-5 w-5" alt="GitHub logo" src="/assets/github.svg">
</a>
<a href="https://reddit.com/r/inventree" alt="Reddit" class="ml-3 cm-gray-3">
<img class="h-5 w-5" alt="Reddit logo" src="/assets/reddit.svg">
</a>
<a href="https://twitter.com/inventreedb" alt="Twitter" class="ml-3 cm-gray-3">
<img class="h-5 w-5" alt="Twitter logo" src="/assets/twitter.svg">
</a>
<a href="https://chaos.social/@InvenTree" rel="me" alt="Mastodon" class="ml-3 cm-gray-3">
<img class="h-5 w-5" alt="Mastodon logo" src="/assets/mastodon.svg">
</a>
</span>
</div>
</div>
</footer>
</div>
</body>
</html>