Today we released the Multilingual App Toolkit v4.0 update 1 (v4.0.1605.0). This release addresses key issues reported by various customers.
(Very) key performance improvements:
Visual Studio IDE:
When adding translation languages to your project, MAT creates a XLF file and matching target resource files. Most projects would have seen a small delay after clicking ‘’OK’ on the ‘Add translation languages…’ dialog. However, the more source resource files your project has, the worse the impact would be. WinForms / ASP.Net project use separate RESX file, creating a high potential to see an unusable impact from this issue.
However, unbeknownst to us, the ‘design time build’ was secretly (or not so secretly for some) creating a build for each added resource file. This caused the Visual Studio IDE to appear ‘frozen’ for several seconds to several minutes or more!! Working with the Visual Studio team, we were able to suspend the ‘design time build’ until after all the XLF and resource files were added.
XLIFF files require validation – which is a very expensive operation. Sometimes it is unavoidable and will directly impact MAT’s performance. I have some good news to report in this area. We found a call to validation that was not providing any additional value. Removing that specific validation had a significant performance improvement in MAT’s build processing time. The improvement will depend on several factors, but our tests indicate most will see a significant improvement from the RTW build times.
Another side-effect was when key files are saved (XAML, Resource, etc.), the ‘design time build’ would start. Depending on the build performance, you would see a delay in the Visual Studio IDE. The combination of the improved build performance and MAT’s build caching logic should provide noticeable improvements in Visual Studio IDE responsiveness when using MAT.
UWP Shared projects:
The ‘Enable selection’ option for Shared Projects (from Windows -> Classic Desktop) was grayed out preventing MAT support for this project type. Support for the project type was added in this update.
C++ DirectX & XAML projects:
C++ DirectX & XAML app (Universal) projects enabled with MAT would not reload. The project modification required by MAT incorrectly placed the MATPrerequisite Target in the ImportGroup node, causing the reload failure.
Xamarin projects fixes:
Xamarin iOS project resource files below the root node were exclude from the file scan logic. This prevented key resources files from being added to the XLF file, resulting in exclusion of resources from the localization workflow.
Xamarin Android projects using value-<screen dp> to manage device screen sizes were reporting “Culture is not supported” during the build. The screen size values was consider a culture value by MAT.
The key improvements in this release would not have been possible without key developers around the world that contacted me to report issues. I want to thank several teams that contact me, and especially for those that installed private drops and tested the proposed fixes in their environments. Without this level of community support, the team MAT would not be able to provide targeted fixed that solve your real-world issues.
I’m specifically thankful to the team from 1Password by AgileBits Inc. (Twitter) for running multiple private builds at all hours of the day and night to verify key performance fixes in their environment. (And for the suggestions I did not have time to implemented yet.)
Changes and bug fixes:
As always, the complete list of the changes in this as well as previous releases are available on MAT’s User Voice site: Here is a direct link: http://multilingualapptoolkit.uservoice.com/knowledgebase/articles/460620