Skip to content

Latest commit

 

History

1,364 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Locale Files for FOSSBilling

This repository contains the locale files for FOSSBilling. The files are in the GNU gettext format.

How to Contribute

If you want to contribute to the translations, please join our Crowdin project and use the web interface to translate the files.

All contributors are expected to follow our Code of Conduct. If you have any questions, please ask them in the #localization channel.

Adding a New Language

To have a language added, please create a new issue in this repository or join our Discord and request your language in the #localization channel.

If we think think the language is relevant and will be used by a significant number of users, we will add it to Crowdin and you can start translating. A language will be considered relevant if there is an existing userbase that's using the language and willing to contribute to the translations in the long run.

Release Tags

Translation releases are generated automatically and are tagged pot-<sha256> using the SHA-256 hash of the messages.pot file, allowing users to find and update to the most recent translations that match their FOSSBilling version. (The pot- prefix is required because GitHub rejects bare 40/64-character hex strings as tag names.)

Maintenance

Building the .MO Files

The .MO files are automatically generated and pushed using GitHub Actions after each PR is merged. If you want to build the files manually, check what the workflow is doing and replicate it on your machine.

Updating the .POT file

messages.pot is regenerated automatically by the Update Translation Template workflow (.github/workflows/update-pot.yml), which runs weekly and on manual dispatch. It checks out FOSSBilling/FOSSBilling@main:src, runs the open-source extractor at FOSSBilling/.github/scripts/extract_pot.py, and opens a review PR here when the msgid set changed. The workflow never pushes to main directly.

What the extractor covers:

  • Twig templates: string literals passed to the |trans filter.
  • PHP sources: first-arg literals of __trans(), __pluralTrans() (args 1+2) and the exception keywords (Exception, InformationException, Server_Exception, Registrar_Exception, Payment_Exception), including new X('...') — but skipping calls whose message is built at runtime (variables, sprintf(), concatenation, $"..." interpolation).
  • Scope: src/ minus vendor/, install/, data/, load.php, */tests/* and the *.js / *.html / *.css / *.scss / *.md extensions.

Deliberate policies:

  • Obsolete msgids are dropped. Strings no longer present in source are removed from the .pot; Crowdin keeps them in translation memory, so no translator work is lost.
  • Msgids are matched exactly (case-sensitive) by gettext. Casing-only changes (e.g. a Title-Case migration) invalidate existing translations for those strings until they are retranslated — the update PR body calls these out explicitly, so review it before merging.

If you change what counts as translatable in the FOSSBilling source (new helpers, new keywords), update the extractor script in the main repo alongside it. To regenerate the .pot outside the schedule, use Actions → Update Translation Template → Run workflow here, or run locally:

git clone --depth 1 https://github.com/FOSSBilling/FOSSBilling fossbilling
python3 fossbilling/.github/scripts/extract_pot.py fossbilling/src messages.pot

About

This repository holds locale files for FOSSBilling

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages