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


Подготовка приложения к локализации

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

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

Поместите строки в файлы ресурсов (RESW)

Не выполняйте литералы строк жесткого кода в императивном коде, разметке XAML или в манифесте пакета приложения. Вместо этого поместите строки в файлы ресурсов (RESW), чтобы они могли быть адаптированы к разным локальным рынкам независимо от встроенных двоичных файлов вашего приложения. Дополнительные сведения см. в разделе "Локализация строк" в манифесте пользовательского интерфейса и пакета приложения.

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

Задайте язык по умолчанию для приложения соответствующим образом в исходном файле манифеста пакета приложения ( Package.appxmanifest файл). Язык по умолчанию определяет язык, используемый, когда предпочитаемые языки пользователя не соответствуют ни одному из поддерживаемых языков приложения. Пометьте все ресурсы своим языком (даже на языке по умолчанию, например \Assets\en-us\Logo.png), чтобы система может определить язык, в котором находится ресурс, и как он используется в определенных ситуациях.

Настройка изображений и других ресурсов файлов для языка

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

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

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

Использование цвета в приложении

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

Рассмотрите возможность факторирования строк в предложения

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

Но в напряженности с этим руководством риск повторного использования строки в разных контекстах. Даже простые слова, такие как "on" и "off", могут быть переведены по-разному в зависимости от контекста. На английском языке "включено" и "выключено" можно использовать для переключателя для режима полета, Bluetooth и устройств. Но в итальянском языке перевод зависит от контекста включения и отключения. Необходимо создать пару строк для каждого контекста. Можно повторно использовать строки, если два контекста одинаковы. Например, можно повторно использовать строку "Громкость" для громкости звуковых эффектов и громкости музыки, так как оба относятся к интенсивности звука. При обращении к тому жесткого диска не следует повторно использовать ту же строку, так как контекст и значение отличаются, а слово может быть переведено по-другому.

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

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

Рассмотрим следующую строку: " {0} Не удалось синхронизировать".

Различные слова могут заменить {0}такие слова, как "встреча", "задача" или "документ". Хотя этот пример работает на английском языке, он не будет работать во всех случаях для соответствующего предложения, например на немецком языке. Обратите внимание, что в следующих немецких предложениях некоторые слова в строке шаблона ("Der", "Die", "Das") должны соответствовать параметризованному слову:

Английский Немецкий
Не удалось синхронизировать встречу. Der Termin konnte nicht synchronisiert werden.
Не удалось синхронизировать задачу. Die Aufgabe konnte nicht synchronisiert werden.
Не удалось синхронизировать документ. Das Dokument konnte nicht synchronisiert werden.

В качестве другого примера рассмотрим предложение "Напомнить мне в {0} минутах"). Использование "минут" работает на английском языке, но другие языки могут использовать разные термины. Например, польский язык использует "minuta", "minuty" или "minuty" в зависимости от контекста.

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

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

Другие рекомендации по строкам

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

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

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

Псевдо-локализация

Псевдо локализуйте приложение, чтобы выявить все проблемы локализации. Псевдо-локализация — это вид тестовой локализации для сухого запуска или проверки раскрытия. Вы создаете набор ресурсов, которые не переводятся на самом деле; они выглядят только таким образом. Строки длиной примерно 40 % больше, чем на языке по умолчанию, например, и они имеют разделители в них, чтобы увидеть, были ли они усечены в пользовательском интерфейсе.

Требования к развертыванию

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

Примечание.

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

Если вы хотите убедиться, что все языковые ресурсы доступны после установки, создайте файл конфигурации для пакета приложения, который указывает, что определенные ресурсы необходимы во время установки (включая языковые ресурсы). Эта оптимизированная функция установки автоматически включена при создании appxbundle приложения во время упаковки. Дополнительные сведения см. в разделе "Обеспечение установки ресурсов на устройстве" независимо от того, требуется ли им устройство.

При необходимости, чтобы все ресурсы были установлены (а не только подмножество), вы можете отключить создание appxbundle при упаковке приложения. Однако это не рекомендуется, так как это может увеличить время установки приложения.

Отключите автоматическое создание appxbundle, задав атрибут "Создать пакет приложений" значение "никогда":

  1. В Visual Studio щелкните правой кнопкой мыши имя проекта
  2. Выберите Магазин ->Создать пакеты приложений...
  3. В диалоговом окне "Создание пакетов" выберите "Создать пакеты" для отправки в Microsoft Store с помощью нового имени приложения и нажмите кнопку "Далее".
  4. В диалоговом окне "Выбор имени приложения" выберите или создайте имя приложения для пакета.
  5. В диалоговом окне "Выбор и настройка пакетов" задайте для набора приложений значение "Никогда".

Геополитическую осведомленность

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

События изменения языка и региона

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

Убедитесь, что правильный порядок параметров при форматировании строк

Не предполагайте, что все языки выражают параметры в одном порядке. Например, рассмотрим этот формат.

    string.Format("Every {0} {1}", monthName, dayNumber); // For example, "Every April 1".

Строка формата в этом примере работает на английском языке (США). Но это не подходит для немецкого (Германия), например, где день и месяц отображаются в обратном порядке. Убедитесь, что переводчик знает намерение каждого из параметров, чтобы они могли изменить порядок элементов формата в строке формата (например, "{1}{0}") в соответствии с целевым языком.

Не локализуйте

Только отправить естественный язык переводчикам; не язык программирования и разметка. Тег не является естественным языком <link> . Рассмотрим эти примеры.

Не локализуйте это Локализация этого
<>Условия использования< и ссылки> условия использования
<связывание>политики< конфиденциальности или ссылки> Политика конфиденциальности

Включение тега <link> в файл ресурсов (RESW) означает, что он, скорее всего, будет преобразован. Это приведет к отображению недопустимого тега. Если у вас есть длинные строки, которые должны включать разметку для поддержания контекста и обеспечения упорядочения, убедитесь в комментариях, что не следует переводить.

Выбор подходящего подхода к переводу

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

Рассмотрим эти варианты.

  • Файлы ресурсов можно преобразовать, открыв их непосредственно в проекте. Этот подход хорошо подходит для проекта с небольшим объемом строк, которые необходимо перевести на два или три языка. Он может быть подходит для сценария, когда разработчик говорит более одного языка и готов обрабатывать процесс перевода. Этот подход дает преимущества от быстрого использования, не требует никаких инструментов и сводит к минимуму риск неправильной передачи. Но это не масштабируемо. В частности, ресурсы на разных языках могут легко выйти из синхронизации, что приводит к плохому опыту пользователей и головной боли обслуживания.
  • Файлы строковых ресурсов находятся в текстовом формате XML или ResJSON, поэтому их можно передать для перевода с помощью любого текстового редактора. Затем переведенные файлы будут скопированы обратно в проект. Этот подход несет риск случайного редактирования XML-тегов переводчиками, но позволяет выполнять перевод за пределами проекта Microsoft Visual Studio. Этот подход может работать хорошо для проектов, которые должны быть переведены на небольшое количество языков. Формат XLIFF — это xml-формат, специально предназначенный для использования в локализации, и должен быть хорошо поддерживается некоторыми поставщиками локализации или средствами локализации. Набор средств многоязычных приложений можно использовать для создания XLIFF-файлов из других файлов ресурсов, таких как RESW или RESJSON.

Примечание.

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

Кроме того, следует учитывать следующее:

  • Средства локализации доступны для синтаксического анализа файлов ресурсов и позволяют изменять только переводимые строки переводчиками. Этот подход снижает риск случайного редактирования XML-тегов переводчиком. Но у него есть недостаток внедрения нового инструмента и процесса в процесс локализации. Средство локализации хорошо подходит для проектов с большим объемом строк, но небольшое количество языков. Дополнительные сведения см. в статье "Использование набора средств многоязычных приложений".
  • Поставщики локализации рассмотрите возможность использования поставщика локализации, если приложение содержит обширные строки, которые должны быть переведены на большое количество языков. Поставщик локализации может предоставлять советы по средствам и процессам, а также переводить файлы ресурсов. Это идеальное решение, но также является самым дорогостоящим вариантом и может увеличить время обхода для переведенного содержимого.

Сохранение согласованности ключей доступа и меток

Это проблема синхронизации ключей доступа, используемых в специальных возможностях с отображением локализованных ключей доступа, так как два строковых ресурса классифицируются в двух отдельных разделах. Обязательно предоставьте комментарии для строки метки, например: Make sure that the emphasized shortcut key is synchronized with the access key.

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

Японские символы кандзи имеют свойство иметь несколько чтений (произношение) в зависимости от слова, в котором они используются. Это приводит к проблемам при попытке сортировки японских именованных объектов, таких как имена приложений, файлы, песни и т. д. Японские кандзи, в прошлом, обычно были отсортированы в понятном для компьютера порядке под названием XJIS. К сожалению, потому что этот порядок сортировки не фонетично, это не очень полезно для людей.

Furigana работает над этой проблемой, позволяя пользователю или создателю указать фонетики для символов, которые они используют. Если вы используете следующую процедуру для добавления furigana в имя приложения, вы можете убедиться, что она отсортирована в правильном расположении в списке приложений. Если имя приложения содержит символы kanji и furigana не предоставляется, если язык пользовательского интерфейса пользователя или порядок сортировки установлен на японском языке, Windows делает все возможное, чтобы создать соответствующее произношение. Однако существует возможность сортировки имен приложений, содержащих редкие или уникальные чтения, которые будут отсортированы по более распространенному чтению. Поэтому рекомендуется использовать японские приложения (особенно те, которые содержат символы кандзи в их именах) — предоставить версию фуриганы своего имени приложения в рамках процесса локализации японского языка.

  1. Добавьте ms-resource:Appname в качестве отображаемого имени пакета и отображаемого имени приложения.

  2. Создайте папку ja-JP в строках и добавьте два файла ресурсов следующим образом:

    strings\
        en-us\
        ja-jp\
            Resources.altform-msft-phonetic.resw
            Resources.resw
    
  3. В Resources.resw для общего ja-JP: добавьте строковый ресурс для имени приложения "希蒼"

  4. В Resources.altform-msft-phonetic.resw для японских ресурсов furigana: добавьте значение furigana для AppName "のあ"

Пользователь может найти имя приложения "希蒼" с помощью значения furigana "のあ" (noa) и фонетического значения (используя функцию GetPhonetic из редактора методов ввода (IME)) "まれあお" (mare-ao).

Сортировка выполняется по формату регионального панель управления:

  • В соответствии с языковым стандартом японского пользователя,
    • Если фуригана включена, то "希蒼" сортируется в разделе "の".
    • Если фуригана отсутствует, то "希蒼" сортируется в разделе "ま".
  • В соответствии с языковым стандартом пользователя, не на японском языке,
    • Если фуригана включена, то "希蒼" сортируется в разделе "の".
    • Если фуригана отсутствует, то "希蒼" сортируется в разделе "漢字".

Примеры