Localization of Business Applications


# Localization of Business Applications

TALXIS Business applications are being localized in an external tool named Localazy. Localazy is integrated to our build pipelines to ease everything up. In case of localizing customer specific solutions, Localazy is not used, and the localization happens in the repository directly without additional overhead.

# Basics

Every label or phrase is stored in a .resx file. All these files are then uploaded to Localazy (if possible), where anyone with access can translate them. If the translations are approved, they're published for the next release.

# How to ...

These guides are ordered chronologically from a new Dataverse solution being introduced to a localized release. If something is not clear or not working, contact jan.kostejn@me.com please.

# Get Solution's Resource File

Solution's .resx file contains all the phrases as already mentioned. This file is automatically generated by merge to develop branch to avoid mistakes. However, you need to introduce it first to trigger this whole process.

  1. Build a solution you want to localize.
    Build a solution
  2. Find the build output and use SolutionPackager (opens new window) to extract the resource file with /localize and /sourceLoc:1033 arguments.
    Extract resource file
  3. Add generated .resx file to the solution in the repository. Copy resource file
  4. Prepare content of the folder for merge.
    1. Leave only ./en-US/resources.en-US.resx.
    2. Delete phrases from the file to make sure no one will be making translations in the repository.
      Edit resource file

# Create a Localazy Project

Every solution has a project in Localazy. Translators can then go and localize the solution in a friendly UI without any technical knowledge.

  1. Create a project inside NETWORG Localazy organization.
    1. Set Project name to solution's display name.
    2. Set URL Slug to solution's unique name.
    3. Set Source Language to en_US
      Edit resource file

# Add Localazy Secrets to Azure Key Vault

Since we want to automatically push new phrases to the Localazy project and pull newest translations from it, we need to authenticate against Localazy in our pipelines. We use Azure Key Vault for Localazy secrets.

  1. Get the secrets from the Localazy.
    1. You can quickly access them through previously inputted URL Slug. Just visit this link - https://localazy.com/p/{ URL Slug }/settings#access-keys
    2. There are two keys, one is for read and the second for write. You'll need both of them.
  2. Add the secrets to the Azure Key Vault.
    1. Open int0006-pipelines Key Vault's secrets (opens new window).
    2. Add Localazy read key following this convention - localazy-readKey-{ solution's unique name } where non-alphanumeric characters are removed.
    3. Add Localazy write key following this convention - localazy-writeKey-{ solution's unique name } where non-alphanumeric characters are removed.

# Merge the Solution's Resource File to 'develop'

If everything above was done, now you need to get your phrases into your new Localazy project. This step has been automated with merge to develop branch.

  1. Commit the resource file.
  2. Open a pull request to develop.
  3. Wait for approval.
  4. Make sure that the phrases appear in the Localazy project after successful build. If not, something is wrong and you need to investigate.
    Check phrases in the Localazy

# Localize the Solution

The biggest strength of this approach is that anyone can translate the phrases without any technical background. Suggested translations also improve the experience a lot.

  1. Login to Localazy
    1. Make sure that you're part of the NETWORG organization.
    2. Make sure that you have access to the Localazy project you wish to localize.
    3. Translate.

# Publish a Localized Release

Cherry on top.

  1. Approve translations in the Localazy project.
    1. If translations are not approved, they won't be released.
  2. Trigger a release in Azure DevOps (master build).