microsoft / AL-Go

The plug-and-play DevOps solution for Business Central app development on GitHub
MIT License
261 stars 113 forks source link

Translations / XLIFF experience #797

Open fvet opened 9 months ago

fvet commented 9 months ago

One of the things which is not clear is how to include translation updates as part of the dev process. I suppose this is on the agenda already, but pls find hereby some input on some tools / processes we currently use.


PTE app development As the majority of our customers use BC in Dutch, which is the primary language of our developers, translations are included in code by the developer. (using the 'comment"nl-BE='translation'" tag)

Pro's:

As the developer might have forgotten some translations or did not update the xliff files, we expect the build pipelines to include a safety gate ensuring ...

To achieve the above, we've integrated Xliff-Sync (https://robvanbekkum.nl/xliff-sync-overview/) in our Azure DevOps build pipelines:

  1. App is compiled to get the latest g.xliff file
  2. Xliff-Sync powershell step is added to sync the g.xliff file changes to other translation files
  3. Extract translations from the AL code 'comments'
  4. Xliff-Sync warnings are raised if translation defects have been detected
  5. App is recompiled is in step 2. the translation files had been changed

ISV Development For ISV development, we want to support of number of additional languages. Development is mainly performed in English. Translations are managed via an external proces.

We expect the build pipelines to include a safety gate ensuring ...

These XLIFF files can then be extracted from the release artifacts and be translated using external tools (e.g. PoEdit, PoEditor, ...) Ideally these updated translation files should then be imported again and merged into the master branch.

To achieve the above, we've integrated Xliff-Sync (https://robvanbekkum.nl/xliff-sync-overview/) in a specific Azure DevOps pipeline:

  1. Import a zip file from a public url containing xliff files
  2. Xliff files are replaced by the content of the zip file
  3. App are compiled to get the latest g.xliff file
  4. Xliff-Sync powershell step is added to sync the g.xliff file changes to other translation files
  5. App is recompiled is in step 3. the translation files had been changed

Ideally, it would be great if we can isolate the majority of the translation effort from the developer and let a consultant manage translation update, without introducing too much technical complexity including branches/PR/...

Having a front-end to manage translations working directly on the github repo - something similar to https://www.beyond-translations.de/ - would be even better !

jonaswre commented 9 months ago

Hi @fvet,

I'm the creator of BeyondTranslations.
I've talked to @freddydk about translations integration on the last tech days. There a few partners chaising different means to handle translations. So AL-Go will probably create a hook to allow partners to integrate their own mechanisms.

We are currently developing a similar platform to BeyondTranslations but with more features. But the way "extensions" work in GitHub you will have a different UI to GitHub. But the goal of the platform is still to be able to shift the work of translating from the developers and allow consultants or other parts of the team to do them.