# Source: https://raw.githubusercontent.com/unoplatform/uno/refs/heads/master/doc/articles/features/working-with-strings.md

---
uid: Uno.Features.Localization
---

# String resources and localization

> [!TIP]
> Relevant tutorials on this topic:
>
> - [How to localize text resources](xref:Uno.Tutorials.Localization)
> - [How to change app language at runtime](xref:Uno.Tutorials.ChangeAppLanguage)

Localization is done through the `resw` files in the current project. Normally, you would put these files in the `strings/[lang]` folder in the `[AppName]` project.  Resources are then referenced using [`x:Uid`](https://learn.microsoft.com/windows/uwp/xaml-platform/x-uid-directive).

See the WinUI documentation on [localizing strings in your UI](https://learn.microsoft.com/windows/uwp/app-resources/localize-strings-ui-manifest).

Resources may be placed in the default scope file `Resources.resw`, or in a custom-named file. Custom-named file content
can be used with the `x:Uid="/myResources/MyResource"` format, see [how to factor strings into multiple resource files](https://learn.microsoft.com/windows/uwp/app-resources/localize-strings-ui-manifest#factoring-strings-into-multiple-resources-files).

Note that the default language can be defined using the `DefaultLanguage` MSBuild property, using an IETF Language Tag (e.g. `en` or `fr-FR`).

By default, the app will use the operating system's language first, falling back to the `DefaultLanguage` second. If you would like to change localization at the app level, you can use the [`ApplicationLanguages.PrimaryLanguageOverride`](https://learn.microsoft.com/uwp/api/windows.globalization.applicationlanguages.primarylanguageoverride?view=winrt-22621) property:

```csharp
ApplicationLanguages.PrimaryLanguageOverride = "fr-CA"; // or, any IETF language tag
```

Note that changing the `PrimaryLanguageOverride` will not retroactively update any loaded pages. You will need to reload the page or navigate to a new one.