Skip to content

API endpoint to download all components of a project for a specific language #16811

@Huaweidev

Description

@Huaweidev

Describe the problem

Summary

Currently, the Weblate API allows downloading:

A single component for a specific language via

GET /api/translations/(string:project)/(string:component)/(string:language)/file/

WEBLATE_EXPORTERS

All translations of a single component (all languages) via

GET /api/components/(string:project)/(string:component)/file/

https://docs.weblate.org/en/latest/user/files.html#download

However, there is no direct API endpoint to download all components of a project for one specified language.
This feature would be useful for projects containing multiple components that share the same translation target (e.g., modularized applications, plugins, or firmware UI sets).

Solution brainstorm

Proposed behavior

Add an API endpoint, for example:

GET /api/projects/{project}/{language}/file/

which returns a .zip archive containing all component translation files for the specified language in that project.

Describe alternatives you have considered

No response

Screenshots

No response

Additional context

Benefits

  • Eliminates the need for multiple API calls and manual ZIP aggregation.
  • Simplifies automation for CI/CD and localization export pipelines.
  • Consistent with existing /file/ behavior at component level.

Optional parameters

  • format — specify export format (po, xliff, json, etc.).
  • filter — optional regex to select subset of components.

Example use cases

  • Continuous deployment pipelines fetching updated translations for a language across all modules.
  • Translation QA scripts requiring full-language consistency across multiple components.
  • Integration with downstream packaging or firmware build systems.

Implementation idea

  • Reuse existing export logic of /api/translations/{project}/{component}/{language}/file/.
  • Iterate over all components under the specified project and aggregate them into one temporary ZIP.
  • Similar to how component/file/ endpoint aggregates by language, but scoped inversely (language first, then component).

Metadata

Metadata

Assignees

Labels

Area: APIIssues related to API improvements.Waiting for: ReleaseThe issue is fixed and waiting to be released.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions