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

В этом разделе содержатся ответы на часто задаваемые вопросы и проблемы, связанные с набором средств для многоязычных приложений (MAT).

См. также раздел Использование набора средств для многоязычных приложений.

Примечание. Набор средств поддерживает работу с файлами .resw (XAML) и .resjson (JavaScript). Но в этом разделе мы рассмотрим только файлы .resw. Файл .resw называется файлом ресурсов. Он содержит строки на языке по умолчанию или строки, переведенные на другой язык. Имя папки, содержащей файл .resw, обычно совпадает со значением тега языка.

Требуются ли файлы формата .resw, выполненные на нескольких языках?

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

При совпадении в разных проектах файлов форматов .resw и .xlf переводы из XLF-файла игнорируются. В этом случае в ходе сборки отображается предупреждение о том, что переводы формата XLF не включены в окончательный вариант приложения. Файлы форматов .resw и .xlf совпадают, когда у них имеется целевой язык с одинаковым кодом языка. Примером совпадающей пары файлов будут файлы Strings\de-DE\Resources.resw и <project-name>.de-DE.xlf (содержащие target-language="de-DE").

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

Да, но это не рекомендуется. Если вы хотите включить в проект файлы формата .resw на нескольких языках и при этом использовать данный набор средств, убедитесь в отсутствии совпадающих файлов форматов .resw и .xlf.

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

Выполните следующие действия.

  • Убедитесь, что вы выбрали узел проекта, а не узел решения перед открытием меню Сервис.
  • Проверьте, установлено ли расширение набора средств с помощью диспетчера расширений Visual Studio.
  • Убедитесь, что ваш проект является проектом UWP.

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

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

Проверьте, установлен ли компонент "Build Task for all Visual Studio editions". Этот компонент сборки устанавливается с расширением, но его выбор можно отменить вручную в ходе установки. Данный компонент необходим для обновления XLF-файлов и добавления перевода в PRI-файл. При правильной установке и корректной работе этого компонента отображаются следующие сообщения о сборке.

1> Multilingual App Toolkit build started.
1> Multilingual App Toolkit build completed successfully.

Набор средств докладывает о том, что в ходе сборки языковых файлов формата XLIFF найдено не было.

No XLIFF language files were found. The app will not contain any localized resources.

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

Файл формата XLF не включается в список файлов, обрабатываемых набором средств в ходе сборки.

Если файл формата XLF был исключен из проекта вручную, а затем был повторно включен в него, элемент типа файла может установиться некорректно. В Visual Studio выберите файл и проверьте окно "Свойства". Параметру "Действие при сборке" файла должно быть задано значение XliffResource, а параметру "Копировать в выходной каталог" — "Не копировать". Вот как должна выглядеть ссылка в файле проекта.

<XliffResource Include="MultilingualResources\<project-name>.fr-FR.xlf" />

Я добавил языки на основе XLF. Где мои строки?

Ваш файл ресурсов (.resw) языка по умолчанию является канонической "схемой" строк, используемой приложением. Переведенные файлы ресурсов могут содержать все эти строки или их часть.

При сборке проекта файлы ресурсов и файлы .xlf синхронизируются.

  • Файлы .xlf обновляются в соответствии с любой добавленной или удаленной строкой либо добавленными или удаленными файлами ресурсов.
  • Файлы ресурсов обновляются в соответствии с переводом любой строки в файлах .xlf.

Это подробно описано в статье Использование набора средств для многоязычных приложений.

При сборке проекта файлы XLF остаются пустыми.

Прежде чем вы сможете эффективно использовать MAT ваше приложение должно быть подготовлено к локализации. Это подробно описано в статье Использование набора средств для многоязычных приложений.

Что такое Microsoft Translator?

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

Набор средств использует службу Microsoft Translator для обеспечения разработчиков предложениями по переводу. Поддерживаемые Microsoft Translator языки можно увидеть при появлении значка Microsoft Translator в диалоговом окне "Языки перевода".

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

Что такое псевдоязык и псевдотрекеры ресурсов?

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

Как задать в качестве предпочитаемого языка псевдоязык, чтобы можно было протестировать псевдолокализованные сроки?

Какие проблемы локализации могут быть связаны с использованием псевдоязыка?

При запуске приложения переводы не появляются либо приложение переведено частично

Откройте файл XLF в многоязычном редакторе и проверьте наличие переводов. При явном изменении строк в файле .resw языка по умолчанию любые соответствующие переводы удаляются из файлов .xlf. Это нужно, чтобы обеспечить совпадение перевода и исходной строки. Переведите строки в файлах .xlf и выполните сборку проекта повторно, чтобы обновить файлы .resw языка не по умолчанию.

Если строки переведены в файлах .xlf, но не отображаются в приложении, выполните повторную сборку проекта, чтобы обновить файлы .resw языка не по умолчанию. Visual Studio оптимизирует команду "Сборка" для сборки только тех файлов, которые изменялись с последней отработки команды "Сборка".

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

Набор средств сообщает об ошибке 0x80004004 в выходных данных сборки

Merge of Loc PRI file failed calling makepri.exe: "0x80004004"

Причиной может быть конфликт региональных стандартов и действий набора средств по сборке. Обойти конфликт можно путем замены языка в разделе Параметры на ru-RU при выполнении сборки.

Набор средств сообщает об ошибке 0x80004005 в выходных данных сборки

Merge of Loc PRI file failed calling makepri.exe: "0x80004005"

Причиной может быть наличие неподдерживаемого целевого языка в XLF-файле. Например, код "zh-cht" является неправильным (замените его на "zh-hant"), и код "zh-chs" также является неправильным (замените его на "zh-hans").

Можно ли получить дополнительные сведения о наблюдаемых ошибках?

Да, можно включить регистрацию подробных сведений в журнале в Visual Studio. Щелкните Сервис>Параметры>Проекты и решения>Сборка и запуск. Измените Степень подробности сообщений при сборке проекта MSBuild с минимальной на среднюю или выше.

Запуск MSBuild из командной строки также приводит к отображению дополнительных сообщений.

msbuild /t:rebuild <project-name>

Неудача при импорте перевода

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

Что делать, если на моем переводчике не установлена Windows 10, Windows 11 и (или) Visual Studio и (или) набор средств для многоязычных приложений?

При выборе параметра Выходные данные: получатель почты в диалоговом окне Экспорт строковых ресурсов сообщение содержит ссылку для скачивания и установки набора средств для многоязычных приложений (MAT). Переводчик по-прежнему может установить автономный многоязычный редактор MAT даже без Windows 10, Windows 11 и Visual Studio.

Дополнительные сведения см. в разделе Использование набора средств для многоязычных приложений.

Что произошло с файламиMarkupRules.xmlиResourcesLocks.xml?

Набор средств для многоязычных приложений не использует собственные файлы блокировки ресурсов. Вместо этого тег XLIFF 1.2 <mrk> добавлен непосредственно в XLF-файл для указания строк, не измененных в ходе машинного перевода. Это обеспечивает независимость XLIFF-файла, а также пофайловую блокировку ресурсов.

Эти дополнительные вспомогательные файлы больше не нужны и их можно смело удалить, если они есть.

Что стало с файлом TPX?

TPX-файл обеспечивал простой способ включения файлов MarkupRules.xml и ResourcesLocks.xml при отправке XLF-файла для перевода. Эта функция больше не требуется.

При наличии TPX-файла с переводами, которые необходимо извлечь, просто измените расширение файла с TPX на ZIP. Это позволит открывать и извлекать содержимое при помощи проводника или любого программного средства, совместимого с ZIP.

Все сделано правильно, но проект все равно не работает.

Выполните следующие действия.

  1. Добавьте переводы, пользуясь одним из уже описанных способов.
  2. Выполните дамп PRI-файла (см. раздел Параметры командной строки MakePRI.exe) и проверьте нахождение ваших переводов в данном PRI-файле. Переводы должны появляться с использованием языкового кода и переведенного значения следующим образом.
    <Candidate qualifiers="Language-QPS-PLOC" type="String">
        <Value>[!!_Ŝéãřćĥ_!!]</Value>
    </Candidate>
    
  3. Выполните сборку из командной строки; при этом отображается больше подробностей об ошибках, чем на выходе сборки.

Не удалось сертифицировать приложение в Microsoft Store.

Перед началом сертификации для Microsoft Store вам необходимо убрать файл <project-name>.qps-ploc.xlf из проекта. Псевдоязык используется для обнаружения потенциальных проблем или ошибок, связанных с возможностями локализации, но не является допустимым языком Microsoft Store. Если этот файл не будет удален, приложение не пройдет сертификацию для Microsoft Store.

Какие данные вы собираете?

Расширение Visual Studio (MAT VS) для набора средств для многоязычных приложений собирает анонимные данные об использовании и отправляет их на серверы Майкрософт для улучшения наших продуктов и служб. Телеметрия по умолчанию отключена и может быть включена или отключена в любое время.

Данные об использовании. Это анонимные сведения об используемых функциях. Например: добавление нового языка в решение с поддержкой MAT.

Данные конфигурации. Это анонимные сведения о версии MAT VS, установленной в, и версии Windows, в которой она выполняется.

Ниже приведен конкретный пример данных, собранных в следующем формате: Ключ/ Значение / Заметки:

  • AddLanguage / MachineID: xxxx / Это основано на хэсе сетевой карты сетевого адаптера. Уникальность не гарантируется.
  • TimeStamp / 2022/01/07T22:04:45.0000000Z / Time event произошло.
  • MAT_Version / 4.1.02 / установленная версия MAT.
  • Languages / fr,es,de/DE / Список языков, добавленных в проект.

Все данные собираются с помощью Application Insights и отправляются в Azure Log Analytics. Данные хранятся в течение 90 дней, а затем удаляются.