Поделиться через


Локализация приложений ClickOnce

Локализация — это процесс создания приложения, подходящего для конкретной культуры. Этот процесс включает преобразование текста пользовательского интерфейса в язык, относящийся к регионам, с использованием правильного форматирования даты и валюты, корректировки размера элементов управления в форме и зеркальных элементов управления справа налево при необходимости.

Локализация вашего приложения приводит к созданию одной или нескольких сателлитных сборок. Каждая сборка содержит строки пользовательского интерфейса, изображения и другие ресурсы, специфичные для конкретной культуры. (Исполняемый файл главного приложения содержит строки для культуры по умолчанию вашего приложения.)

В этом разделе описано три способа деплоя приложения ClickOnce для других культур.

  • Включите все спутниковые сборки в одно развертывание.

  • Создайте одно развертывание для каждой культуры, с отдельной спутниковой сборкой, включенной в каждое.

  • Загрузите спутниковые сборки по требованию.

Включение всех сателлитных сборок в развертывание

Вместо публикации нескольких развертываний ClickOnce можно опубликовать одно развертывание ClickOnce, содержащее все спутниковые сборки.

Этот метод используется по умолчанию в Visual Studio. Чтобы использовать этот метод в Visual Studio, вам не нужно выполнять дополнительную работу.

Чтобы использовать этот метод с MageUI.exe, необходимо задать для приложения культуру нейтральной в MageUI.exe. Затем необходимо вручную включить все сателлитные сборки в своё развертывание. В MageUI.exe можно добавить сателлитные сборки с помощью кнопки "Загрузить" на вкладке "Файлы" манифеста приложения.

Преимущество этого подхода заключается в том, что он создает одно развертывание и упрощает локализованную историю развертывания. Во время выполнения будет использоваться соответствующая спутниковая сборка в зависимости от культуры по умолчанию операционной системы Windows пользователя. Недостаток этого подхода заключается в том, что он загружает все вспомогательные сборки всякий раз, когда приложение устанавливается или обновляется на клиентском компьютере. Если приложение имеет большое количество строк или у клиентов есть медленное сетевое подключение, этот процесс может повлиять на производительность во время обновления приложения.

Замечание

В этом подходе предполагается, что приложение настраивает высоту, ширину и положение элементов управления автоматически для учета различных размеров текстовых строк в разных культурах. Windows Forms содержит различные элементы управления и технологии, которые позволяют разрабатывать форму так, чтобы она была легко локализуема, включая элементы управления FlowLayoutPanel и TableLayoutPanel, а также свойство AutoSize. Дополнительные сведения см. в статье "Практическое руководство. Поддержка локализации в формах Windows с помощью autoSize и элемента управления TableLayoutPanel".

Создайте одно развертывание для каждой культуры

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

Чтобы использовать этот метод в Visual Studio, задайте свойство " Язык публикации " на вкладке "Публикация " в нужном регионе. Visual Studio автоматически включает сателлитные сборки, необходимые для выбранного региона, и исключает все остальные сателлитные сборки из развертывания.

Замечание

В ClickOnce для .NET Core 3.1 и .NET 5 или более поздней версии вы устанавливаете свойства развертывания с помощью средства публикации вместо мастера публикации и страницы публикации конструктора проектов. Дополнительные сведения см. в статье "Развертывание приложения .NET Windows с помощью ClickOnce" и "ClickOnce для .NET".

Вы можете выполнить то же самое с помощью средства MageUI.exe в пакете средств разработки программного обеспечения Microsoft Windows (SDK). Нажмите кнопку "Заполнить" на вкладке "Файлы" манифеста приложения, чтобы исключить все остальные спутниковые сборки из каталога приложения, а затем задайте поле "Культура" на вкладке "Имя" манифеста развертывания в MageUI.exe. Эти действия не только включают правильную спутниковую сборку, но и задают атрибут language элемента assemblyIdentity в манифесте развертывания соответствующей культуре.

После публикации приложения необходимо повторить этот шаг для каждой дополнительной культуры, поддерживаемой приложением. Необходимо убедиться, что вы публикуете в другом каталоге веб-сервера или каталоге общей папки каждый раз, так как каждый манифест приложения будет ссылаться на другую сопутницную сборку, и каждый манифест развертывания будет иметь другое значение для атрибута language .

Загрузка спутниковых сборок по запросу

Если вы решите включить все спутниковые сборки в одно развертывание, вы можете повысить производительность с помощью загрузки по запросу, что позволяет пометить сборки как необязательные. Помеченные сборки не будут загружаться при установке или обновлении приложения. Сборки можно установить, когда они вам нужны, вызвав метод DownloadFileGroup в классе ApplicationDeployment.

Замечание

Класс ApplicationDeployment и API в System.Deployment.Application пространстве имен не поддерживаются в .NET Core и .NET 5 и более поздних версиях. В .NET 7 поддерживается новый метод доступа к свойствам развертывания приложения. Дополнительные сведения см. в разделе "Свойства развертывания Access ClickOnce" в .NET. .NET 7 не поддерживает эквивалент методов ApplicationDeployment.

Скачивание сателлитных сборок по требованию немного отличается от скачивания других типов сборок по требованию. Дополнительные сведения и примеры кода о том, как включить этот сценарий с помощью средств Windows SDK для ClickOnce, см. в руководстве по скачиванию спутниковых сборок по запросу с использованием API развертывания ClickOnce.

Этот сценарий также можно включить в Visual Studio. Дополнительные сведения см. в пошаговом руководстве по скачиванию вспомогательных сборок по запросу с помощью API развертывания ClickOnce и конструктора.

Тестирование локализованных приложений ClickOnce перед развертыванием

Сателлитная сборка будет использоваться для приложения Windows Forms только в том случае, если свойство CurrentUICulture для основного потока приложения установлено на культуру сателлитной сборки. Клиенты на локальных рынках, вероятно, уже будут работать с локализованной версией Windows, где их культурные параметры установлены по умолчанию.

Перед тем как сделать приложение доступным для клиентов, у вас есть три варианта тестирования локализованных развертываний:

  • Приложение ClickOnce можно запустить в соответствующих локализованных версиях Windows.

  • Вы можете задать свойство CurrentUICulture программно в приложении. (Перед вызовом Run метода необходимо задать это свойство.)