{"id":28523168,"url":"https://github.com/weblateorg/translation-finder","last_synced_at":"2025-07-06T05:32:09.004Z","repository":{"id":33597676,"uuid":"153728203","full_name":"WeblateOrg/translation-finder","owner":"WeblateOrg","description":"Translation files finder","archived":false,"fork":false,"pushed_at":"2025-07-03T19:07:09.000Z","size":812,"stargazers_count":21,"open_issues_count":1,"forks_count":9,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-07-03T20:21:31.824Z","etag":null,"topics":["files","i18n","python","weblate"],"latest_commit_sha":null,"homepage":"https://weblate.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WeblateOrg.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"WeblateOrg","open_collective":"weblate","liberapay":"Weblate","custom":"https://weblate.org/donate/"}},"created_at":"2018-10-19T04:51:33.000Z","updated_at":"2025-07-03T19:07:12.000Z","dependencies_parsed_at":"2023-12-21T20:28:29.461Z","dependency_job_id":"2e7745df-bfae-4871-a490-0309d5b75fe1","html_url":"https://github.com/WeblateOrg/translation-finder","commit_stats":{"total_commits":830,"total_committers":9,"mean_commits":92.22222222222223,"dds":"0.36987951807228914","last_synced_commit":"099f051a7ec083112869f149485e59eb95cc60fb"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/WeblateOrg/translation-finder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeblateOrg%2Ftranslation-finder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeblateOrg%2Ftranslation-finder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeblateOrg%2Ftranslation-finder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeblateOrg%2Ftranslation-finder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WeblateOrg","download_url":"https://codeload.github.com/WeblateOrg/translation-finder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeblateOrg%2Ftranslation-finder/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263853332,"owners_count":23520124,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["files","i18n","python","weblate"],"created_at":"2025-06-09T10:07:30.620Z","updated_at":"2025-07-06T05:32:08.998Z","avatar_url":"https://github.com/WeblateOrg.png","language":"Python","funding_links":["https://github.com/sponsors/WeblateOrg","https://opencollective.com/weblate","https://liberapay.com/Weblate","https://weblate.org/donate/"],"categories":[],"sub_categories":[],"readme":".. image:: https://s.weblate.org/cdn/Logo-Darktext-borders.png\n   :alt: Weblate\n   :target: https://weblate.org/\n   :height: 80px\n\n**Weblate is libre software web-based continuous localization system,\nused by over 2500 libre projects and companies in more than 165 countries.**\n\nA translation file finder for `Weblate`_, translation tool with tight version\ncontrol integration.\n\n.. image:: https://img.shields.io/badge/website-weblate.org-blue.svg\n    :alt: Website\n    :target: https://weblate.org/\n\n.. image:: https://hosted.weblate.org/widgets/weblate/-/svg-badge.svg\n    :alt: Translation status\n    :target: https://hosted.weblate.org/engage/weblate/?utm_source=widget\n\n.. image:: https://bestpractices.coreinfrastructure.org/projects/552/badge\n    :alt: CII Best Practices\n    :target: https://bestpractices.coreinfrastructure.org/projects/552\n\n.. image:: https://img.shields.io/pypi/v/translation-finder.svg\n    :target: https://pypi.org/project/translation-finder/\n    :alt: PyPI package\n\n.. image:: https://readthedocs.org/projects/weblate/badge/\n    :alt: Documentation\n    :target: https://docs.weblate.org/\n\nThis library is used by `Weblate`_ to discover translation files in a cloned\nrepository. It can operate on both file listings and actual filesystem.\nFilesystem access is needed for more accurate detection in some cases\n(detecting encoding or actual syntax of similar files).\n\nUsage\n-----\n\nIn can be used from Python:\n\n.. code-block:: pycon\n\n   \u003e\u003e\u003e from translation_finder import discover\n   \u003e\u003e\u003e from pprint import pprint\n   \u003e\u003e\u003e results = discover(\"translation_finder/test_data/\")\n   \u003e\u003e\u003e len(results)\n   30\n   \u003e\u003e\u003e pprint(results[0].match)\n   {'file_format': 'aresource',\n    'filemask': 'app/src/res/main/values-*/strings.xml',\n    'name': 'android',\n    'template': 'app/src/res/main/values/strings.xml'}\n   \u003e\u003e\u003e pprint(results[16].match)\n   {'file_format': 'po',\n    'filemask': 'locales/*.po',\n    'new_base': 'locales/messages.pot'}\n\nAdditional information about discovery can be obtained from meta attribute:\n\n.. code-block:: pycon\n\n   \u003e\u003e\u003e pprint(results[0].meta)\n   {'discovery': 'TransifexDiscovery', 'origin': 'Transifex', 'priority': 500}\n   \u003e\u003e\u003e pprint(results[16].meta)\n   {'discovery': 'GettextDiscovery', 'origin': None, 'priority': 1000}\n\n\nOr command line:\n\n.. code-block:: console\n\n   $ weblate-discovery translation_finder/test_data/\n   == Match 1 (Transifex) ==\n   file_format    : aresource\n   filemask       : app/src/res/main/values-*/strings.xml\n   name           : android\n   template       : app/src/res/main/values/strings.xml\n   ...\n\n   == Match 7 ==\n   file_format    : po\n   filemask       : locales/*.po\n   new_base       : locales/messages.pot\n\n.. _Weblate: https://weblate.org/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweblateorg%2Ftranslation-finder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweblateorg%2Ftranslation-finder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweblateorg%2Ftranslation-finder/lists"}