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


Рекомендации по разработке международных приложений

В этом разделе описаны рекомендации по разработке международных приложений.

Рекомендации по глобализации

  1. Используйте Юникод в качестве внутреннего стандарта приложения.

  2. Для управления данными и их форматирования необходимо использовать классы, учитывающие язык и регион, которые представлены в пространстве имен System.Globalization.

    • Для сортировки используйте классы SortKey и CompareInfo.

    • Для сравнения строк используйте класс CompareInfo.

    • Для форматирования даты и времени используйте класс DateTimeFormatInfo.

    • Для форматирования чисел используйте класс NumberFormatInfo.

    • Для григорианского и иных календарей следует использовать класс Calendar или одну из конкретных реализаций календаря.

  3. В соответствующих ситуациях необходимо использовать настройки языка и региональных параметров, предоставленные классом System.Globalization.CultureInfo. Для задач форматирования, например форматирования даты и времени или чисел, необходимо использовать свойство CultureInfo.CurrentCulture. Для извлечения ресурсов используйте свойство CultureInfo.CurrentUICulture. Обратите внимание, что свойства CurrentCulture и CurrentUICulture можно задавать на уровне отдельных потоков.

  4. В приложении необходимо обеспечить возможность считывания и записи данных в различных кодировках. Для этого используются классы кодировок из пространства имен System.Text. Не рекомендуется использовать данные в формате ASCII. Следует обеспечить ввод пользователем текста с использованием символов в международном формате. Например, приложение должно поддерживать использование символов в международном формате в именах серверов, каталогов, файлов, пользователей и в URL-адресах.

  5. При использовании класса UTF8Encoding в целях безопасности рекомендуется включить функцию обнаружения ошибок, предоставляемую этим классом. Чтобы включить функцию обнаружения ошибок, приложение должно создать экземпляр класса с использованием конструктора, принимающего параметр throwOnInvalidBytes, и установить для этого параметра значение true.

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

  7. Для отображения текста следует использовать классы из пространства имен System.Drawing.

  8. Для совместимости с разными операционными системами не следует допускать переопределения CultureInfo пользователем. Воспользуйтесь конструктором CultureInfo, который принимает параметр useUserOverride, и задайте для этого параметра значение false.

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

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

Рекомендации по локализации

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

  2. Не следует жестко кодировать строки или ресурсы пользовательского интерфейса.

  3. Не следует помещать нелокализуемые ресурсы в библиотеки DLL, содержащие только ресурсы. Это может вызвать сложности при переводе.

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

  5. Следует избегать неоднозначных конструкций, например "Empty Folder", в которых строки могут быть переведены различным образом в зависимости от грамматической роли их составляющих. Например, слово "empty" может быть как глаголом "очистить", так и прилагательным "пустая", что может привести к различным переводам такой фразы на такие языки, как французский или итальянский.

  6. Не следует использовать в приложении изображения и значки, содержащие текст. При их локализации могут возникнуть трудности.

  7. Следует выделять достаточно памяти на случай увеличения длины строк в интерфейсе пользователя. В некоторых языках длина фраз может увеличиться на 50–75 процентов по сравнению с другими языками.

  8. Для извлечения ресурсов для конкретного языка и региона следует использовать класс System.Resources.ResourceManager.

  9. Следует использовать для создания диалоговых окон форм Windows Forms Visual Studio 2010, что позволяет выполнить локализацию этих окон с помощью редактора ресурсов Windows Forms (Winres.exe). Не следует кодировать диалоговые окна форм Windows Forms вручную.

  10. Следует систематизировать создаваемое приложение с учетом возможности профессиональной локализации (перевода).

  11. Полное описание технологии создания и локализации ресурсов см. в разделе Ресурсы приложений.

Рекомендации по глобализации приложений ASP.NET

  1. В приложении следует явно задать свойства CurrentUICulture и CurrentCulture. Не следует полагаться на настройки по умолчанию.

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

  3. Следует помнить, что в ASP.NET можно определить следующие три типа кодировок:

    • requestEncoding определяет кодировку данных, получаемых от обозревателя клиента;

    • responseEncoding определяет кодировку данных, передаваемых в обозреватель клиента. В большинстве случаев эта кодировка должна соответствовать кодировке requestEncoding;

    • fileEncoding определяет кодировку по умолчанию, используемую для анализа файлов .aspx, .asmx и .asax.

  4. Следует задать значения для атрибутов requestEncoding, responseEncoding, fileEncoding, culture и uiCulture в следующих трех местах в приложении ASP.NET.

    • В разделе глобализации файла Web.config. Это внешний файл приложения ASP.NET. Дополнительные сведения см. в разделе Элемент <globalization>.

    • В директиве страницы. Обратите внимание, что когда приложение находится на странице, файл уже считан. Следовательно, уже поздно задавать атрибуты fileEncoding и requestEncoding. В директиве страницы могут задаваться только атрибуты uiCulture, Culture и responseEncoding.

    • Программно в коде приложения. Эта настройка может изменяться для различных запросов. Как и в случае с директивой страницы, при передаче управления коду приложения слишком поздно задавать атрибуты fileEncoding и requestEncoding. В коде приложения могут задаваться только атрибуты uiCulture, Culture и responseEncoding.

  5. Обратите внимание, что в качестве значения uiCulture может быть задан язык, установленный в браузере. Дополнительные сведения см. в разделе Примеры использования ASP.NET – пример работы с ресурсами.

См. также

Основные понятия

Ресурсы в приложениях

Другие ресурсы

Шифрование и локализация