{"id":13716083,"url":"https://github.com/translate/translate","last_synced_at":"2026-03-03T18:04:03.633Z","repository":{"id":2770935,"uuid":"3769696","full_name":"translate/translate","owner":"translate","description":"Useful localization tools with Python API for building localization \u0026 translation systems","archived":false,"fork":false,"pushed_at":"2026-03-01T09:00:39.000Z","size":14353,"stargazers_count":938,"open_issues_count":276,"forks_count":333,"subscribers_count":39,"default_branch":"master","last_synced_at":"2026-03-01T11:44:55.869Z","etag":null,"topics":["gettext","hacktoberfest","i18n","l10n","localization","python","translate"],"latest_commit_sha":null,"homepage":"https://toolkit.translatehouse.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/translate.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"WeblateOrg","liberapay":"Weblate","open_collective":"weblate"}},"created_at":"2012-03-19T23:05:29.000Z","updated_at":"2026-02-27T22:10:57.000Z","dependencies_parsed_at":"2023-09-26T22:07:56.798Z","dependency_job_id":"1101f26b-d3f3-40b3-a8c0-7354c6cc496b","html_url":"https://github.com/translate/translate","commit_stats":{"total_commits":8945,"total_committers":143,"mean_commits":62.55244755244755,"dds":0.7646730016769145,"last_synced_commit":"18283688e4a2285775bf416a99ec83e564b62d49"},"previous_names":[],"tags_count":129,"template":false,"template_full_name":null,"purl":"pkg:github/translate/translate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/translate%2Ftranslate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/translate%2Ftranslate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/translate%2Ftranslate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/translate%2Ftranslate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/translate","download_url":"https://codeload.github.com/translate/translate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/translate%2Ftranslate/sbom","scorecard":{"id":377383,"data":{"date":"2025-08-11","repo":{"name":"github.com/translate/translate","commit":"52786ff2e2d150d46caf8b5adc085c507e136fd1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.5,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 1/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/setup.yml:94","Info: topLevel 'contents' permission set to 'read': .github/workflows/docs.yml:11","Info: topLevel 'contents' permission set to 'read': .github/workflows/pre-commit.yml:11","Info: topLevel 'contents' permission set to 'read': .github/workflows/setup.yml:13","Info: topLevel 'contents' permission set to 'read': .github/workflows/test.yml:11"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":10,"reason":"all dependencies are pinned","details":["Info:  11 out of  11 GitHub-owned GitHubAction dependencies pinned","Info:   8 out of   8 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: COPYING:0","Info: FSF or OSI recognized license: GNU General Public License v2.0: COPYING:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 3.15.6 not signed: https://api.github.com/repos/translate/translate/releases/229693284","Warn: release artifact 3.15.5 not signed: https://api.github.com/repos/translate/translate/releases/225464188","Warn: release artifact 3.15.4 not signed: https://api.github.com/repos/translate/translate/releases/225464148","Warn: release artifact 3.15.3 not signed: https://api.github.com/repos/translate/translate/releases/224336261","Warn: release artifact 3.15.2 not signed: https://api.github.com/repos/translate/translate/releases/214730051","Warn: release artifact 3.15.6 does not have provenance: https://api.github.com/repos/translate/translate/releases/229693284","Warn: release artifact 3.15.5 does not have provenance: https://api.github.com/repos/translate/translate/releases/225464188","Warn: release artifact 3.15.4 does not have provenance: https://api.github.com/repos/translate/translate/releases/225464148","Warn: release artifact 3.15.3 does not have provenance: https://api.github.com/repos/translate/translate/releases/224336261","Warn: release artifact 3.15.2 does not have provenance: https://api.github.com/repos/translate/translate/releases/214730051"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/setup.yml:68"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":6,"reason":"SAST tool is not run on all commits -- score normalized to 6","details":["Warn: 20 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T14:34:38.886Z","repository_id":2770935,"created_at":"2025-08-18T14:34:38.886Z","updated_at":"2025-08-18T14:34:38.886Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30054014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T17:46:22.538Z","status":"ssl_error","status_checked_at":"2026-03-03T17:46:22.036Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gettext","hacktoberfest","i18n","l10n","localization","python","translate"],"created_at":"2024-08-03T00:01:06.877Z","updated_at":"2026-03-03T18:04:03.609Z","avatar_url":"https://github.com/translate.png","language":"Python","readme":"Translate Toolkit\n-----------------\n\n.. image:: https://img.shields.io/pypi/v/translate-toolkit.svg\n    :alt: Released version\n    :target: https://pypi.python.org/pypi/translate-toolkit/\n\n.. image:: https://readthedocs.org/projects/translate-toolkit/badge/\n    :target: https://docs.translatehouse.org/projects/translate-toolkit/en/latest/\n\n.. image:: https://img.shields.io/pypi/pyversions/translate-toolkit.svg\n    :alt: Supported Python versions\n    :target: https://pypi.python.org/pypi/translate-toolkit/\n\n.. image:: https://img.shields.io/pypi/l/translate-toolkit.svg\n    :target: https://pypi.python.org/pypi/translate-toolkit/\n    :alt: License\n\nThe Translate Toolkit is a set of software and documentation designed to help\nmake the lives of localizers both more productive and less frustrating.  The\nToolkit is part of the Translate project, hosted at\n\u003chttps://github.com/translate\u003e.\n\nThe software includes programs to convert localization formats to the common\nPO, and emerging XLIFF format.  There are also programs to check and manage PO\nand XLIFF files.  Online documentation includes guides on using the tools,\nrunning a localization project and how to localize various projects from\nOpenOffice.org to Mozilla.\n\nAt its core the software contains a set of classes for handling various\nlocalization storage formats: DTD, properties, OpenOffice.org GSI/SDF,\nCSV, MO, Qt .ts, TMX, TBX, WordFast txt, Gettext .mo, Windows RC, and\nof course PO and XLIFF.  It also provides scripts to convert between\nthese formats.\n\nAlso part of the Toolkit are Python programs to create word counts, merge\ntranslations and perform various checks on translation files.\n\n\nImportant Links\n---------------\n\n* `Latest release downloads \u003chttps://github.com/translate/translate/releases\u003e`_\n* `Documentation\n  \u003chttp://docs.translatehouse.org/projects/translate-toolkit/en/latest/\u003e`_,\n  also use ``--help`` with any of the commands.\n* The Translate Toolkit is released under the `GPL\n  \u003chttps://github.com/translate/translate/blob/master/COPYING\u003e`_ with\n  `contributions from many people\n  \u003chttps://github.com/translate/translate/blob/master/CREDITS\u003e`_.\n* `Reporting issues \u003chttps://github.com/translate/translate/issues\u003e`_\n* `Installation \u003chttp://docs.translatehouse.org/projects/translate-toolkit/en/stable/installation.html\u003e`_\n\n\nJoining the Translate Project\n-----------------------------\nIf you would like to join the translate project mailing list then visit:\n\u003chttp://lists.sourceforge.net/lists/listinfo/translate-devel\u003e.\n\nThe vision of the Translate Project is to be a meta project for localizers\nbuilt on the premise that your language deserves to be a project on its own\nright not a poor cousin of the main project.\n\nMost projects are inattentive to the needs and difficulties experienced by\nlocalizers. To that end the aim is to work towards creating tools and\ndocumentation that allows localizers to focus on what they do best: translating\nsoftware.\n\nRequirements\n------------\n\nThere are several extra requirements which you might to install to get full\nfeature set. This cal be easily specified during pip installation::\n\n    # Install with XML support\n    pip install translate-toolkit[XML]\n\n    # Install all optional dependencies\n    pip install translate-toolkit[all]\n\n.. note:: Please check ``pyproject.toml``\n\nThe Toolkit requires Python 3.10 or newer.\n\nThe package lxml is required. You should install version 4.6.3 or later.\n\u003chttp://lxml.de/\u003e Depending on your platform, the easiest way to install might\nbe through your system's package management. Alternatively you can try ::\n\n    pip install lxml\n\nwhich should install the newest version from the web.\n\nFor Mac OSX, the following pages might be of help:\n\u003chttp://lxml.de/build.html#building-lxml-on-macos-x\u003e\n\u003chttp://lxml.de/installation.html#macos-x\u003e\n\nThe package lxml has dependencies on libxml2 and libxslt. Please check the lxml\nsite for the recommended versions of these libraries if you need to install\nthem separately at all. Most packaged versions of lxml will already contain\nthese dependencies.\n\nWhen the environment variable USECPO is set to 1, the toolkit will attempt to\nuse libgettextpo from the gettext-tools package (it might have a slightly\ndifferent name on your distribution). This can greatly speed up access to PO\nfiles, but has not yet been tested as extensively. Feedback is most welcome.\n\nThe package iniparse is necessary for ini2po and po2ini:\n\u003chttps://pypi.org/project/iniparse/\u003e\n\nThe RapidFuzz package will improve performance for fuzzy matching if\nit is available. This can improve the performance of pot2po, for example.  It\nis optional and no functionality is lost if it is not installed, only speed.\n\u003chttps://pypi.org/project/RapidFuzz/\u003e\n\nFunctions in the `lang.data` module can supply functions to translate language\nnames using the `pycountry` package. It can even translate names in the format\n``Language (Country)`` such as ``English (South Africa)`` This is used by\nPootle and Virtaal. If the package is not installed, the language names will\nsimply appear in English. It is therefore recommended you install the\n`pycountry` package.\n\nThe package vobject is needed for ical2po and po2ical.\n\nThe aeidon package is needed for sub2po\nand po2sub. Some Unicode encoded files (including most files from\n\u003chttp://dotsub.com/\u003e) require version 0.14 or later.\n\nMarkdown support requires the mistletoe parser\n\u003chttps://github.com/miyuchina/mistletoe\u003e\n\nProgram overview\n----------------\n\nUse ``--help`` to find the syntax and options for all programs.\n\n.. note::\n\n   This is a selection of the most commonly used tools. For the complete list\n   of converters and tools, see the `online documentation\n   \u003chttps://docs.translatehouse.org/projects/translate-toolkit/en/latest/commands/index.html\u003e`_.\n\n* Converters::\n\n        oo2po    - convert between OpenOffice.org GSI files and PO\n        oo2xliff - convert between OpenOffice.org GSI files and XLIFF\n        moz2po   - convert between Mozilla files and PO\n        csv2po   - convert PO format to CSV for editing in a spreadsheet program\n        php2po   - PHP localisable string arrays converter.\n        ts2po    - convert Qt Linguist (.ts) files to PO\n        txt2po   - convert simple text files to PO\n        html2po  - convert HTML to PO (beta)\n        md2po    - convert Markdown to PO\n        xliff2po - XLIFF (XML Localisation Interchange File Format) converter\n        prop2po  - convert Java .properties files to PO\n        po2wordfast - Wordfast Translation Memory converter\n        po2tmx   - TMX (Translation Memory Exchange) converter\n        pot2po   - PO file initialiser\n        csv2tbx  - Create TBX (TermBase eXchange) files from Comma Separated\n                   Value (CSV) files\n        ini2po   - convert .ini files to PO\n        ical2po  - Convert iCalendar files (*.ics) to PO\n        sub2po   - Convert many subtitle files to PO\n        rc2po    - convert Windows Resource .rc files to PO\n        resx2po  - convert .Net Resource (.resx) files to PO\n\n* Tools (Quality Assurance)::\n\n        pofilter - run any of the 40+ checks on your PO files\n        pomerge  - merge corrected translations from pofilter back into\n                   your existing PO files.\n        poconflicts - identify conflicting use of terms\n        porestructure - restructures po files according to poconflict directives\n        pogrep   - find words in PO files\n\n* Tools (Other)::\n\n        pocompile - create a Gettext MO files from PO or XLIFF files\n        pocount   - count translatable file formats (PO, XLIFF)\n        podebug   - Create comment in your PO files' msgstr which can\n                    then be used to quickly track down mistranslations\n                    as the comments appear in the application.\n        posegment - Break a PO or XLIFF files into sentence segments,\n                    useful for creating a segmented translation memory.\n        poswap    - uses a translation of another language that you\n                    would rather use than English as source language\n        poterminology - analyse PO or POT files to build a list of\n                        frequently occurring words and phrases\n","funding_links":["https://github.com/sponsors/WeblateOrg","https://liberapay.com/Weblate","https://opencollective.com/weblate"],"categories":["Python","Software-Internationalisierung (I18n) \u0026 -Lokalisierung (L10n)","Tools"],"sub_categories":["Libraries and tools for developers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftranslate%2Ftranslate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftranslate%2Ftranslate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftranslate%2Ftranslate/lists"}