Найти тему
.Net Review

Локализация в WPF, UWP, Xamarin приложниях

Оглавление

В большинстве приложений, которые имеют пользовательский интерфейс необходимо реализовать локализацию. Для работы с ней есть специальный файл ресурсов. В этой статье подробнее о реализации файла ресурсов и работы с ним.

Файл ресурcов .resx

Файл ресурсов .resx представляет из себя файл с xml разметкой, который содержит пары: ключ, значение и комментарии. При его реализации в Visual Studio создаётся этот файл и контроллер к нему. При редактирование пар происходит автоматическое добавление новых методов в контроллер.

Пример в WPF

После создания проекта, необходимо добавить главный файл ресурсов.

-2

Файл открывается в встроенном редакторе ресурсов от Visual Studio. Первая колонка - ключ, вторая - текст, третья - комментарий. Напишем пару полей.

-3

Для надписей/текстов на другом языке нужно создать файл с таким же именем, но с добавкой кода языка. Например: ".ru". Список кодов по ссылке: коды.

-4

Для получения текста/надписи достаточно написать название основного файла ресурса + ключ. Вернуться данные, относительно языка системы.

Как применить в интерфейсе (XAML)

Сперва создадим контроллер ресурсов.

-5

Далее нужно создать расширение для пользовательского интерфейса, чтобы в XAML можно было использовать данные из ресурсов.

-6

Теперь можно перейти в файл интерфейса и использовать ресурсы.

В шапке нужно подключить расширение, у меня это: xmlns:extensions="clr-namespace:WpfResourcesApp.Extensions".

Для использования локализации достаточно в фигурных скобках указать расширение и ключ, по которому хотим вернуть строку.

-7

После запуска приложения будут отображены данные относительно языка системы.

Локализация в Xamarin

Реализация для Xamarin такая же, как и для WPF/UWP, только нужно изменить расширение для работы с интерфейсом.

-8

Итог

Файлы ресурсов очень удобны в реализации и редактировании, также существуют различные приложения для удобной работы с ними. Плюсом является возможность использования не только в UI, но и в любой части кода, например в диалогах.

Ссылка на репозиторий: https://github.com/CrispyPigeon/WpfResourceApp

Телеграмм канал: https://t.me/dotnetreview