-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Copy link
Labels
Area: APIIssues related to API improvements.Issues related to API improvements.Waiting for: ReleaseThe issue is fixed and waiting to be released.The issue is fixed and waiting to be released.
Milestone
Description
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).
mensinda
Metadata
Metadata
Assignees
Labels
Area: APIIssues related to API improvements.Issues related to API improvements.Waiting for: ReleaseThe issue is fixed and waiting to be released.The issue is fixed and waiting to be released.