Orchard uses PO files to support translation / pluralization of static strings.
See the orchard documentation
We have a GitHub action script that automates the translation process for us.
This action is triggerred manually by running the workflow from here.
This script does the following: 1. Extracts the translation in po files from the code with the PoExtractor.OrchardCore dotnet tool. 2. Runs our translation_script that uses the free Google Translate api to get a best guess estimate of the translations. 3. Creates a pull request with the new translations strings.