Skip to content

Repository files navigation

Translate Toolkit

Released versionhttps://readthedocs.org/projects/translate-toolkit/badge/Supported Python versionsLicense

The Translate Toolkit is a set of software and documentation designed to help make the lives of localizers both more productive and less frustrating. The Toolkit is part of the Translate project, hosted at <https://github.com/translate>.

The software includes programs to convert localization formats to the common PO, and emerging XLIFF format. There are also programs to check and manage PO and XLIFF files. Online documentation includes guides on using the tools, running a localization project and how to localize various projects from OpenOffice.org to Mozilla.

At its core the software contains a set of classes for handling various localization storage formats: DTD, properties, OpenOffice.org GSI/SDF, CSV, MO, Qt .ts, TMX, TBX, WordFast txt, Gettext .mo, Windows RC, and of course PO and XLIFF. It also provides scripts to convert between these formats.

Also part of the Toolkit are Python programs to create word counts, merge translations and perform various checks on translation files.

Important Links

Joining the Translate Project

If you would like to join the translate project mailing list then visit: <http://lists.sourceforge.net/lists/listinfo/translate-devel>.

The vision of the Translate Project is to be a meta project for localizers built on the premise that your language deserves to be a project on its own right not a poor cousin of the main project.

Most projects are inattentive to the needs and difficulties experienced by localizers. To that end the aim is to work towards creating tools and documentation that allows localizers to focus on what they do best: translating software.

Requirements

There are several extra requirements which you might to install to get full feature set. This cal be easily specified during pip installation:

# Install with XML support
pip install translate-toolkit[XML]
# Install all optional dependencies
pip install translate-toolkit[all]

Note

Please check pyproject.toml

The Toolkit requires Python 3.10 or newer.

The package lxml is required. You should install version 4.6.3 or later. <http://lxml.de/> Depending on your platform, the easiest way to install might be through your system's package management. Alternatively you can try

pip install lxml

which should install the newest version from the web.

For Mac OSX, the following pages might be of help: <http://lxml.de/build.html#building-lxml-on-macos-x> <http://lxml.de/installation.html#macos-x>

The package lxml has dependencies on libxml2 and libxslt. Please check the lxml site for the recommended versions of these libraries if you need to install them separately at all. Most packaged versions of lxml will already contain these dependencies.

When the environment variable USECPO is set to 1, the toolkit will attempt to use libgettextpo from the gettext-tools package (it might have a slightly different name on your distribution). This can greatly speed up access to PO files, but has not yet been tested as extensively. Feedback is most welcome.

The package iniparse is necessary for ini2po and po2ini: <https://pypi.org/project/iniparse/>

The RapidFuzz package will improve performance for fuzzy matching if it is available. This can improve the performance of pot2po, for example. It is optional and no functionality is lost if it is not installed, only speed. <https://pypi.org/project/RapidFuzz/>

Functions in the lang.data module can supply functions to translate language names using the pycountry package. It can even translate names in the format Language (Country) such as English (South Africa) This is used by Pootle and Virtaal. If the package is not installed, the language names will simply appear in English. It is therefore recommended you install the pycountry package.

The package vobject is needed for ical2po and po2ical.

The aeidon package is needed for sub2po and po2sub. Some Unicode encoded files (including most files from <http://dotsub.com/>) require version 0.14 or later.

Markdown support requires the mistletoe parser <https://github.com/miyuchina/mistletoe>

Program overview

Use --help to find the syntax and options for all programs.

Note

This is a selection of the most commonly used tools. For the complete list of converters and tools, see the online documentation.

  • Converters:

    oo2po - convert between OpenOffice.org GSI files and PO
    oo2xliff - convert between OpenOffice.org GSI files and XLIFF
    moz2po - convert between Mozilla files and PO
    csv2po - convert PO format to CSV for editing in a spreadsheet program
    php2po - PHP localisable string arrays converter.
    ts2po - convert Qt Linguist (.ts) files to PO
    txt2po - convert simple text files to PO
    html2po - convert HTML to PO (beta)
    md2po - convert Markdown to PO
    xliff2po - XLIFF (XML Localisation Interchange File Format) converter
    prop2po - convert Java .properties files to PO
    po2wordfast - Wordfast Translation Memory converter
    po2tmx - TMX (Translation Memory Exchange) converter
    pot2po - PO file initialiser
    csv2tbx - Create TBX (TermBase eXchange) files from Comma Separated
    Value (CSV) files
    ini2po - convert .ini files to PO
    ical2po - Convert iCalendar files (*.ics) to PO
    sub2po - Convert many subtitle files to PO
    rc2po - convert Windows Resource .rc files to PO
    resx2po - convert .Net Resource (.resx) files to PO
    
  • Tools (Quality Assurance):

    pofilter - run any of the 40+ checks on your PO files
    pomerge - merge corrected translations from pofilter back into
    your existing PO files.
    poconflicts - identify conflicting use of terms
    porestructure - restructures po files according to poconflict directives
    pogrep - find words in PO files
    
  • Tools (Other):

    pocompile - create a Gettext MO files from PO or XLIFF files
    pocount - count translatable file formats (PO, XLIFF)
    podebug - Create comment in your PO files' msgstr which can
    then be used to quickly track down mistranslations
    as the comments appear in the application.
    posegment - Break a PO or XLIFF files into sentence segments,
    useful for creating a segmented translation memory.
    poswap - uses a translation of another language that you
    would rather use than English as source language
    poterminology - analyse PO or POT files to build a list of
    frequently occurring words and phrases
    

About

Useful localization tools with Python API for building localization & translation systems

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - Inventas/translate: Useful localization tools with Python API for building localization & translation systems · GitHub
Skip to content

Repository files navigation

Translate Toolkit

Released versionhttps://readthedocs.org/projects/translate-toolkit/badge/Supported Python versionsLicense

The Translate Toolkit is a set of software and documentation designed to help make the lives of localizers both more productive and less frustrating. The Toolkit is part of the Translate project, hosted at <https://github.com/translate>.

The software includes programs to convert localization formats to the common PO, and emerging XLIFF format. There are also programs to check and manage PO and XLIFF files. Online documentation includes guides on using the tools, running a localization project and how to localize various projects from OpenOffice.org to Mozilla.

At its core the software contains a set of classes for handling various localization storage formats: DTD, properties, OpenOffice.org GSI/SDF, CSV, MO, Qt .ts, TMX, TBX, WordFast txt, Gettext .mo, Windows RC, and of course PO and XLIFF. It also provides scripts to convert between these formats.

Also part of the Toolkit are Python programs to create word counts, merge translations and perform various checks on translation files.

Important Links

Joining the Translate Project

If you would like to join the translate project mailing list then visit: <http://lists.sourceforge.net/lists/listinfo/translate-devel>.

The vision of the Translate Project is to be a meta project for localizers built on the premise that your language deserves to be a project on its own right not a poor cousin of the main project.

Most projects are inattentive to the needs and difficulties experienced by localizers. To that end the aim is to work towards creating tools and documentation that allows localizers to focus on what they do best: translating software.

Requirements

There are several extra requirements which you might to install to get full feature set. This cal be easily specified during pip installation:

# Install with XML support
pip install translate-toolkit[XML]
# Install all optional dependencies
pip install translate-toolkit[all]

Note

Please check pyproject.toml

The Toolkit requires Python 3.10 or newer.

The package lxml is required. You should install version 4.6.3 or later. <http://lxml.de/> Depending on your platform, the easiest way to install might be through your system's package management. Alternatively you can try

pip install lxml

which should install the newest version from the web.

For Mac OSX, the following pages might be of help: <http://lxml.de/build.html#building-lxml-on-macos-x> <http://lxml.de/installation.html#macos-x>

The package lxml has dependencies on libxml2 and libxslt. Please check the lxml site for the recommended versions of these libraries if you need to install them separately at all. Most packaged versions of lxml will already contain these dependencies.

When the environment variable USECPO is set to 1, the toolkit will attempt to use libgettextpo from the gettext-tools package (it might have a slightly different name on your distribution). This can greatly speed up access to PO files, but has not yet been tested as extensively. Feedback is most welcome.

The package iniparse is necessary for ini2po and po2ini: <https://pypi.org/project/iniparse/>

The RapidFuzz package will improve performance for fuzzy matching if it is available. This can improve the performance of pot2po, for example. It is optional and no functionality is lost if it is not installed, only speed. <https://pypi.org/project/RapidFuzz/>

Functions in the lang.data module can supply functions to translate language names using the pycountry package. It can even translate names in the format Language (Country) such as English (South Africa) This is used by Pootle and Virtaal. If the package is not installed, the language names will simply appear in English. It is therefore recommended you install the pycountry package.

The package vobject is needed for ical2po and po2ical.

The aeidon package is needed for sub2po and po2sub. Some Unicode encoded files (including most files from <http://dotsub.com/>) require version 0.14 or later.

Markdown support requires the mistletoe parser <https://github.com/miyuchina/mistletoe>

Program overview

Use --help to find the syntax and options for all programs.

Note

This is a selection of the most commonly used tools. For the complete list of converters and tools, see the online documentation.

  • Converters:

    oo2po - convert between OpenOffice.org GSI files and PO
    oo2xliff - convert between OpenOffice.org GSI files and XLIFF
    moz2po - convert between Mozilla files and PO
    csv2po - convert PO format to CSV for editing in a spreadsheet program
    php2po - PHP localisable string arrays converter.
    ts2po - convert Qt Linguist (.ts) files to PO
    txt2po - convert simple text files to PO
    html2po - convert HTML to PO (beta)
    md2po - convert Markdown to PO
    xliff2po - XLIFF (XML Localisation Interchange File Format) converter
    prop2po - convert Java .properties files to PO
    po2wordfast - Wordfast Translation Memory converter
    po2tmx - TMX (Translation Memory Exchange) converter
    pot2po - PO file initialiser
    csv2tbx - Create TBX (TermBase eXchange) files from Comma Separated
    Value (CSV) files
    ini2po - convert .ini files to PO
    ical2po - Convert iCalendar files (*.ics) to PO
    sub2po - Convert many subtitle files to PO
    rc2po - convert Windows Resource .rc files to PO
    resx2po - convert .Net Resource (.resx) files to PO
    
  • Tools (Quality Assurance):

    pofilter - run any of the 40+ checks on your PO files
    pomerge - merge corrected translations from pofilter back into
    your existing PO files.
    poconflicts - identify conflicting use of terms
    porestructure - restructures po files according to poconflict directives
    pogrep - find words in PO files
    
  • Tools (Other):

    pocompile - create a Gettext MO files from PO or XLIFF files
    pocount - count translatable file formats (PO, XLIFF)
    podebug - Create comment in your PO files' msgstr which can
    then be used to quickly track down mistranslations
    as the comments appear in the application.
    posegment - Break a PO or XLIFF files into sentence segments,
    useful for creating a segmented translation memory.
    poswap - uses a translation of another language that you
    would rather use than English as source language
    poterminology - analyse PO or POT files to build a list of
    frequently occurring words and phrases
    

About

Useful localization tools with Python API for building localization & translation systems

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Inventas/translate: Useful localization tools with Python API for building localization & translation systems · GitHub
Skip to content

Repository files navigation

Translate Toolkit

Released versionhttps://readthedocs.org/projects/translate-toolkit/badge/Supported Python versionsLicense

The Translate Toolkit is a set of software and documentation designed to help make the lives of localizers both more productive and less frustrating. The Toolkit is part of the Translate project, hosted at <https://github.com/translate>.

The software includes programs to convert localization formats to the common PO, and emerging XLIFF format. There are also programs to check and manage PO and XLIFF files. Online documentation includes guides on using the tools, running a localization project and how to localize various projects from OpenOffice.org to Mozilla.

At its core the software contains a set of classes for handling various localization storage formats: DTD, properties, OpenOffice.org GSI/SDF, CSV, MO, Qt .ts, TMX, TBX, WordFast txt, Gettext .mo, Windows RC, and of course PO and XLIFF. It also provides scripts to convert between these formats.

Also part of the Toolkit are Python programs to create word counts, merge translations and perform various checks on translation files.

Important Links

Joining the Translate Project

If you would like to join the translate project mailing list then visit: <http://lists.sourceforge.net/lists/listinfo/translate-devel>.

The vision of the Translate Project is to be a meta project for localizers built on the premise that your language deserves to be a project on its own right not a poor cousin of the main project.

Most projects are inattentive to the needs and difficulties experienced by localizers. To that end the aim is to work towards creating tools and documentation that allows localizers to focus on what they do best: translating software.

Requirements

There are several extra requirements which you might to install to get full feature set. This cal be easily specified during pip installation:

# Install with XML support
pip install translate-toolkit[XML]
# Install all optional dependencies
pip install translate-toolkit[all]

Note

Please check pyproject.toml

The Toolkit requires Python 3.10 or newer.

The package lxml is required. You should install version 4.6.3 or later. <http://lxml.de/> Depending on your platform, the easiest way to install might be through your system's package management. Alternatively you can try

pip install lxml

which should install the newest version from the web.

For Mac OSX, the following pages might be of help: <http://lxml.de/build.html#building-lxml-on-macos-x> <http://lxml.de/installation.html#macos-x>

The package lxml has dependencies on libxml2 and libxslt. Please check the lxml site for the recommended versions of these libraries if you need to install them separately at all. Most packaged versions of lxml will already contain these dependencies.

When the environment variable USECPO is set to 1, the toolkit will attempt to use libgettextpo from the gettext-tools package (it might have a slightly different name on your distribution). This can greatly speed up access to PO files, but has not yet been tested as extensively. Feedback is most welcome.

The package iniparse is necessary for ini2po and po2ini: <https://pypi.org/project/iniparse/>

The RapidFuzz package will improve performance for fuzzy matching if it is available. This can improve the performance of pot2po, for example. It is optional and no functionality is lost if it is not installed, only speed. <https://pypi.org/project/RapidFuzz/>

Functions in the lang.data module can supply functions to translate language names using the pycountry package. It can even translate names in the format Language (Country) such as English (South Africa) This is used by Pootle and Virtaal. If the package is not installed, the language names will simply appear in English. It is therefore recommended you install the pycountry package.

The package vobject is needed for ical2po and po2ical.

The aeidon package is needed for sub2po and po2sub. Some Unicode encoded files (including most files from <http://dotsub.com/>) require version 0.14 or later.

Markdown support requires the mistletoe parser <https://github.com/miyuchina/mistletoe>

Program overview

Use --help to find the syntax and options for all programs.

Note

This is a selection of the most commonly used tools. For the complete list of converters and tools, see the online documentation.

  • Converters:

    oo2po - convert between OpenOffice.org GSI files and PO
    oo2xliff - convert between OpenOffice.org GSI files and XLIFF
    moz2po - convert between Mozilla files and PO
    csv2po - convert PO format to CSV for editing in a spreadsheet program
    php2po - PHP localisable string arrays converter.
    ts2po - convert Qt Linguist (.ts) files to PO
    txt2po - convert simple text files to PO
    html2po - convert HTML to PO (beta)
    md2po - convert Markdown to PO
    xliff2po - XLIFF (XML Localisation Interchange File Format) converter
    prop2po - convert Java .properties files to PO
    po2wordfast - Wordfast Translation Memory converter
    po2tmx - TMX (Translation Memory Exchange) converter
    pot2po - PO file initialiser
    csv2tbx - Create TBX (TermBase eXchange) files from Comma Separated
    Value (CSV) files
    ini2po - convert .ini files to PO
    ical2po - Convert iCalendar files (*.ics) to PO
    sub2po - Convert many subtitle files to PO
    rc2po - convert Windows Resource .rc files to PO
    resx2po - convert .Net Resource (.resx) files to PO
    
  • Tools (Quality Assurance):

    pofilter - run any of the 40+ checks on your PO files
    pomerge - merge corrected translations from pofilter back into
    your existing PO files.
    poconflicts - identify conflicting use of terms
    porestructure - restructures po files according to poconflict directives
    pogrep - find words in PO files
    
  • Tools (Other):

    pocompile - create a Gettext MO files from PO or XLIFF files
    pocount - count translatable file formats (PO, XLIFF)
    podebug - Create comment in your PO files' msgstr which can
    then be used to quickly track down mistranslations
    as the comments appear in the application.
    posegment - Break a PO or XLIFF files into sentence segments,
    useful for creating a segmented translation memory.
    poswap - uses a translation of another language that you
    would rather use than English as source language
    poterminology - analyse PO or POT files to build a list of
    frequently occurring words and phrases
    

About

Useful localization tools with Python API for building localization & translation systems

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Inventas/translate: Useful localization tools with Python API for building localization & translation systems · GitHub
Skip to content

Repository files navigation

Translate Toolkit

Released versionhttps://readthedocs.org/projects/translate-toolkit/badge/Supported Python versionsLicense

The Translate Toolkit is a set of software and documentation designed to help make the lives of localizers both more productive and less frustrating. The Toolkit is part of the Translate project, hosted at <https://github.com/translate>.

The software includes programs to convert localization formats to the common PO, and emerging XLIFF format. There are also programs to check and manage PO and XLIFF files. Online documentation includes guides on using the tools, running a localization project and how to localize various projects from OpenOffice.org to Mozilla.

At its core the software contains a set of classes for handling various localization storage formats: DTD, properties, OpenOffice.org GSI/SDF, CSV, MO, Qt .ts, TMX, TBX, WordFast txt, Gettext .mo, Windows RC, and of course PO and XLIFF. It also provides scripts to convert between these formats.

Also part of the Toolkit are Python programs to create word counts, merge translations and perform various checks on translation files.

Important Links

Joining the Translate Project

If you would like to join the translate project mailing list then visit: <http://lists.sourceforge.net/lists/listinfo/translate-devel>.

The vision of the Translate Project is to be a meta project for localizers built on the premise that your language deserves to be a project on its own right not a poor cousin of the main project.

Most projects are inattentive to the needs and difficulties experienced by localizers. To that end the aim is to work towards creating tools and documentation that allows localizers to focus on what they do best: translating software.

Requirements

There are several extra requirements which you might to install to get full feature set. This cal be easily specified during pip installation:

# Install with XML support
pip install translate-toolkit[XML]
# Install all optional dependencies
pip install translate-toolkit[all]

Note

Please check pyproject.toml

The Toolkit requires Python 3.10 or newer.

The package lxml is required. You should install version 4.6.3 or later. <http://lxml.de/> Depending on your platform, the easiest way to install might be through your system's package management. Alternatively you can try

pip install lxml

which should install the newest version from the web.

For Mac OSX, the following pages might be of help: <http://lxml.de/build.html#building-lxml-on-macos-x> <http://lxml.de/installation.html#macos-x>

The package lxml has dependencies on libxml2 and libxslt. Please check the lxml site for the recommended versions of these libraries if you need to install them separately at all. Most packaged versions of lxml will already contain these dependencies.

When the environment variable USECPO is set to 1, the toolkit will attempt to use libgettextpo from the gettext-tools package (it might have a slightly different name on your distribution). This can greatly speed up access to PO files, but has not yet been tested as extensively. Feedback is most welcome.

The package iniparse is necessary for ini2po and po2ini: <https://pypi.org/project/iniparse/>

The RapidFuzz package will improve performance for fuzzy matching if it is available. This can improve the performance of pot2po, for example. It is optional and no functionality is lost if it is not installed, only speed. <https://pypi.org/project/RapidFuzz/>

Functions in the lang.data module can supply functions to translate language names using the pycountry package. It can even translate names in the format Language (Country) such as English (South Africa) This is used by Pootle and Virtaal. If the package is not installed, the language names will simply appear in English. It is therefore recommended you install the pycountry package.

The package vobject is needed for ical2po and po2ical.

The aeidon package is needed for sub2po and po2sub. Some Unicode encoded files (including most files from <http://dotsub.com/>) require version 0.14 or later.

Markdown support requires the mistletoe parser <https://github.com/miyuchina/mistletoe>

Program overview

Use --help to find the syntax and options for all programs.

Note

This is a selection of the most commonly used tools. For the complete list of converters and tools, see the online documentation.

  • Converters:

    oo2po - convert between OpenOffice.org GSI files and PO
    oo2xliff - convert between OpenOffice.org GSI files and XLIFF
    moz2po - convert between Mozilla files and PO
    csv2po - convert PO format to CSV for editing in a spreadsheet program
    php2po - PHP localisable string arrays converter.
    ts2po - convert Qt Linguist (.ts) files to PO
    txt2po - convert simple text files to PO
    html2po - convert HTML to PO (beta)
    md2po - convert Markdown to PO
    xliff2po - XLIFF (XML Localisation Interchange File Format) converter
    prop2po - convert Java .properties files to PO
    po2wordfast - Wordfast Translation Memory converter
    po2tmx - TMX (Translation Memory Exchange) converter
    pot2po - PO file initialiser
    csv2tbx - Create TBX (TermBase eXchange) files from Comma Separated
    Value (CSV) files
    ini2po - convert .ini files to PO
    ical2po - Convert iCalendar files (*.ics) to PO
    sub2po - Convert many subtitle files to PO
    rc2po - convert Windows Resource .rc files to PO
    resx2po - convert .Net Resource (.resx) files to PO
    
  • Tools (Quality Assurance):

    pofilter - run any of the 40+ checks on your PO files
    pomerge - merge corrected translations from pofilter back into
    your existing PO files.
    poconflicts - identify conflicting use of terms
    porestructure - restructures po files according to poconflict directives
    pogrep - find words in PO files
    
  • Tools (Other):

    pocompile - create a Gettext MO files from PO or XLIFF files
    pocount - count translatable file formats (PO, XLIFF)
    podebug - Create comment in your PO files' msgstr which can
    then be used to quickly track down mistranslations
    as the comments appear in the application.
    posegment - Break a PO or XLIFF files into sentence segments,
    useful for creating a segmented translation memory.
    poswap - uses a translation of another language that you
    would rather use than English as source language
    poterminology - analyse PO or POT files to build a list of
    frequently occurring words and phrases
    

About

Useful localization tools with Python API for building localization & translation systems

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - Inventas/translate: Useful localization tools with Python API for building localization & translation systems · GitHub
Skip to content

Repository files navigation

Translate Toolkit

Released versionhttps://readthedocs.org/projects/translate-toolkit/badge/Supported Python versionsLicense

The Translate Toolkit is a set of software and documentation designed to help make the lives of localizers both more productive and less frustrating. The Toolkit is part of the Translate project, hosted at <https://github.com/translate>.

The software includes programs to convert localization formats to the common PO, and emerging XLIFF format. There are also programs to check and manage PO and XLIFF files. Online documentation includes guides on using the tools, running a localization project and how to localize various projects from OpenOffice.org to Mozilla.

At its core the software contains a set of classes for handling various localization storage formats: DTD, properties, OpenOffice.org GSI/SDF, CSV, MO, Qt .ts, TMX, TBX, WordFast txt, Gettext .mo, Windows RC, and of course PO and XLIFF. It also provides scripts to convert between these formats.

Also part of the Toolkit are Python programs to create word counts, merge translations and perform various checks on translation files.

Important Links

Joining the Translate Project

If you would like to join the translate project mailing list then visit: <http://lists.sourceforge.net/lists/listinfo/translate-devel>.

The vision of the Translate Project is to be a meta project for localizers built on the premise that your language deserves to be a project on its own right not a poor cousin of the main project.

Most projects are inattentive to the needs and difficulties experienced by localizers. To that end the aim is to work towards creating tools and documentation that allows localizers to focus on what they do best: translating software.

Requirements

There are several extra requirements which you might to install to get full feature set. This cal be easily specified during pip installation:

# Install with XML support
pip install translate-toolkit[XML]
# Install all optional dependencies
pip install translate-toolkit[all]

Note

Please check pyproject.toml

The Toolkit requires Python 3.10 or newer.

The package lxml is required. You should install version 4.6.3 or later. <http://lxml.de/> Depending on your platform, the easiest way to install might be through your system's package management. Alternatively you can try

pip install lxml

which should install the newest version from the web.

For Mac OSX, the following pages might be of help: <http://lxml.de/build.html#building-lxml-on-macos-x> <http://lxml.de/installation.html#macos-x>

The package lxml has dependencies on libxml2 and libxslt. Please check the lxml site for the recommended versions of these libraries if you need to install them separately at all. Most packaged versions of lxml will already contain these dependencies.

When the environment variable USECPO is set to 1, the toolkit will attempt to use libgettextpo from the gettext-tools package (it might have a slightly different name on your distribution). This can greatly speed up access to PO files, but has not yet been tested as extensively. Feedback is most welcome.

The package iniparse is necessary for ini2po and po2ini: <https://pypi.org/project/iniparse/>

The RapidFuzz package will improve performance for fuzzy matching if it is available. This can improve the performance of pot2po, for example. It is optional and no functionality is lost if it is not installed, only speed. <https://pypi.org/project/RapidFuzz/>

Functions in the lang.data module can supply functions to translate language names using the pycountry package. It can even translate names in the format Language (Country) such as English (South Africa) This is used by Pootle and Virtaal. If the package is not installed, the language names will simply appear in English. It is therefore recommended you install the pycountry package.

The package vobject is needed for ical2po and po2ical.

The aeidon package is needed for sub2po and po2sub. Some Unicode encoded files (including most files from <http://dotsub.com/>) require version 0.14 or later.

Markdown support requires the mistletoe parser <https://github.com/miyuchina/mistletoe>

Program overview

Use --help to find the syntax and options for all programs.

Note

This is a selection of the most commonly used tools. For the complete list of converters and tools, see the online documentation.

  • Converters:

    oo2po - convert between OpenOffice.org GSI files and PO
    oo2xliff - convert between OpenOffice.org GSI files and XLIFF
    moz2po - convert between Mozilla files and PO
    csv2po - convert PO format to CSV for editing in a spreadsheet program
    php2po - PHP localisable string arrays converter.
    ts2po - convert Qt Linguist (.ts) files to PO
    txt2po - convert simple text files to PO
    html2po - convert HTML to PO (beta)
    md2po - convert Markdown to PO
    xliff2po - XLIFF (XML Localisation Interchange File Format) converter
    prop2po - convert Java .properties files to PO
    po2wordfast - Wordfast Translation Memory converter
    po2tmx - TMX (Translation Memory Exchange) converter
    pot2po - PO file initialiser
    csv2tbx - Create TBX (TermBase eXchange) files from Comma Separated
    Value (CSV) files
    ini2po - convert .ini files to PO
    ical2po - Convert iCalendar files (*.ics) to PO
    sub2po - Convert many subtitle files to PO
    rc2po - convert Windows Resource .rc files to PO
    resx2po - convert .Net Resource (.resx) files to PO
    
  • Tools (Quality Assurance):

    pofilter - run any of the 40+ checks on your PO files
    pomerge - merge corrected translations from pofilter back into
    your existing PO files.
    poconflicts - identify conflicting use of terms
    porestructure - restructures po files according to poconflict directives
    pogrep - find words in PO files
    
  • Tools (Other):

    pocompile - create a Gettext MO files from PO or XLIFF files
    pocount - count translatable file formats (PO, XLIFF)
    podebug - Create comment in your PO files' msgstr which can
    then be used to quickly track down mistranslations
    as the comments appear in the application.
    posegment - Break a PO or XLIFF files into sentence segments,
    useful for creating a segmented translation memory.
    poswap - uses a translation of another language that you
    would rather use than English as source language
    poterminology - analyse PO or POT files to build a list of
    frequently occurring words and phrases
    

About

Useful localization tools with Python API for building localization & translation systems

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Inventas/translate: Useful localization tools with Python API for building localization & translation systems · GitHub
Skip to content

Repository files navigation

Translate Toolkit

Released versionhttps://readthedocs.org/projects/translate-toolkit/badge/Supported Python versionsLicense

The Translate Toolkit is a set of software and documentation designed to help make the lives of localizers both more productive and less frustrating. The Toolkit is part of the Translate project, hosted at <https://github.com/translate>.

The software includes programs to convert localization formats to the common PO, and emerging XLIFF format. There are also programs to check and manage PO and XLIFF files. Online documentation includes guides on using the tools, running a localization project and how to localize various projects from OpenOffice.org to Mozilla.

At its core the software contains a set of classes for handling various localization storage formats: DTD, properties, OpenOffice.org GSI/SDF, CSV, MO, Qt .ts, TMX, TBX, WordFast txt, Gettext .mo, Windows RC, and of course PO and XLIFF. It also provides scripts to convert between these formats.

Also part of the Toolkit are Python programs to create word counts, merge translations and perform various checks on translation files.

Important Links

Joining the Translate Project

If you would like to join the translate project mailing list then visit: <http://lists.sourceforge.net/lists/listinfo/translate-devel>.

The vision of the Translate Project is to be a meta project for localizers built on the premise that your language deserves to be a project on its own right not a poor cousin of the main project.

Most projects are inattentive to the needs and difficulties experienced by localizers. To that end the aim is to work towards creating tools and documentation that allows localizers to focus on what they do best: translating software.

Requirements

There are several extra requirements which you might to install to get full feature set. This cal be easily specified during pip installation:

# Install with XML support
pip install translate-toolkit[XML]
# Install all optional dependencies
pip install translate-toolkit[all]

Note

Please check pyproject.toml

The Toolkit requires Python 3.10 or newer.

The package lxml is required. You should install version 4.6.3 or later. <http://lxml.de/> Depending on your platform, the easiest way to install might be through your system's package management. Alternatively you can try

pip install lxml

which should install the newest version from the web.

For Mac OSX, the following pages might be of help: <http://lxml.de/build.html#building-lxml-on-macos-x> <http://lxml.de/installation.html#macos-x>

The package lxml has dependencies on libxml2 and libxslt. Please check the lxml site for the recommended versions of these libraries if you need to install them separately at all. Most packaged versions of lxml will already contain these dependencies.

When the environment variable USECPO is set to 1, the toolkit will attempt to use libgettextpo from the gettext-tools package (it might have a slightly different name on your distribution). This can greatly speed up access to PO files, but has not yet been tested as extensively. Feedback is most welcome.

The package iniparse is necessary for ini2po and po2ini: <https://pypi.org/project/iniparse/>

The RapidFuzz package will improve performance for fuzzy matching if it is available. This can improve the performance of pot2po, for example. It is optional and no functionality is lost if it is not installed, only speed. <https://pypi.org/project/RapidFuzz/>

Functions in the lang.data module can supply functions to translate language names using the pycountry package. It can even translate names in the format Language (Country) such as English (South Africa) This is used by Pootle and Virtaal. If the package is not installed, the language names will simply appear in English. It is therefore recommended you install the pycountry package.

The package vobject is needed for ical2po and po2ical.

The aeidon package is needed for sub2po and po2sub. Some Unicode encoded files (including most files from <http://dotsub.com/>) require version 0.14 or later.

Markdown support requires the mistletoe parser <https://github.com/miyuchina/mistletoe>

Program overview

Use --help to find the syntax and options for all programs.

Note

This is a selection of the most commonly used tools. For the complete list of converters and tools, see the online documentation.

  • Converters:

    oo2po - convert between OpenOffice.org GSI files and PO
    oo2xliff - convert between OpenOffice.org GSI files and XLIFF
    moz2po - convert between Mozilla files and PO
    csv2po - convert PO format to CSV for editing in a spreadsheet program
    php2po - PHP localisable string arrays converter.
    ts2po - convert Qt Linguist (.ts) files to PO
    txt2po - convert simple text files to PO
    html2po - convert HTML to PO (beta)
    md2po - convert Markdown to PO
    xliff2po - XLIFF (XML Localisation Interchange File Format) converter
    prop2po - convert Java .properties files to PO
    po2wordfast - Wordfast Translation Memory converter
    po2tmx - TMX (Translation Memory Exchange) converter
    pot2po - PO file initialiser
    csv2tbx - Create TBX (TermBase eXchange) files from Comma Separated
    Value (CSV) files
    ini2po - convert .ini files to PO
    ical2po - Convert iCalendar files (*.ics) to PO
    sub2po - Convert many subtitle files to PO
    rc2po - convert Windows Resource .rc files to PO
    resx2po - convert .Net Resource (.resx) files to PO
    
  • Tools (Quality Assurance):

    pofilter - run any of the 40+ checks on your PO files
    pomerge - merge corrected translations from pofilter back into
    your existing PO files.
    poconflicts - identify conflicting use of terms
    porestructure - restructures po files according to poconflict directives
    pogrep - find words in PO files
    
  • Tools (Other):

    pocompile - create a Gettext MO files from PO or XLIFF files
    pocount - count translatable file formats (PO, XLIFF)
    podebug - Create comment in your PO files' msgstr which can
    then be used to quickly track down mistranslations
    as the comments appear in the application.
    posegment - Break a PO or XLIFF files into sentence segments,
    useful for creating a segmented translation memory.
    poswap - uses a translation of another language that you
    would rather use than English as source language
    poterminology - analyse PO or POT files to build a list of
    frequently occurring words and phrases
    

About

Useful localization tools with Python API for building localization & translation systems

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Inventas/translate: Useful localization tools with Python API for building localization & translation systems · GitHub
Skip to content

Repository files navigation

Translate Toolkit

Released versionhttps://readthedocs.org/projects/translate-toolkit/badge/Supported Python versionsLicense

The Translate Toolkit is a set of software and documentation designed to help make the lives of localizers both more productive and less frustrating. The Toolkit is part of the Translate project, hosted at <https://github.com/translate>.

The software includes programs to convert localization formats to the common PO, and emerging XLIFF format. There are also programs to check and manage PO and XLIFF files. Online documentation includes guides on using the tools, running a localization project and how to localize various projects from OpenOffice.org to Mozilla.

At its core the software contains a set of classes for handling various localization storage formats: DTD, properties, OpenOffice.org GSI/SDF, CSV, MO, Qt .ts, TMX, TBX, WordFast txt, Gettext .mo, Windows RC, and of course PO and XLIFF. It also provides scripts to convert between these formats.

Also part of the Toolkit are Python programs to create word counts, merge translations and perform various checks on translation files.

Important Links

Joining the Translate Project

If you would like to join the translate project mailing list then visit: <http://lists.sourceforge.net/lists/listinfo/translate-devel>.

The vision of the Translate Project is to be a meta project for localizers built on the premise that your language deserves to be a project on its own right not a poor cousin of the main project.

Most projects are inattentive to the needs and difficulties experienced by localizers. To that end the aim is to work towards creating tools and documentation that allows localizers to focus on what they do best: translating software.

Requirements

There are several extra requirements which you might to install to get full feature set. This cal be easily specified during pip installation:

# Install with XML support
pip install translate-toolkit[XML]
# Install all optional dependencies
pip install translate-toolkit[all]

Note

Please check pyproject.toml

The Toolkit requires Python 3.10 or newer.

The package lxml is required. You should install version 4.6.3 or later. <http://lxml.de/> Depending on your platform, the easiest way to install might be through your system's package management. Alternatively you can try

pip install lxml

which should install the newest version from the web.

For Mac OSX, the following pages might be of help: <http://lxml.de/build.html#building-lxml-on-macos-x> <http://lxml.de/installation.html#macos-x>

The package lxml has dependencies on libxml2 and libxslt. Please check the lxml site for the recommended versions of these libraries if you need to install them separately at all. Most packaged versions of lxml will already contain these dependencies.

When the environment variable USECPO is set to 1, the toolkit will attempt to use libgettextpo from the gettext-tools package (it might have a slightly different name on your distribution). This can greatly speed up access to PO files, but has not yet been tested as extensively. Feedback is most welcome.

The package iniparse is necessary for ini2po and po2ini: <https://pypi.org/project/iniparse/>

The RapidFuzz package will improve performance for fuzzy matching if it is available. This can improve the performance of pot2po, for example. It is optional and no functionality is lost if it is not installed, only speed. <https://pypi.org/project/RapidFuzz/>

Functions in the lang.data module can supply functions to translate language names using the pycountry package. It can even translate names in the format Language (Country) such as English (South Africa) This is used by Pootle and Virtaal. If the package is not installed, the language names will simply appear in English. It is therefore recommended you install the pycountry package.

The package vobject is needed for ical2po and po2ical.

The aeidon package is needed for sub2po and po2sub. Some Unicode encoded files (including most files from <http://dotsub.com/>) require version 0.14 or later.

Markdown support requires the mistletoe parser <https://github.com/miyuchina/mistletoe>

Program overview

Use --help to find the syntax and options for all programs.

Note

This is a selection of the most commonly used tools. For the complete list of converters and tools, see the online documentation.

  • Converters:

    oo2po - convert between OpenOffice.org GSI files and PO
    oo2xliff - convert between OpenOffice.org GSI files and XLIFF
    moz2po - convert between Mozilla files and PO
    csv2po - convert PO format to CSV for editing in a spreadsheet program
    php2po - PHP localisable string arrays converter.
    ts2po - convert Qt Linguist (.ts) files to PO
    txt2po - convert simple text files to PO
    html2po - convert HTML to PO (beta)
    md2po - convert Markdown to PO
    xliff2po - XLIFF (XML Localisation Interchange File Format) converter
    prop2po - convert Java .properties files to PO
    po2wordfast - Wordfast Translation Memory converter
    po2tmx - TMX (Translation Memory Exchange) converter
    pot2po - PO file initialiser
    csv2tbx - Create TBX (TermBase eXchange) files from Comma Separated
    Value (CSV) files
    ini2po - convert .ini files to PO
    ical2po - Convert iCalendar files (*.ics) to PO
    sub2po - Convert many subtitle files to PO
    rc2po - convert Windows Resource .rc files to PO
    resx2po - convert .Net Resource (.resx) files to PO
    
  • Tools (Quality Assurance):

    pofilter - run any of the 40+ checks on your PO files
    pomerge - merge corrected translations from pofilter back into
    your existing PO files.
    poconflicts - identify conflicting use of terms
    porestructure - restructures po files according to poconflict directives
    pogrep - find words in PO files
    
  • Tools (Other):

    pocompile - create a Gettext MO files from PO or XLIFF files
    pocount - count translatable file formats (PO, XLIFF)
    podebug - Create comment in your PO files' msgstr which can
    then be used to quickly track down mistranslations
    as the comments appear in the application.
    posegment - Break a PO or XLIFF files into sentence segments,
    useful for creating a segmented translation memory.
    poswap - uses a translation of another language that you
    would rather use than English as source language
    poterminology - analyse PO or POT files to build a list of
    frequently occurring words and phrases
    

About

Useful localization tools with Python API for building localization & translation systems

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - Inventas/translate: Useful localization tools with Python API for building localization & translation systems · GitHub
Skip to content

Repository files navigation

Translate Toolkit

Released versionhttps://readthedocs.org/projects/translate-toolkit/badge/Supported Python versionsLicense

The Translate Toolkit is a set of software and documentation designed to help make the lives of localizers both more productive and less frustrating. The Toolkit is part of the Translate project, hosted at <https://github.com/translate>.

The software includes programs to convert localization formats to the common PO, and emerging XLIFF format. There are also programs to check and manage PO and XLIFF files. Online documentation includes guides on using the tools, running a localization project and how to localize various projects from OpenOffice.org to Mozilla.

At its core the software contains a set of classes for handling various localization storage formats: DTD, properties, OpenOffice.org GSI/SDF, CSV, MO, Qt .ts, TMX, TBX, WordFast txt, Gettext .mo, Windows RC, and of course PO and XLIFF. It also provides scripts to convert between these formats.

Also part of the Toolkit are Python programs to create word counts, merge translations and perform various checks on translation files.

Important Links

Joining the Translate Project

If you would like to join the translate project mailing list then visit: <http://lists.sourceforge.net/lists/listinfo/translate-devel>.

The vision of the Translate Project is to be a meta project for localizers built on the premise that your language deserves to be a project on its own right not a poor cousin of the main project.

Most projects are inattentive to the needs and difficulties experienced by localizers. To that end the aim is to work towards creating tools and documentation that allows localizers to focus on what they do best: translating software.

Requirements

There are several extra requirements which you might to install to get full feature set. This cal be easily specified during pip installation:

# Install with XML support
pip install translate-toolkit[XML]
# Install all optional dependencies
pip install translate-toolkit[all]

Note

Please check pyproject.toml

The Toolkit requires Python 3.10 or newer.

The package lxml is required. You should install version 4.6.3 or later. <http://lxml.de/> Depending on your platform, the easiest way to install might be through your system's package management. Alternatively you can try

pip install lxml

which should install the newest version from the web.

For Mac OSX, the following pages might be of help: <http://lxml.de/build.html#building-lxml-on-macos-x> <http://lxml.de/installation.html#macos-x>

The package lxml has dependencies on libxml2 and libxslt. Please check the lxml site for the recommended versions of these libraries if you need to install them separately at all. Most packaged versions of lxml will already contain these dependencies.

When the environment variable USECPO is set to 1, the toolkit will attempt to use libgettextpo from the gettext-tools package (it might have a slightly different name on your distribution). This can greatly speed up access to PO files, but has not yet been tested as extensively. Feedback is most welcome.

The package iniparse is necessary for ini2po and po2ini: <https://pypi.org/project/iniparse/>

The RapidFuzz package will improve performance for fuzzy matching if it is available. This can improve the performance of pot2po, for example. It is optional and no functionality is lost if it is not installed, only speed. <https://pypi.org/project/RapidFuzz/>

Functions in the lang.data module can supply functions to translate language names using the pycountry package. It can even translate names in the format Language (Country) such as English (South Africa) This is used by Pootle and Virtaal. If the package is not installed, the language names will simply appear in English. It is therefore recommended you install the pycountry package.

The package vobject is needed for ical2po and po2ical.

The aeidon package is needed for sub2po and po2sub. Some Unicode encoded files (including most files from <http://dotsub.com/>) require version 0.14 or later.

Markdown support requires the mistletoe parser <https://github.com/miyuchina/mistletoe>

Program overview

Use --help to find the syntax and options for all programs.

Note

This is a selection of the most commonly used tools. For the complete list of converters and tools, see the online documentation.

  • Converters:

    oo2po - convert between OpenOffice.org GSI files and PO
    oo2xliff - convert between OpenOffice.org GSI files and XLIFF
    moz2po - convert between Mozilla files and PO
    csv2po - convert PO format to CSV for editing in a spreadsheet program
    php2po - PHP localisable string arrays converter.
    ts2po - convert Qt Linguist (.ts) files to PO
    txt2po - convert simple text files to PO
    html2po - convert HTML to PO (beta)
    md2po - convert Markdown to PO
    xliff2po - XLIFF (XML Localisation Interchange File Format) converter
    prop2po - convert Java .properties files to PO
    po2wordfast - Wordfast Translation Memory converter
    po2tmx - TMX (Translation Memory Exchange) converter
    pot2po - PO file initialiser
    csv2tbx - Create TBX (TermBase eXchange) files from Comma Separated
    Value (CSV) files
    ini2po - convert .ini files to PO
    ical2po - Convert iCalendar files (*.ics) to PO
    sub2po - Convert many subtitle files to PO
    rc2po - convert Windows Resource .rc files to PO
    resx2po - convert .Net Resource (.resx) files to PO
    
  • Tools (Quality Assurance):

    pofilter - run any of the 40+ checks on your PO files
    pomerge - merge corrected translations from pofilter back into
    your existing PO files.
    poconflicts - identify conflicting use of terms
    porestructure - restructures po files according to poconflict directives
    pogrep - find words in PO files
    
  • Tools (Other):

    pocompile - create a Gettext MO files from PO or XLIFF files
    pocount - count translatable file formats (PO, XLIFF)
    podebug - Create comment in your PO files' msgstr which can
    then be used to quickly track down mistranslations
    as the comments appear in the application.
    posegment - Break a PO or XLIFF files into sentence segments,
    useful for creating a segmented translation memory.
    poswap - uses a translation of another language that you
    would rather use than English as source language
    poterminology - analyse PO or POT files to build a list of
    frequently occurring words and phrases
    

About

Useful localization tools with Python API for building localization & translation systems

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages