# Localization

Easily integrate completely customized Microsoft Office style scheduling functionality to build intuitive, polished-looking scheduling applications using Scheduler for WinForms.

## Content

All end user visible strings in **Scheduler for WinForms** can now be localized (translated) by the developer. **Scheduler for WinForms** localization is based on the same approach as the standard localization of .NET Windows forms employed by the **Localizable** property. As with Windows Forms, you can create a set of resource files for the **Scheduler for WinForms** assembly. You can create separate resource files, with the extension .resx, for each required culture. When the application runs you can switch between those resources and between languages. All parts of your application using components from a **Scheduler for WinForms** DLL must use the same localization resource.

## Localization of File conventions

It is recommended that the following conventions are followed when .resx files are created:

* All .resx files should be placed in the **C1LocalizedResources** subfolder of your project.
* Files should be named as follows:
<br>
    XXX.YYY.resx, where:
    * XXX is the name of the Component one assembly.
    * YYY is the culture code of the resource. If your translation is only for the invariant culture, the .resx file does not need to contain a culture suffix.

    For example:
    * C1.Win.C1Schedule.2.de.resx - German (de) resource for C1.Win.C1Schedule.2 assembly.
    * C1.Win.C1Schedule.2.resx - Invariant culture resource for C1.Win.C1Schedule.2 assembly.

Note that if you create a culture in the **Localize dialog box**, these conventions will be followed in the file that is created for you.

***

## Configure Localization

Scheduler supports culture-specific formatting and localized user-interface resources.

### Setting the Current Culture

[C1Schedule](/componentone/api/win/online-schedule/dotnet-api/C1.Win.Schedule.10/C1.Win.Schedule.C1Schedule.html) automatically loads localization files according to the culture selected for the application, provided that the files remain in their expected project locations.
By default, Scheduler uses the culture specified by `<span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">System.Threading.Thread.CurrentThread.CurrentCulture</span>`. Set <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">CurrentCulture</span> to another culture to change culture-specific formatting.

```csharp
// Set desired culture, for example here the French (France) locale.
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-FR");
```

***

### Switching Resources at Run Time

Set `<span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">System.Threading.Thread.CurrentThread.CurrentUICulture</span>` to switch between localized user-interface resources at run time. 

```csharp
// This will switch to German locale.        
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");
```

Set the UI culture after creating the required resources.