# Language Configuration - Upgrading

## Language configuration file changes

The Language configuration file has been changed from a property file format to a xml file format.\
For existing customers, this change will require a file conversion process, examples of a file conversion can be found below.

#### Language Configuration overview

To send a translation, we need a language code from inRiver, and a language code from Lionbridge, as they use different language code standards.\
Currently, the inRiver language codes are stored in the "sourceLanguages" and "targetLanguages" CVL's, and the Lionbridge language code is stored in the language configuration file.\
They are connected by a unique identifier present in both the language configuration file, and the CVL value.\
This has now been changed, and we have moved the inRiver language code mapping responsibility from the 'sourceLanguages' and 'targetLanguages' CVL's to the same file that contains the Lionbridge language code mapping.

## The old approach

**Language configuration file**

```
[Languages]
engb=en-gb
svSE=sv-SE
nbNO=nb-NO
```

Note: The "Key" is the unique identifier

**CVL - sourceLanguages**

| Key  | Value |
| ---- | ----- |
| engb | en    |

Note: The "Key" is the unique identifier

**CVL - targetLanguages**

| Key  | Value |
| ---- | ----- |
| svSE | sv    |
| noNO | no    |

Here we can see that for the "engb" language configuration, we should use the language code "en-gb" for Lionbridge, and "en" for inRiver.

## The new approach

**Language code mapping - as a Connector(6.3)/Extension(PMC) setting**

```
<Languages>
    <Language key="engb" lionbridgeCode="en-gb" inRiverCode="en" />
    <Language key="svSE" lionbridgeCode="sv-SE" inRiverCode="sv" />
    <Language key="nbNO" lionbridgeCode="nb-NO" inRiverCode="no" />
</Languages>
```

We don't just save the customer / configuration user a ton of confusion, but also open up the possibility for the customer to enter their own names for the languages they need to translate.\
To provide an example of this, We can now update my sourceLanguages and targetLanguages to look as following.

**Example CVL - sourceLanguages**

| Key  | Value   |
| ---- | ------- |
| engb | English |

**Example CVL - targetLanguages**

| Key  | Value     |
| ---- | --------- |
| svSE | Swedish   |
| noNO | Norwegian |

Now, only the key part of the CVL Value is used to identify the correct language configuration in the xml.

## How to convert the old LanguageConfiguration.properties file to the new XML format

### Before

**Example LanguageConfiguration.properties file:**

```
[Languages]
engb=en-gb
svSE=sv-SE
nbNO=nb-NO
```

**Example CVL - sourceLanguages**

| Key  | Value |
| ---- | ----- |
| engb | en    |

**Example CVL - targetLanguages**

| Key  | Value |
| ---- | ----- |
| svSE | sv    |
| noNO | no    |

### After

**LanguageConfiguration.properties represented in the new XML format:**

```
<Languages>
    <Language key="engb" lionbridgeCode="en-gb" inRiverCode="en" />
    <Language key="svSE" lionbridgeCode="sv-SE" inRiverCode="sv" />
    <Language key="nbNO" lionbridgeCode="nb-NO" inRiverCode="no" />
</Languages>
```

**Example CVL - sourceLanguages**

| Key  | Value   |
| ---- | ------- |
| engb | English |

**Example CVL - targetLanguages**

| Key  | Value     |
| ---- | --------- |
| svSE | Swedish   |
| noNO | Norwegian |
