Many NVDA add-ons use the NVDA Add-ons Crowdin project (nvdaaddons) to manage translations.
This project allows translators to contribute both interface translations and documentation translations.
Translations are synchronized back to add-on repositories through the localization workflow provided by the NVDA Add-on Template.
Before contributing translations, translators are encouraged to subscribe to the NVDA Translations mailing list.
The mailing list is the primary place for discussing translation-related topics within the NVDA community.
The NVDA community maintains the NVDA Translations mailing list on Groups.io.
This mailing list is used to:
- Discuss translation-related topics.
- Request access to translation teams.
- Coordinate translation efforts.
- Report translation issues.
- Discuss problems affecting translation tools or workflows.
Translators are encouraged to subscribe to the mailing list:
https://groups.io/g/nvda-translations
The mailing list is often the best place to ask questions, request access to a translation team, and seek assistance from other translators and project maintainers.
To contribute translations:
- Create a Crowdin account.
- Subscribe to the NVDA Translations mailing list.
- Request access to the appropriate translation team if necessary.
- Join the NVDA Add-ons Crowdin project.
- Select the language you wish to translate.
- Begin translating interface strings and documentation.
Translations can be performed using either the Crowdin web interface or local translation tools.
Crowdin provides a web-based editor that allows translators to:
- Translate strings online.
- Review existing translations.
- Suggest improvements.
- Vote on translation proposals.
This method does not require any additional software installation.
Many NVDA translators prefer to work locally using Poedit because of its accessibility and ease of use.
Poedit supports both:
- Portable Object (
.po) files used for interface translations. - XLIFF (
.xliff) files used for documentation translations.
After completing translations locally, files can be uploaded back to Crowdin using l10nUtil.exe.
Interface translations are stored in Portable Object (.po) files.
These files can be translated either:
- Directly in Crowdin.
- Using Poedit.
Documentation translations are stored in XLIFF (.xliff) files.
These files are generated automatically from the add-on documentation.
Documentation can be translated:
- Directly in Crowdin.
- Using Poedit.
When translating documentation:
- Translate only the text content.
- Preserve placeholders and formatting.
- Do not modify the XLIFF structure manually.
After translating files locally, they can be uploaded to Crowdin using l10nUtil.exe
Examples:
l10nUtil.exe uploadTranslationFile fr addonName.po -c addonl10nUtil.exe uploadTranslationFile fr addonName.xliff -c addonWhere:
fris the Crowdin language code.addonName.pois a translated interface file.addonName.xliffis a translated documentation file.
Once uploaded, the translations become available in Crowdin and can later be synchronized back into the add-on repository.
To display the complete list of available commands:
l10nUtil.exe --helpor:
l10nUtil.exe -hTo display help for a specific command:
l10nUtil.exe downloadTranslationFile --helpor:
l10nUtil.exe downloadTranslationFile -hRefer to the utility help output for a complete list of supported commands and options.
Translations are not immediately imported into GitHub repositories.
The add-on maintainer runs a synchronization workflow that:
- Connects to the NVDA Add-ons Crowdin project.
- Downloads completed translations.
- Verifies their translation completion percentage.
- Synchronizes eligible translations back into the repository.
Depending on the repository configuration, translations may only be synchronized after reaching a minimum completion percentage.
This threshold is controlled by the add-on maintainer.
Possible reasons include:
- The synchronization workflow has not yet run.
- The required translation completion percentage has not yet been reached.
- The maintainer has temporarily disabled synchronization.
- The translation was completed after the most recent synchronization cycle.
To improve translation quality:
- Maintain consistency with existing terminology.
- Preserve placeholders and formatting.
- Review existing translations before introducing new terminology.
- Coordinate with other translators whenever possible.
- Test translated files locally before uploading them when possible.
If you encounter translation issues:
- Contact the add-on maintainer.
- Open an issue in the add-on repository if appropriate.
- Ask for assistance on the NVDA Translations mailing list.
- Discuss translation-related issues with the NVDA translation community.
Yes.
The NVDA Add-ons Crowdin project supports both interface translations (.po) and documentation translations (.xliff).
No.
Many translators work directly in Crowdin, while others prefer to use Poedit and upload their completed translations afterwards using l10nUtil.exe.
Both approaches are supported by the NVDA Add-ons translation workflow.
Not necessarily.
Most translators work exclusively through Crowdin or through local translation tools combined with l10nUtil.exe.
The synchronization workflow is managed by the add-on maintainer and automatically imports translations into GitHub repositories.
No.
Synchronization is controlled by the add-on maintainer through the localization workflow provided by the NVDA Add-on Template.