Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пользователь Windows может использовать> параметрывремени и региона языка> для настройки упорядоченного списка предпочтительных языков отображения или просто одного предпочтительного языка отображения. Язык может иметь региональный вариант. Например, вы можете выбрать испанский, как говорят в Испании, испанский, как говорят в Мексике, испанский, как говорят в США, среди других.
Кроме того, в разделе «Время и язык»>«Регион и язык»>, отдельно от языка, пользователь может указать свое местоположение (как регион) в мире. Обратите внимание, что параметр языка отображения (и региональный вариант) не является определяющим параметром региона, и наоборот. Например, пользователь в настоящее время живет во Франции, но выбирает предпочтительный язык интерфейса Windows Español (México).
Для приложений Windows язык представлен как тег языка BCP-47. Например, тег языка BCP-47 "en-US" соответствует английскому (США) в параметрах. Соответствующие интерфейсы Windows Runtime API принимают и возвращают строковые представления тегов языка BCP-47.
Также см., реестр подтегов языков IANA.
В следующих трех разделах определяются термины "список языков профиля пользователя", "список языков манифеста приложения" и "список языков среды выполнения приложения". Мы будем использовать эти термины в этом разделе и других разделах в этой области функций, поэтому важно знать, что они означают.
Список языков профиля пользователя
Список языков профиля пользователя — это имя списка, настроенного пользователем в разделе «>Дата и время>Регион и язык>Языки». В коде можно использовать свойство GlobalizationPreferences.Language для доступа к списку языков профиля пользователя в виде списка строк, доступных только для чтения, где каждая строка является одним тегом языка BCP-47 , например "en-US" или "ja-JP".
IReadOnlyList<string> userLanguages = Windows.System.UserProfile.GlobalizationPreferences.Languages;
Список языков манифеста приложения
Список языков манифеста приложения — это список языков, для которых приложение объявляет (или объявляет) поддержку. Этот список растет по мере продвижения вашего приложения по жизненному циклу разработки вплоть до локализации.
Список определяется во время компиляции, но у вас есть два варианта для точного управления тем, как это происходит. Один из вариантов — разрешить Visual Studio определить список из файлов в проекте. Для этого сначала задайте язык
<Resources>
<Resource Language="x-generate" />
</Resources>
Каждый раз, когда Visual Studio создает созданный файл манифеста пакета приложения (), он расширяет один элемент в исходном файле в объединение всех квалификаторов языка, которые он находит в проекте (AppxManifest.xmlсм. раздел Resource"). Например, если вы начали локализацию, а у вас есть строки, изображения и/или файловые ресурсы, имена папок или файлов которых включают en-US, ja-JP и fr-FR, то созданный AppxManifest.xml файл будет содержать следующую (первая запись в списке — язык по умолчанию).
<Resources>
<Resource Language="EN-US" />
<Resource Language="JA-JP" />
<Resource Language="FR-FR" />
</Resources>
Другой вариант — заменить единственный элемент "x-generate" <Resource> в исходном файле манифеста пакета приложения Package.appxmanifest на развернутый список элементов <Resource>, при этом убедившись, что язык по умолчанию указан первым. Этот вариант включает в себя большую работу по обслуживанию, но это может быть подходящим вариантом, если вы используете пользовательскую систему сборки.
Для начала список языков манифеста приложения будет содержать только один язык. Возможно, это en-US. Но в конечном итоге, когда вы вручную настраиваете манифест или добавляете переведенные ресурсы в проект, этот список будет расти.
Когда приложение находится в Microsoft Store, языки в списке языков манифеста приложения — это те, которые отображаются клиентам. Для получения списка языковых тегов BCP-47, поддерживаемых в Microsoft Store, см. Поддерживаемые языки.
В коде можно использовать свойство ApplicationLanguages.ManifestLanguages для доступа к списку языков манифеста приложения в виде списка строк, доступных только для чтения, где каждая строка является одним тегом языка BCP-47.
IReadOnlyList<string> userLanguages = Windows.Globalization.ApplicationLanguages.ManifestLanguages;
Список языков среды выполнения приложений
Третий список языков интереса — это пересечение между двумя списками, которые мы только что описали. Во время выполнения список языков, для которых приложение объявило поддержку (список языков манифеста приложения) сравнивается со списком языков, для которых пользователь объявил предпочтения (список языков профиля пользователя). Если пересечение не пусто, список языков среды выполнения приложения устанавливается в соответствии с этим пересечением; если пересечение пусто, используется просто язык по умолчанию приложения.
В частности, список языков среды выполнения приложений состоит из этих элементов.
-
Переопределение основного языка (необязательно).
PrimaryLanguageOverride — это простой параметр переопределения для приложений, которые дают пользователям возможность выбирать язык самостоятельно, или для приложений, имеющих весомую причину переопределить варианты языка по умолчанию. Дополнительные сведения см. в примере ресурсов приложения и локализации. - Языки пользователя, поддерживаемые приложением. Это список языков профиля пользователя, отфильтрованный по списку языков манифеста приложения. Фильтрация языков пользователя по тем, которые поддерживаются приложением, поддерживает согласованность между пакетами SDK, библиотеками классов, зависимыми пакетами платформ и приложением.
- Если 1 и 2 пусты, то язык по умолчанию или первый язык, поддерживаемый приложением. Если список языков профиля пользователя не содержит языков, поддерживаемых приложением, язык среды выполнения приложений является первым языком, поддерживаемым приложением.
В коде можно использовать свойство ResourceContext.QualifierValues для доступа к списку языков среды выполнения приложения в виде строки, содержащей список тегов языка BCP-47 с запятой.
string runtimeLanguages = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues["Language"];
Вы также можете получить доступ к нему как список строк только для чтения, каждый из которых содержит один тег языка BCP-47. Для этого можно использовать свойство ResourceContext.Languages или свойство ApplicationLanguages.Languages .
IReadOnlyList<string> runtimeLanguages = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().Languages;
runtimeLanguages = Windows.Globalization.ApplicationLanguages.Languages;
Список языков среды выполнения приложений определяет ресурсы, которые Windows загружает для приложения, а также язык, используемый для форматирования дат, времени, чисел и других компонентов. См. глобализируйте ваши форматы даты, времени и чисел.
Заметка Если язык профиля пользователя и язык манифеста приложения являются региональными вариантами друг друга, в качестве языка среды выполнения приложения используется региональный вариант пользователя. Например, если пользователь предпочитает en-GB и приложение поддерживает en-US, язык среды выполнения приложений — en-GB. Это обеспечивает более тесное форматирование дат, времени и чисел для ожиданий пользователя (en-GB), но локализованные ресурсы по-прежнему загружаются (из-за сопоставления языков) в поддерживаемом языке приложения (en-US).
Квалификация файлов ресурсов по языку
Назовите файлы или папки ресурсов, используя квалификаторы языковых ресурсов. Дополнительные сведения о квалификаторах ресурсов см. в статье "Настройка ресурсов для языка, масштабирования, высокой контрастности и других квалификаторов". Файл ресурсов может быть изображением (или другим ресурсом) или файлом контейнера ресурсов, например resw , который содержит текстовые строки.
Заметка Даже ресурсы на языке, установленном по умолчанию для приложения, должны указывать квалификатор языка. Например, если язык вашего приложения по умолчанию — английский (США), то квалифицируйте ресурсы как \Assets\Images\en-US\logo.png.
- Windows выполняет сложное сопоставление, включая региональные варианты, такие как en-US и en-GB. Поэтому добавьте подметку региона по мере необходимости. Узнайте, как система управления ресурсами соответствует языковым тегам.
- Укажите вложенный тег скрипта языка в квалификаторе, если для языка не задано значение Suppress-Script. Например, вместо zh-CN или zh-TW используйте zh-Hant, zh-Hant-TW или zh-Hans (дополнительные сведения см. в реестре подтегов языка IANA).
- Для языков с одним стандартным диалектом нет необходимости включать квалификатор региона. Например, используйте ja вместо ja-JP.
- Некоторые инструменты и другие компоненты, такие как машинные переводчики, могут найти определенные языковые теги, такие как региональные сведения о диалекте, полезные для понимания данных.
Не все ресурсы должны быть локализованы
Локализация может не потребоваться для всех ресурсов.
- Как минимум, убедитесь, что все ресурсы существуют на языке по умолчанию.
- Подмножество некоторых ресурсов может быть достаточно для тесно связанного языка (частичной локализации). Например, вы можете не локализовать весь пользовательский интерфейс приложения на каталонец, если приложение имеет полный набор ресурсов на испанском языке. Для пользователей, которые говорят на каталонском и испанском языках, ресурсы, недоступные на каталонском языке, появляются на испанском языке.
- Для некоторых ресурсов могут потребоваться исключения для определенных языков, а большинство других ресурсов сопоставляются с общим ресурсом. В этом случае пометьте ресурс, предназначенный для всех языков, с языковым тегом 'und', означающим неопределённый. Windows интерпретирует тег языка "und" как подстановочный знак (аналогично "*") в том, что он соответствует верхнему языку приложения после любого другого конкретного совпадения. Например, если для финляндии отличается несколько ресурсов, но остальные ресурсы одинаковы для всех языков, то финский ресурс должен быть помечен тегом языка Финляндии, а остальные должны быть помечены как "und".
- Для ресурсов, основанных на языковом скрипте, например шрифте или высоте текста, используйте несопределенный тег языка с указанным скриптом: "und-script<>". Для латинских шрифтов используйте
und-Latn\\fonts.css, а для кириллических шрифтов —und-Cryl\\fonts.css.
Установите заголовок запроса HTTP Accept-Language
Рассмотрите, имеют ли вызываемые веб-службы ту же степень локализации, что и ваше приложение. HTTP-запросы, выполняемые приложениями Windows в типичных веб-запросах и в XMLHttpRequest (XHR), используют стандартный заголовок запроса HTTP Accept-Language. По умолчанию заголовок HTTP устанавливается в список языков профиля пользователя. Каждый язык в списке расширяется, включая в себя нейтральные варианты языка и весовой коэффициент (q). Например, список языков пользователя fr-FR и en-US приводит к заголовку запроса HTTP Accept-Language: fr-FR, fr, en-US, en ("fr-FR,fr;q=0.8,en-US;q=0.5,en;q=0.3"). Но если, например, ваше приложение погоды отображает пользовательский интерфейс на французском языке (Франция), в то время как основным языком пользователя в списке предпочтений является немецкий, то вам потребуется явно запросить французский (Франция) у службы, чтобы оставаться согласованным в приложении.
API в пространстве имен Windows.Globalization
Как правило, API в пространстве имен Windows.Globalization используют список языков среды выполнения приложения для определения языка. Если ни один из языков не имеет соответствующего формата, используется языковой стандарт пользователя. Это та же локаль, которая используется для системных часов. Языковой стандарт пользователя доступен в разделе ">Время и язык>Регион и язык>Дополнительные параметры даты, времени и региона>Регион: Изменение форматов даты, времени или чисел. Api Windows.Globalization также имеют переопределения, чтобы указать список языков, используемых вместо списка языков среды выполнения приложения.
С помощью класса Language можно проверить сведения о конкретном языке, например скрипте языка, отображаемом имени и собственном имени.
Используйте географический регион при необходимости
В разделе ">Время и>Страна или регион" > пользователь может указать свое расположение в мире. Эти параметры можно использовать вместо языка для выбора содержимого, отображаемого пользователю. Например, приложение новостей может отображать содержимое из этого региона по умолчанию.
В коде этот параметр можно получить с помощью свойства GlobalizationPreferences.HomeGeographicRegion .
С помощью класса GeographRegion можно проверить сведения об определенном регионе, например отображаемое имя, собственное имя и используемые валюты.
Примеры
В следующей таблице приведены примеры того, что пользователь увидит в пользовательском интерфейсе приложения в различных параметрах языка и региона.
| Список языков манифеста приложения | Список языков профиля пользователя | Переопределение основного языка приложения (необязательно) | Список языков среды выполнения приложений | То, что пользователь видит в приложении |
|---|---|---|---|---|
| Английский (ГБ) (по умолчанию); Немецкий (Германия) | Английский (ГБ) | ничего | Английский (ГБ) | Пользовательский интерфейс: английский (ГБ) Даты и время/числа: английский (ГБ) |
| Немецкий (Германия) (по умолчанию); Французский (Франция); Итальянский (Италия) | Французский (Австрия) | ничего | Французский (Австрия) | Пользовательский интерфейс: французский (Франция) (резервный вариант из французского (Австрия)) Даты/Времена/Числа: Французский язык (как в Австрии) |
| Английский (США) (по умолчанию); Французский (Франция); Английский (ГБ) | Английский (Канада); Французский (Канада) | ничего | Английский (Канада); Французский (Канада) | Пользовательский интерфейс: английский (США) (резервный язык - английский (Канада)) Даты/Время/Числа: английский язык (Канада) |
| Испанский (Испания) (по умолчанию); Испанский (Мексика); Испанский (Латинская Америка); Португальский (Бразилия) | Английский (США) | ничего | испанский (Испания) | Пользовательский интерфейс: испанский (Испания) (используется по умолчанию, так как резервный вариант недоступен для английского языка) Даты/время/числа испанский (Испания) |
| Каталонский (по умолчанию); Испанский (Испания); Французский (Франция) | Каталанский; Французский (Франция) | ничего | Каталанский; Французский (Франция) | Пользовательский интерфейс: в основном каталонский и некоторые французские (Франция), потому что не все строки находятся в Каталоне Даты/Времена/Числа: Каталонский |
| Английский (ГБ) (по умолчанию); Французский (Франция); Немецкий (Германия) | Немецкий (Германия); Английский (ГБ) | Английский (ГБ) (выбранный пользователем в пользовательском интерфейсе приложения) | Английский (ГБ); Немецкий (Германия) | Интерфейс: Английский (Великобритания) (переопределение языка) Даты/Время/Числа Английский (Великобритания) |
Примечание.
Список стандартных кодов страны или региона, используемых корпорацией Майкрософт, см. в официальном списке стран и регионов.
Важные API
- ГлобализацияПредпочтения.Языки
- ApplicationLanguages.ManifestLanguages
- PrimaryLanguageOverride
- ResourceContext.QualifierValues
- ResourceContext.Languages (Контекст ресурсов.Языки)
- ApplicationLanguages.Languages
- Windows.Глобализация
- Язык
- Предпочтения глобализации. Домашний географический регион
- GeographRegion
Связанные темы
- Тег языка BCP-47
- Реестр языковых подтегов IANA
- Адаптируйте ваши ресурсы для языка, масштаба, высокой контрастности и других параметров.
- Поддерживаемые языки
- Глобализация форматов даты и времени и чисел
- Как система управления ресурсами соответствует тегам языка
Примеры
Windows developer