# Adding additional language support

## Update the Client-side script

The client-side script detects cumulative updates for Windows by searching for a match against a specific string. In English, that string is '**Cumulative Update for**'. In other display languages, this string may be different.

There are a couple of ways you can find this string. On a workstation, search in the **System** event log for the following event and find one that mentions the installation of a Cumulative Update for Windows. This will be reported differently for other languages, for example in German the string is reported as '**Kumulatives Update für**' and in Italian '**Aggiornamento cumulativo di**'.

<figure><img src="/files/AmEHJQ9objwPRDKJEa4M" alt=""><figcaption></figcaption></figure>

Alternatively you can search the log analytics workspace using a query like the following:

```kusto
SU_UpdateLog_CL 
| where UpdateName_s contains 'umulati'
| distinct UpdateName_s,UpdateType_s 
```

In the results of that query, I can locate the string used in German, for example:

<figure><img src="/files/EWwyQZUdxwUjVCs5Ol9L" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
You do not need the entire update name, just the equivalent of "**Cumulative Update for**" in that language.
{% endhint %}

In the client-side script, you need to make updates in **two** places. Search for the variable **$CUNameArray**. The first is found on line **194** within the **Get-AvailableUpdatesOnline** function. Add your language string to this array.

<figure><img src="/files/2cfy7W5m0ubcm3pEmDRL" alt=""><figcaption></figcaption></figure>

The second is found on line **644** in the **UpdateLog** code region. Do the same thing and add your language string to this array.

<figure><img src="/files/AU7Gc6Zw5DBNx3Ff1H64" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Don't forget to redeploy the script to your workstations after making these changes!
{% endhint %}

## Update the Summarizer automation runbook

The **Software\_Updates\_Reporting\_Summarizer** runbook determines some installation states (ie **started** and **failed**) for the current monthly security quality update by checking for the status as reported in the Windows event log. In English, these installation states are '**Installation started**' and '**Installation failed**' but in other languages, they may be different.

The best way to find what they are reported as in other languages is to run the following query against the log analytics workspace:

```kusto
SU_UpdateLog_CL 
| distinct KeyWord1_s,KeyWord2_s
```

Make sure the **time range** of your query is sufficiently long enough to return lots of data.

In the query results, I can clearly see these installation states reported in other languages as well as English:

<figure><img src="/files/quLO8WMhjJA5YgGVZUJz" alt=""><figcaption></figcaption></figure>

For example, **Installation** in Italian is **Installazione**, and **Started** is **Avviato**.

In the Azure automation runbook, locate the **Language arrays** section within the **CalculateBStatus** code region, beginning line **1736**.

In these arrays, add the language equivalents of **Installation**, **Failure** and **Started**, as shown below:

<figure><img src="/files/u53VIEegOAPbZgPvpn71" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Don't forget to save and publish your runbook when finished!
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.smsagent.blog/microsoft-endpoint-manager-reporting/windows-update-for-business-custom-reporting/adding-additional-language-support.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
