Xliff Compare & Finding Missing Translations

When working with Extensions I would not recommend working with Xliff files unless you design for AppSource. Otherwise CaptionML will work fine for Per-Tenant projects.

Unfortunately for me, I am working right now on submitting an AppSource project and I need to evaluate if my translations are complete.

As I explained at my presentation in Antwerp at NAVTechDays we continue to code in C/Side and then convert to Extensions and submit to AppSource. Therefor I don’t have the nightmare problem of maintaining Xliff files, I do however need to figure out how complete I am.

So in C/Side I am using CaptionML and when I convert to Extensions I simply use this flag in our converter which I have and you don’t. (Nananana…)

ForNAV Converter

We’ll change that soon. But meanwhile let’s look at the output.

Translation

You don’t need to be a rocket scientist to see that for example Czech and Swedish probably have missing captions. But which ones?

Michael has created a simple C# console application that will generate a file you can open in Excel to analyse this.

Result

You can download the tool from our GitHub. Don’t hesitate to make improvements.

https://github.com/ReportsForNAV/xliffCompare

Stay tuned for more info and learnings with Extensions, AppSource and converting code…

Compiling a 2000+ Objects Extension

Let’s start diving into working with Extensions in Real Life. I have a lot to blog about and at first I thought I would blog about a very small extension but I’m sure you’ve all seen that.

Let’s start big!

At NAVTechDays I showed you the extension I created with the ForNAV converter that resulted in 2149 files which compiles and executes.

I made the extension work on Business Central OnPrem, installed on my local box with the RTM version.

What is the Build Time? It must be horrible…

You are probably most curious about the build time for this extension. It takes 30 seconds on the RTM version. Not bad, but not perfect either.

Now Microsoft promised that they would improve this experience because they also need it themselves. They asked me to text CU1 and the Daily Docker builds to see if that improves performance.

Runtime 2.1

Today I’ve installed version 2.1.69331 of the compiler and the build time went down to an average of 18 seconds. That is a great improvement! Well done team!

Break it down!

I’m going to keep this version of my extension to test the next versions to see if more improvements come our way.

However, I am also going to break down the monolith and see if I can get to smaller components.

This will also improve the maintainability and makes responsibilities more clear when working with multiple developers.

What’s the perfect size?

If you had asked me that three months ago I would have said 100-200 objects max. But now I think 500 objects should work fine from a compiler perspective.

Remember that when you break your ISV solution down you’ll most likely end up with more objects as you will create table and page extensions on your own objects. It will also be harder to assign object id’s.

To be continued…