Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,25 @@ Branding/
[`manifest.schema.json`](./manifest.schema.json); every package is
validated against it (plus semantic checks in `tools/validate.php`) by CI.

## Translations

Module translations will use a separate **FOSSBilling Modules** Crowdin project, starting with Branding and Cookieconsent. The inactive [configuration example](./crowdin.example.yml) keeps each module's template and translations together:

```text
Branding/locale/branding.pot
Branding/locale/<locale>/LC_MESSAGES/branding.po
Cookieconsent/locale/cookieconsent.pot
Cookieconsent/locale/<locale>/LC_MESSAGES/cookieconsent.po
```

Use the existing [translation tooling](https://github.com/FOSSBilling/FOSSBilling/blob/main/tools/i18n/README.md) to extract, validate and compile translations.

The example needs `CROWDIN_MODULES_PROJECT_ID` and `CROWDIN_MODULES_PERSONAL_TOKEN` for the separate Modules project. Existing core project 4 remains owned by `FOSSBilling/locale`.

Before activation, create the Modules project, review source and target languages, translator access and shared translation memory, and import and validate the existing translations. Carry out that one-time migration directly. PO imports do not preserve Crowdin approval state or full history; retain the original project for attribution and review imports before approval.

The example is not read by a workflow. Installing it as `crowdin.yml`, connecting Crowdin and enabling synchronization are separate activation steps. Module releases and publication remain separate from this configuration preparation.

## Releasing

Tag the release `<extension-id>-v<semver>` (e.g. `branding-v0.8.9`, version
Expand Down
15 changes: 15 additions & 0 deletions crowdin.example.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Install in FOSSBilling/modules after review, using the separate Modules project.
# Supply its project ID and token through the environment.
project_id_env: CROWDIN_MODULES_PROJECT_ID
api_token_env: CROWDIN_MODULES_PERSONAL_TOKEN
base_url: https://fossbilling.api.crowdin.com
base_path: .
preserve_hierarchy: true
files:
- source: /Branding/locale/branding.pot
translation: /Branding/locale/%locale_with_underscore%/LC_MESSAGES/branding.po
- source: /Cookieconsent/locale/cookieconsent.pot
translation: /Cookieconsent/locale/%locale_with_underscore%/LC_MESSAGES/cookieconsent.po
pull_request_title: '[Automated] Module translations'
pull_request_labels:
- crowdin
Loading