ReadMe.md
August 5, 2026 · View on GitHub
Localizations for FieldWorks
The authoritative list of supported languages is maintained at https://crowdin.com/project/fieldworks/settings#translations. To add a new language, you will also need to update its entries in the FieldWorks repository. The installer is mid-migration from WiX 3 to WiX 6, so each locale is duplicated across parallel files; a search for a locale code such as “zh” across Build/ and FLExInstaller/ reliably reveals all of them. Currently:
Build/Installer.targetsandBuild/Installer.legacy.targets— theL10nFilesitem group (locale output folders)FLExInstaller/CustomComponents.wxiandFLExInstaller/wix6/CustomComponents.wxi— several places each (directory,WixVariables, harvest include)FLExInstaller/CustomFeatures.wxiandFLExInstaller/wix6/CustomFeatures.wxi— the per-language<Feature>list
This repository no longer holds checked-in localizations (those are in Crowdin and archived as this repository's GitHub Releases). It serves as a repository of tools to facilitate localization and as a staging area for Crowdin uploads and downloads. Instructions are in this Google document.
Removing or adding strings
If you remove strings from FieldWorks you will need to get your system ready and run the uploadUpdatesForTranslation build target.
- Make sure that you have liblcm cloned locally, checked out to the right branch, and set the
LcmRootDirenvironment variable to the path of that clone. - Clone this repository (FwLocalizations) into the FieldWorks repo root as
Localizations(so the path is<FieldWorks>/Localizations; see FieldWorksCONTRIBUTING.md). The build reads itslists/sources from there and writes generated files (*.xlf,messages.pot,LCM/,l10ns/) back into it. - Set the
CROWDIN_API_KEYenvironment variable to a Crowdin personal access token (Crowdin API v2 —overcrowdinis built onCrowdin.Apiv2, which authenticates with a personal access token) for an account with access to the FieldWorks Crowdin project. - From the FieldWorks repo root, run
.\build.ps1 -Target uploadUpdatesForTranslation
This uploads lists/LocalizableLists.xml (and other localizable sources) to the "latest" branch of the Crowdin project, per FieldWorks' crowdin.json. Check which branch your change needs to reach before assuming an upload or download is visible on the other side.
Semantic Domains and other lists have independent copies elsewhere
lists/LocalizableLists.xml is the Crowdin source for semantic domain names, descriptions, and questions, but several other repos hold their own static copies of the same text that are not regenerated when this file changes and must be updated by hand:
- semdom.org (the authoritative version)
- liblcm:
src/SIL.LCModel/Templates/SemDom.xml(the English version packaged with FieldWorks) - TheCombine:
deploy/scripts/semantic_domains/xml/SemanticDomains-*.xml(FieldWorks can roundtrip data to TheCombine) - webonary:
localizations/input/LocalizedLists-*.xml(FieldWorks can upload data to Webonary)
If you edit the English text in lists/LocalizableLists.xml, check whether those copies need the same edit.
Other lists represented in lists/LocalizableLists.xml come from multiple other files. The Google document linked above has instructions for regenerating lists/LocalizableLists.xml from these lists.