# Localization

URL: https://docs.wisej.com/docs/concepts/localization

Wisej.NET fully supports localization using .NET and Visual Studio standard localization features.

{% file src="../assets/wisej.localization.zip" caption="Download Wisej.Localization.zip" %}

## Localizing the UI

All top-level controls in Wisej.NET support UI localization.

To enable localization features for a `Form` , `Page` , `UserControl` , or `Desktop` component:

1. In design mode, set the `Localizable` property to true
2. Once enabled, you can switch languages in the designer
Use the `Language` dropdown property to select the language for localization:

![Language selection dropdown](/assets/images/image (302)-6de638d467df6b8055df2046200a6581.png)

UI localization allows changing multiple properties per language switch, commonly:

- Size
- Location
- Text
- Colors
- Images

## Localizing the System

Wisej.NET supports full localization of system resources including:

- `MessageBox` buttons
- Calendar control labels (month/day names)
- Standard numeric, percentage and currency formatting/parsing

### Built-in Formats

- **Numeric, Percentage, Date, and Currency**

Handled automatically for all supported languages worldwide.
- **Date Labels: Months and Day Names**

Handled automatically for all supported languages worldwide.
- **System Resources**

Wisej.NET system resources are localized in:

- English
- German
- French
- Italian
- Turkish
- Spanish
- Portuguese
For other languages, create a `Resources-[LANG].resx` file in either:

- Root project folder
- `/Resources` folder
Add localization labels as needed. See [How to: Create a Localized Resource File](https://msdn.microsoft.com/en-us/library/aa992030(v=vs.100).aspx) .

| Label | Description | Default Value | $Ok | OK Button in MessageBox/system dialogs | OK | $Cancel | Cancel Button in MessageBox/system dialogs | Cancel | $Yes | Yes Button in MessageBox/system dialogs | Yes | $No | No Button in MessageBox/system dialogs | No | $Retry | Retry Button in MessageBox/system dialogs | Retry | $Ignore | Ignore Button in MessageBox/system dialogs | Ignore | $Abort | Abort Button in MessageBox/system dialogs | Abort | $Next year | Next-year navigation tooltip in calendar controls | Next Year | $Next month | Next-month navigation tooltip in calendar controls | Next Month | $Last year | Last-year navigation tooltip in calendar controls | Last Year | $Last month | Last-month navigation tooltip in calendar controls | Last Month | $Offline | Offline connectivity loss notification | Offline

## Localizing Resources

Beyond system localization, you'll likely need to localize application resources (strings, images, etc.).

Create `.resx` files as needed using the approach above. See [How to: Create a Localized Resource File](https://msdn.microsoft.com/en-us/library/aa992030(v=vs.100).aspx) .

Use the [`ResourceManager`](https://msdn.microsoft.com/en-us/library/system.resources.resourcemanager(v=vs.110).aspx) class to retrieve localized values. Wisej.NET handles thread culture switching for client requests.

- C# - VB.NET

```csharp
var RS = new ResourceManager("Localization.Resources", this.GetType().Assembly);
var title = RS.GetString("Title");
```

```visual
Dim RS as ResourceManager = new ResourceManager("Localization.Resources", Me.GetType().Assembly)
Dim title as String = RS.GetString("Title")
```

## Detecting/Switching Browser Language

Wisej.NET automatically detects browser language and switches application/system resources accordingly.

You can force a specific language for the application (user session) by:

1. Setting the `culture` property in `Default.json` (default is "auto"). See [Configuration](/docs/concepts/configuration) .
2. Using one of these methods:
- Assign `Application.CurrentCulture` property
- Add `lang` URL parameter (e.g., [http://localhost/myapp?lang=de](http://localhost/myapp?lang=de) for German)
3. Assign `Application.CurrentCulture` property
4. Add `lang` URL parameter (e.g., [http://localhost/myapp?lang=de](http://localhost/myapp?lang=de) for German)
When current culture changes from the session's initial culture, Wisej.NET raises the `Application.CultureChanged` event.

warning
Designer-localized controls update **only** at creation. No built-in mechanism exists to change already-created controls. To update existing controls either:
- Re-create the container and call `InitializeControl`
- Write custom code to reapply resources
