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

Локализованное приложение — это приложение, которое можно локализовать для других рынков, регионов или на другие языки, не раскрыв какие-либо функциональные неисправности приложения.A localized app is one that can be localized for other markets, languages, or regions without uncovering any functional defects in the app. Самой важной особенностью локализуемого приложения является то, что его исполняемый код четко отделен от локализуемых ресурсов приложения.The most essential property of a localizable app is that its executable code has been cleanly separated from its localizable resources. Таким образом следует определить, какие из ресурсов вашего приложения необходимо локализовать.So, you should determine which of your app's resources need to be localized. Подумайте над тем, что нужно изменить при локализации вашего приложения для других рынков.Ask yourself what needs to change if your app is to be localized for other markets.

Мы также рекомендуем ознакомиться с руководством по глобализации.We also recommend that you become familiar with the guidelines for globalization.

Поместите строки кода в файлы ресурсов (.resw)Put your strings into Resources Files (.resw)

Не следует жестко кодировать строковые литералы в императивном коде, разметке XAML и манифесте пакета приложения.Don't hard-code string literals in your imperative code, XAML markup, nor in your app package manifest. Вместо этого поместите строки в файлы ресурсов (.resw), чтобы их можно было адаптировать для различных местных рынков независимо от двоичных файлов в вашем приложении.Instead, put your strings into Resources Files (.resw) so that they can be adapted to different local markets independently of your app's built binaries. Дополнительные сведения см. в разделе Локализация строк в манифесте пакета приложения и интерфейсе пользователя.For details, see Localize strings in your UI and app package manifest.

В этом разделе также демонстрируется добавление комментариев в файл ресурсов (.resw) по умолчанию.That topic also shows you how to add comments to your default Resources File (.resw). Например, при использовании неформального стиля речи, это следует объяснить в комментариях.For example, if you are adopting an informal voice or tone then be sure to explain that in comments. Кроме того, чтобы свести к минимуму расходы, убедитесь, что переводчики получают только необходимые для перевода строки.Also, to minimize expense, confirm that only the strings that need to be translated are provided to translators.

Правильно устанавливайте язык по умолчанию для вашего приложения в исходном файле манифеста пакета приложения (файл Package.appxmanifest).Set the default language for your app appropriately in your app package manifest source file (the Package.appxmanifest file). Язык по умолчанию — это язык, используемый в случае, когда предпочитаемые пользователем языки не совпадают ни с одним из языков, поддерживаемых вашим приложением.The default language determines the language that's used when the user's preferred languages don't match any of the supported languages of your app. Пометьте все ресурсы соответствующим языком (даже ресурсы языка по умолчанию, например, \Assets\en-us\Logo.png), для того чтобы система могла определить, на каком языке создан ресурс и как он используется в конкретных ситуациях.Mark all of your resources with their language (even the ones in your default language, for example \Assets\en-us\Logo.png) so that the system can tell which language the resource is in and how it's used in particular situations.

Адаптируйте изображения и другие файловые ресурсы для языка.Tailor your images and other file resources for language

В идеальном случае можно будет глобализовать изображения, то есть сделать так, чтобы они не зависели от региона.Ideally, you will be able to globalize your images—that is, make them culture-independent. Для любых изображений и других файловых ресурсов, применительно к которым это сделать невозможно, создайте столько вариантов этих ресурсов, сколько необходимо, и сопроводите названия их файлов или папок соответствующими языковыми кодами.For any images and other file resources where that's not possible, create as many different variants of them as you need and put the appropriate language qualifiers into their file or folder names. Дополнительные сведения см. в разделе Адаптация ресурсов с учетом языка, масштаба, высокой контрастности и других квалификаторов.To learn more, see Tailor your resources for language, scale, high contrast, and other qualifiers.

Чтобы свести к минимуму затраты на локализацию, не добавляйте в начальные изображения текст или материал, восприятие которых зависит от языка и региональных стандартов.To minimize localization costs, don't put text nor culturally-sensitive material into images to begin with. Изображения, приемлемые в вашей культуре, могут оскорбить представителя другой культуры или быть неправильно им поняты.An image that's appropriate in your own culture might be offensive or misinterpreted in other cultures. Избегайте использования культурно-специфичных изображений, например, почтовых ящиков, которые не используются по всему миру.Avoid the use of culture-specific images such as mailboxes, which are not common around the world. Избегайте использования религиозной символики, изображений животных, изображений на политическую тему или изображений, связанных с половой принадлежностью.Avoid religious symbols, animals, political, or gender-specific images. Изображения открытых и закрытых частей тела или жестов рук также могут носить деликатный характер.The display of flesh, body parts, or hand gestures can also be a sensitive topic. Если все это нельзя исключить из приложения, изображения придется очень продуманно локализовать.If you can't avoid all of these, then your images will need to be thoughtfully localized. Если вы локализуете продукт для языка с отличным от вашего направлением чтения, использование симметричных изображений и эффектов упростит поддержку зеркалирования.If you're localizing to a language with a different reading direction than your own, using symmetrical images and effects make it easier to support mirroring.

Также не следует использовать текст на изображениях и речь в аудио/видео файлах.Also avoid the use of text in images, and speech in audio/video files.

Использование цвета в приложенииThe use of color in your app

При использовании цвета следует учитывать определенные факторы.Be mindful when using color. Использование комбинаций цветов, вызывающих ассоциации с национальными флагами или политическими движениями может быть спорным решением.Using color combinations that are associated with national flags or political movements can be problematic. При выборе цвета рекомендуется посоветоваться с культурологом.Color choices may need to be reviewed by culture experts. Также при выборе цветов следует учитывать, что пользователю должно быть понятно, для чего был использован конкретный цвет.There is also an accessibility issues with using color. Если цвет используется для передачи смысла, вы должны передать этот же смысл, используя некоторые другие средства, такие как размер, форма или метка.If you use color to convey meaning then you should also convey that same information by some other means, such as size, shape, or a label.

Рассмотрите возможность разложения строк на предложенияConsider factoring your strings into sentences

Используйте строки подходящего размера.Use appropriately-sized strings. Короткие строки легче переводить и это позволяет использовать перевод повторно и, как следствие, сократить расходы, так как одна и та же строка не передается лицу, отвечающему за локализацию, несколько раз.Short strings are easier to translate, and they enable translation recycling (which saves expense because the same string isn't sent to the localizer more than once). Кроме того, слишком длинные строки могут не поддерживаться средствами для локализации.Also, extremely long strings might not be supported by localization tools.

Однако в противоречие с этим правилом одна и та же строка может быть использована в разных контекстах.But in tension with this guideline is the risk of re-using a string in different contexts. Даже такие простые слова, как "on" и "off" могут переводиться по-разному в зависимости от контекста.Even simple words such as "on" and "off" might be translated differently, depending on the context. В английском языке on и off можно использовать при обозначении переключения в режим "В самолете", включения или отключения Bluetooth, а также других устройств.In the English language, "on" and "off" can be used for a toggle for Flight Mode, Bluetooth, and devices. Для итальянского же языка перевод будет зависеть от того, что именно включается или выключается.But in Italian, the translation depends on the context of what is being turned on and off. Поэтому нужно будет создать пару строк для каждого контекста.You would need to create a pair of strings for each context. В одинаковых контекстах можно использовать одинаковые строки.You can reuse strings if the two contexts are the same. Например, можно использовать строку Volume (Громкость) для обозначения как громкости звуковых эффектов, так и громкости музыки, поскольку и то, и другое отражает мощность звука.For instance, you can reuse the string "Volume" for both sound effect volume and music volume because both refer to intensity of sound. Однако не следует использовать эту же строку, когда речь идет о томе жесткого диска (hard disk volume), поскольку в этом случае контекст и значение другие и слово может быть переведено неправильно.You should not reuse that same string when referring to a hard disk volume because the context and meaning are different, and the word might be translated differently.

Также в английском языке строки наподобие text или fax могут использоваться и как существительное, и как глагол, что может привести к путанице во время перевода.Additionally, a string like "text" or "fax" could be used as both a verb and a noun in the English language, which can confuse the translation process. Поэтому создавайте отдельные строки для обоих вариантов использования слов.Instead, create a separate string for both the verb and noun format. Если вы не уверены, одинаковы ли контексты, для верности используйте отдельную строку.When you're not sure whether the contexts are the same, err on the safe side and use a distinct string.

Одним словом, рекомендуется разбивать строки на части, которые можно будет использовать в любых контекстах.In short, factor your strings into pieces that work in all contexts. Будут случаи, когда одна строка должна будет представлять собой целое предложение.There will be cases where a string will need to be an entire sentence.

Рассмотрим следующую строку: " {0} не удалось синхронизировать".Consider the following string: "The {0} could not be synchronized."

Могут заменяться разнообразные слова {0} , например "Встреча", "задача" или "документ".A variety of words could replace {0}, such as "appointment", "task", or "document". Подобная замена возможна в английском языке, но в немецком для соответствующего предложения выполнима не всегда.While this example works for the English language, it will not work in all cases for the corresponding sentence in, for example, German. Обратите внимание, что в приведенных ниже предложениях на немецком некоторые слова в строке шаблона (Der, Die, Das) должны соответствовать параметризованному слову:Notice that in the following German sentences, some of the words in the template string ("Der", "Die", "Das") need to match the parameterized word:

АнглийскийEnglish НемецкийGerman
The appointment could not be synchronized. (Не удалось синхронизировать встречу.)The appointment could not be synchronized. Der Termin konnte nicht synchronisiert werden.Der Termin konnte nicht synchronisiert werden.
The task could not be synchronized. (Не удалось синхронизировать задачу.)The task could not be synchronized. Die Aufgabe konnte nicht synchronisiert werden.Die Aufgabe konnte nicht synchronisiert werden.
The document could not be synchronized. (Не удалось синхронизировать документ.)The document could not be synchronized. Das Dokument konnte nicht synchronisiert werden.Das Dokument konnte nicht synchronisiert werden.

В качестве другого примера рассмотрим предложение "напомнить мне по {0} минутам".As another example, consider the sentence "Remind me in {0} minute(s)." Использование "minute(s)" подходит для английского, но в других языках могут использоваться другие слова.Using "minute(s)" works for the English language, but other languages might use different terms. Например, в польском в зависимости от контекста используются слова minuta, minuty или minut.For example, the Polish language uses "minuta", "minuty", or "minut" depending on the context.

Для решения подобной проблемы локализуйте не отдельные слова, а предложение полностью.To solve this problem, localize the entire sentence, rather than a single word. Может показаться, что это неэлегантное решение, требующее выполнения лишней работы, но на самом деле это решение является лучшим по следующим соображениям.Doing this may seem like extra work and an inelegant solution, but it is the best solution because:

  • Грамматически правильное сообщение будет выводиться для всех языков.A grammatically correct message will be displayed for all languages.
  • Переводчику не нужно будет узнавать, какие строки чем заменяются.Your translator will not need to ask about what the strings will be replaced with.
  • Вам не нужно будет тратить средства на исправление кода для готового приложения в случае возникновения подобной ситуации.You will not need to implement a costly code fix when a problem like this surfaces after your app is completed.

Другие рекомендации для строкOther considerations for strings

Не следует использовать разговорные слова и выражения, а также метафоры в строках, которые вы создаете на языке по умолчанию.Avoid colloquialisms and metaphors in the strings that you author in your default language. Язык, характерный для определенной демографической группы, например культурной или возрастной, может быть труден для понимания и перевода, так как используется только внутри этой группы.Language that's specific to a demographic group, such as culture and age, can be hard to understand or translate because only people in that demographic group use that language. Метафоры могут быть поняты одним человеком и не поняты другим.Similarly, metaphors might make sense to one person but mean nothing to someone else. Например, значение английского слова "bluebird", связанное с лыжным спортом, незнакомо тем, кто этим спортом не занимается (bluebird означает "синешейка" и "отличный день для катания на лыжах").For example, a "bluebird" means something specific to those who are part of skiing culture, but those who aren’t part of that culture don’t understand the reference.

Не используйте профессиональный жаргон, аббревиатуры и акронимы.Don't use technical jargon, abbreviations, or acronyms. Технический язык вряд ли будет понятен неспециалистам и представителям других культур и регионов, он также труден для перевода.Technical language is less likely to be understood by non-technical audiences or people from other cultures or regions, and it's difficult to translate. Люди не используют подобные слова при повседневном общении.People don't use these kinds of words in everyday conversations. Технический язык часто используется в сообщениях об ошибках для идентификации проблем с оборудованием и программным обеспечением, однако, технический язык следует использовать в строках, только в том случае, если пользователь нуждается в таком уровне информации и может использовать ее для выполнения необходимого действия либо может обратиться за помощью к лицу, которому она понятна.Technical language often appears in error messages to identify hardware and software issues, but you should strings to be technical only if the user needs that level of information, and can either action it or find someone who can.

Использование неформального стиля речи в строках является допустимым выбором.Using an informal voice or tone in your strings is a valid choice. Чтобы указать причину его использования, можно использовать комментарии в вашем файле ресурсов (.resw) по умолчанию.You can use comments in your default Resources File (.resw) to indicate that intention.

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

Псевдолокализация приложения выполняется для выявления проблем локализации.Pseudo-localize your app to uncover any localizability issues. Псевдолокализация представляет собой что-то вроде проверочной локализации или теста для обнаружения проблем.Pseudo-localization is a kind of localization dry-run, or disclosure test. Для этого создается набор ресурсов, которые фактически не переводятся, а только выглядят переведенными.You produce a set of resources that are not really translated; they only look that way. Например, в этом случае длина строк увеличивается примерно на 40% по сравнению с длиной строк на языке по умолчанию и они содержат разделители. Таким образом можно сразу определить, усекаются ли они в пользовательском интерфейсе.Your strings are approximately 40% longer than in the default language, for example, and they have delimiters in them so that you can see at a glance whether they have been truncated in the UI.

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

При установке приложения, содержащего локализованные данные языка, может оказаться, что для приложения доступен только язык по умолчанию, даже если вы изначально включили ресурсы для нескольких языков.When you install an app that contains localized language data, you might find that only the default language is available for the app even though you initially included resources for multiple languages. Это связано с тем, что процесс установки оптимизирован для установки только языковых ресурсов, соответствующих текущему языку и региональным параметрам устройства.This is because the installation process is optimized to only install language resources that match the current language and culture of the device. Таким образом, если на устройстве настроено en-US, вместе с приложением устанавливаются только ресурсы языка en-US.Therefore, if your device is configured for en-US, only the en-US language resources are installed with your app.

Примечание

После первоначальной установки невозможно установить дополнительную языковую поддержку для приложения.It is not possible to install additional language support for your app after the initial installation. Если изменить язык по умолчанию после установки приложения, приложение продолжит использовать только исходные языковые ресурсы.If you change the default language after installing an app, the app continues to use only the original language resources.

Если вы хотите обеспечить доступность всех языковых ресурсов после установки, создайте файл конфигурации для пакета приложения, который указывает, что определенные ресурсы необходимы во время установки (включая языковые ресурсы).If you want to ensure all language resources are available after installation, create a configuration file for the app package that specifies that certain resources are required during installation (including language resources). Эта Оптимизированная функция установки автоматически включается при создании приложения. appxbundle во время упаковки.This optimized installation feature is automatically enabled when your application's .appxbundle is generated during packaging. Дополнительные сведения см. в разделе убедитесь, что ресурсы установлены на устройстве независимо от того, требуются ли они для устройства.For more information, see Ensure that resources are installed on a device regardless of whether a device requires them.

При необходимости для обеспечения установки всех ресурсов (не только для подмножества) можно отключить генерацию. appxbundle при упаковке приложения.Optionally, to ensure all resources are installed (not just a subset), you can disable .appxbundle generation when you package your app. Это не рекомендуется, так как оно может увеличить время установки приложения.This is not recommended however as it can increase the installation time of your app.

Отключите автоматическое создание appxbundle, установив для атрибута "сформировать набор приложений" значение "Never":Disable automatic generation of the .appxbundle by setting the "Generate App Bundle" attribute to “never”:

  1. В Visual Studio щелкните правой кнопкой мыши имя проекта.In Visual Studio, right-click the project name
  2. Выберите магазин -> создать пакеты приложений...Select Store -> Create app packages...
  3. В диалоговом окне Создание пакетов выберите я хочу создать пакеты для отправки в Microsoft Store с помощью нового имени приложения , а затем нажмите кнопку Далее.In the Create Your Packages dialog, select I want to create packages to upload to the Microsoft Store using a new app name and then click Next.
  4. В диалоговом окне Выбор имени приложения выберите или создайте имя приложения для пакета.In the Select an app name dialog, select/create an app name for your package.
  5. В диалоговом окне Выбор и настройка пакетов задайте для параметра сформировать набор приложений значение никогда.In the Select and Configure Packages dialog, set Generate app bundle to Never.

Учет геополитических особенностейGeopolitical awareness

Избегайте оскорбления национальных чувств при использовании карт или упоминании регионов.Avoid political offense in maps or when referring to regions. Карты могут включать спорные региональные или национальные границы, они часто бывают причиной оскорбления национальных чувств.Maps might include controversial regional or national boundaries, and they're a frequent source of political offense. Убедитесь, что пользовательский интерфейс, применяемый для выбора нации, называет ее "страна или регион".Be careful that any UI used for selecting a nation refers to it as a "country/region". Указание спорной территории в списке стран с меткой "карты", например, в адресе, может обидеть некоторых пользователей.Listing a disputed territory in a list labeled "countries"—such as in an address form—might offend some users.

События при изменении языка и регионаLanguage- and region-changed events

Подпишитесь на события, вызываемые при изменении языковых и региональных параметров системы.Subscribe to events that are raised when the system's language and region settings change. Это необходимо для того, чтобы вы могли повторно загружать ресурсы, когда потребуется.Do this so that you can re-load resources, if appropriate. Дополнительные сведения см. в разделах Обновление строк в качестве реакции на события изменения значений квалификаторов и Обновление изображений в качестве реакции на события изменения значений квалификаторов.For details, see Updating strings in response to qualifier value change events and Updating images in response to qualifier value change events.

Обеспечьте правильный порядок параметров при форматировании строкEnsure the correct parameter order when formatting strings

В разных языках порядок следования параметров может отличаться.Don't assume that all languages express parameters in the same order. Например, рассмотрим следующий формат.For example, consider this format.

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

Строка формата в этом примере ориентирована на английский язык (США).The format string in this example works for English (United States). Однако она, к примеру, не подходит для немецкого языка, в котором день и месяц отображаются в обратном порядке.But it is not appropriate for German (Germany), for example, where the day and month are displayed in the reverse order. Убедитесь, что переводчик знает назначение каждого из параметров, чтобы они могли обратить порядок элементов форматирования в строке формата (например, " {1} {0} ") в соответствии с требуемым языком.Ensure that the translator knows the intent of each of the parameters so that they can reverse the order of the format items in the format string (for example, "{1} {0}") as appropriate for the target language.

Не допускайте излишней локализацииDon’t over-localize

Отправляйте переводчикам строки на естественном языке; не на языке программирования или языке разметки.Only submit natural language to translators; not programming language nor markup. Тег <link> — не относится к естественному языку.A <link> tag is not natural language. Рассмотрим следующие примеры.Consider these examples.

Локализация не требуетсяDon't localize this Локализация требуетсяLocalize this
<link>terms of use</link><link>terms of use</link> условия использованияterms of use
<link>privacy policy</link><link>privacy policy</link> политика конфиденциальностиprivacy policy

Добавление тега <link> в файл ресурсов (.resw) означает, что он, скорее всего, тоже будет переведен.Including the <link> tag in your Resources File (.resw) means that it, too, is likely to be translated. Так он станет нерабочим.That would render the tag invalid. При наличии длинных строк, в которые нужно добавить разметку для сохранения контекста и порядка, укажите в комментариях, что не нужно переводить.If you have long strings that need to include markup in order to maintain context and ensure ordering, then make it clear in comments what not to translate.

Выбирайте правильный подход к осуществлению переводаChoose an appropriate translation approach

После размещения строк в файле ресурсов можно начинать их перевод.After strings are separated into resource files, they can be translated. Наилучшее время для перевода строк — когда их формирование в вашем проекте завершено, а это обычно бывает ближе к концу проекта.The ideal time to translate strings is after the strings in your project are finalized, which usually happens toward the end of a project. Перевод может быть выполнен несколькими способами.You can approach the translation process in number of ways. При этом учитываются такие факторы, как объем переводимых строковых ресурсов, количество языков, на которые осуществляется перевод, и то, каким образом выполняется перевод (например, собственными силами или с привлечением внешнего подрядчика).This may depend on the volume of strings to be translated, the number of languages to be translated, and how the translation will be done (such as in-house versus hiring an external vendor).

Рассмотрите эти варианты.Consider these options.

  • Файлы ресурсов могут быть переведены непосредственно внутри проекта.The resource files can be translated by opening them directly in the project. Этот вариант лучше всего подойдет для проекта с небольшим объемом строковых ресурсов, который нужно перевести на два или три языка.This approach works well for a project that has a small volume of strings that need to be translated into two or three languages. Это подходящий вариант для случая, когда разработчик владеет несколькими языками и готов сам организовать процесс перевода.It could be suitable for a scenario where a developer speaks more than one language and is willing to handle the translation process. Преимущества этого подхода: быстрота; не требуется специализированного программного обеспечения для перевода; минимален риск неправильного перевода.This approach benefits from being quick, requires no tools, and minimizes the risk of mistranslations. Недостаток: процесс не является масштабируемым.But it is not scalable. В частности, может легко теряться синхронизация между ресурсами на разных языках, что портит впечатление от использования приложения и ухудшает его обслуживание.In particular, the resources in different languages can easily get out of sync, causing bad user experiences and maintenance headaches.
  • Файлы строковых ресурсов находятся в текстовом формате XML или ResJSON, поэтому их можно передать для перевода с помощью любого текстового редактора. Переведенные файлы затем копируются обратно в проект.The string resource files are in XML or ResJSON text format, so could be handed off for translation using any text editor. The translated files would then be copied back into the project. При таком подходе есть риск, что переводчик может случайно изменить теги XML, но зато работа по переводу происходит вне проекта Microsoft Visual Studio.This approach carries a risk of translators accidentally editing the XML tags, but it lets translation work take place outside of the Microsoft Visual Studio project. Этот вариант подходит для проектов, которые нужно перевести на небольшое количество языков.This approach could work well for projects that need to be translated into a small number of languages. XLIFF — это формат XML, специально разработанный для использования в проектах по локализации; он используется рядом переводческих компаний и поддерживается некоторыми средствами для локализации.The XLIFF format is an XML format specifically designed for use in localization, and should be well supported by some localization vendors or localization tools. Для создания XLIFF-файлов из других файлов ресурсов (например, .resw или .resjson) можно использовать набор средств для многоязычных приложений.You can use the Multilingual App Toolkit to generate XLIFF files from other resource files, such as .resw or .resjson.

Примечание

Локализация также может потребоваться для других ресурсов, включая изображения и звуковые файлы.Localization might also be necessary for other assets, including images and audio files.

Следует также учитывать следующее.You should also consider the following:

  • Средства локализации Для синтаксического анализа файлов ресурсов доступны некоторые средства локализации, позволяющие переводчикам редактировать только строки, доступные для перевода.Localization tools A number of localization tools are available for parsing resource files and allowing only the translatable strings to be edited by translators. Этот подход снижает вероятность случайного редактирования тегов XML переводчиком.This approach reduces the risk of a translator accidentally editing the XML tags. Недостаток состоит в необходимости применения во время локализации нового инструмента и процесса.But it has the drawback of introducing a new tool and process to the localization process. Средство для локализации удобно применять для проектов с большими объемами строковых ресурсов, но с небольшим количеством языков, на которые осуществляется перевод.A localization tool is good for projects with a large volume of strings but a small number of languages. Подробнее см. в разделе Использование набора средств для многоязычных приложений.To learn more, see How to use the Multilingual App Toolkit.
  • Поставщики локализации Если приложение содержит обширные строки, которые необходимо преобразовать в большое количество языков, рассмотрите возможность использования поставщика локализации.Localization vendors Consider using a localization vendor if your application contains extensive strings that need to be translated into a large number of languages. Компания-локализатор может дать рекомендации по процессу и средствам локализации, а также предоставить услуги по переводу ваших файлов ресурсов.A localization vendor can give advice about tools and processes, as well as translating your resource files. Такое решение — наилучшее, но одновременно и самое дорогое. Кроме того, в этом случае для переводимых данных увеличивается время от начала разработки до выпуска.This is an ideal solution, but is also the most costly option, and may increase the turnaround time for your translated content.

Используйте клавиши доступа и метки единообразноKeep access keys and labels consistent

Проблемой при локализации является синхронизация клавиш доступа, использующихся в специальных возможностях, с отображением локализованных клавиш доступа, так как два этих строковых ресурса классифицируются по-разному.It is a challenge to "synchronize" the access keys used in accessibility with the display of the localized access keys, because the two string resources are categorized in two separate sections. Обязательно введите комментарии к строке метки, например: Make sure that the emphasized shortcut key is synchronized with the access key.Be sure to provide comments for the label string such as: Make sure that the emphasized shortcut key is synchronized with the access key.

Включайте поддержку фуриганы для строк на японском языке, которые могут подвергаться сортировкеSupport furigana for Japanese strings that can be sorted

В японском языке символы кандзи обладают свойством произноситься по-разному в зависимости от слова или контекста, в которых они используются.Japanese kanji characters have the property of having more than one reading (pronunciation) depending on the word in which they are used. Это может привести к проблемам при попытке сортировки объектов с именами на японском языке, например названий приложений, файлов, песен и т. д.This leads to problems when you try to sort Japanese named objects, such as application names, files, songs, and so on. Ранее слова на кандзи по умолчанию сортировались с помощью машинного порядка сортировки, который назывался XJIS.Japanese kanji have, in the past, usually been sorted in a machine-understandable order called XJIS. Но, к сожалению, такой порядок сортировки не учитывает фонетику, поэтому плохо подходит для использования.Unfortunately, because this sorting order is not phonetic it is not very useful for humans.

Эта проблема решается с помощью функции Фуригана , позволяющей пользователю или автору указать фонетические символы для используемых символов.Furigana works around this problem by allowing the user or creator to specify the phonetics for the characters they are using. Используя следующую процедуру добавления фуриганы к имени вашего приложения, вы обеспечите его правильное расположение в списке приложений при сортировке.If you use the following procedure to add furigana to your app name, you can ensure that it is sorted in the proper location in the app list. Если название вашего приложения содержит символы кандзи и фуригана отсутствует, а язык пользовательского интерфейса или порядок сортировки — японский, Windows старается наилучшим образом создать правильное произношение.If your app name contains kanji characters and furigana is not provided when the user’s UI language or the sort order is set to Japanese, Windows makes its best effort to generate the appropriate pronunciation. Тем не менее есть вероятность, что названия приложений, имеющие редкие или уникальные прочтения, будут отсортированы по более общим правилам чтения.However, there is a possibility for app names containing rare or unique readings to be sorted under a more common reading instead. Поэтому в рамках процесса локализации японских приложений (особенно если их имена содержат символы кандзи) рекомендуется предоставлять версию имен приложений с использованием символов фуриганы.Therefore, the best practice for Japanese applications (especially those containing kanji characters in their names) is to provide a furigana version of their app name as part of the Japanese localization process.

  1. Добавьте ms-resource:Appname как отображаемое имя пакета и отображаемое имя приложения.Add "ms-resource:Appname" as the Package Display Name and the Application Display Name.

  2. Создайте папку ja-JP в разделе «strings» и добавьте два файла ресурсов следующим образом:Create a ja-JP folder under strings, and add two resource files as follows:

    strings\
        en-us\
        ja-jp\
            Resources.altform-msft-phonetic.resw
            Resources.resw
    
  3. В Resources.resw для общей папки ja-JP: добавьте строковый ресурс для Appname 希蒼.In Resources.resw for general ja-JP: Add a string resource for Appname "希蒼"

  4. В Resources.altform-msft-phonetic.resw для японоязычных ресурсов с символами фуриганы: добавьте значение фуриганы для AppName "のあ".In Resources.altform-msft-phonetic.resw for Japanese furigana resources: Add furigana value for AppName "のあ"

Пользователь может выполнять поиск имени приложения 希蒼, используя как значение фуриганы のあ (noa), так и фонетическое значение (используя функцию GetPhonetic из редактора метода ввода (IME)) まれあお (mare-ao).The user can search for the app name "希蒼" using both the furigana value "のあ" (noa), and the phonetic value (using the GetPhonetic function from the Input Method Editor (IME)) "まれあお" (mare-ao).

Сортировка выполняется по формату, установленному на региональной панели управления:Sorting follows the Regional Control Panel format:

  • Если установлены японские региональные параметры пользователяUnder a Japanese user locale,
    • Если включена фуригана, 希蒼 сортируется по の.If furigana is enabled, then "希蒼" is sorted under "の".
    • Если фуригана отсутствует, 希蒼 сортируется по ま.If furigana is missing, then "希蒼" is sorted under "ま".
  • Если установлены не японские региональные параметры пользователяUnder a non-Japanese user locale,
    • Если включена фуригана, 希蒼 сортируется по の.If furigana is enabled, then "希蒼" is sorted under "の".
    • Если фуригана отсутствует, 希蒼 сортируется по 漢字.If furigana is missing, then "希蒼" is sorted under "漢字".

ПримерыSamples