Проверка локализуемости

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

Анализ локализуемости состоит из трех следующих проверок.

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

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

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

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

  • Адреса

  • номера телефонов;

  • Размеры бумаги

  • Единицы измерения длины, веса, площади, объема и температуры

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

    using System;
    using System.Globalization;
    
    public class Example
    {
       public static void Main()
       {
          string[] cultureNames = { "en-US", "en-GB", "fr-FR",
                                    "ne-NP", "es-BO", "ig-NG" };
          foreach (var cultureName in cultureNames) {
             RegionInfo region = new RegionInfo(cultureName);
             Console.WriteLine("{0} {1} the metric system.", region.EnglishName,
                               region.IsMetric ? "uses" : "does not use");
          }
       }
    }
    // The example displays the following output:
    //       United States does not use the metric system.
    //       United Kingdom uses the metric system.
    //       France uses the metric system.
    //       Nepal uses the metric system.
    //       Bolivia uses the metric system.
    //       Nigeria uses the metric system.
    
    Imports System.Globalization
    
    Module Example
        Public Sub Main()
            Dim cultureNames() As String = {"en-US", "en-GB", "fr-FR",
                                             "ne-NP", "es-BO", "ig-NG"}
            For Each cultureName In cultureNames
                Dim region As New RegionInfo(cultureName)
                Console.WriteLine("{0} {1} the metric system.", region.EnglishName,
                                  If(region.IsMetric, "uses", "does not use"))
            Next
        End Sub
    End Module
    ' The example displays the following output:
    '       United States does not use the metric system.
    '       United Kingdom uses the metric system.
    '       France uses the metric system.
    '       Nepal uses the metric system.
    '       Bolivia uses the metric system.
    '       Nigeria uses the metric system.
    

Тестирование приложения

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

  • Сериализованные данные, которые неправильно десериализуются в разных версиях операционной системы.

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

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

  • Ресурсы, которые не удается найти, поскольку для приложения не заданы язык и региональные параметры по умолчанию.

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

  • Сравнения строк или сравнения на равенство, возвращающие непредвиденные результаты.

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

См. также