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


Глобализация и локализация решений Microsoft Office

Большинство аспектов глобализации и локализации решений Microsoft Office аналогичны аспектам, возникающим при создании других типов решений с помощью Visual Studio. Общие сведения см. в разделе Глобализация и локализация приложений. Дополнительные сведения о глобализации и локализации см. также на веб-странице MSDN Вопросы глобализации и локализации решений, созданных средствами Microsoft Visual Studio для системы Microsoft Office.

Применение. Сведения этого раздела применяются к проектам уровня документа и уровня приложения для Microsoft Office 2010 и выпуска 2007 системы Microsoft Office. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.

Локализация текста документа

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

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

Направление текста

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

Изменение языка и региональных параметров

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

Инициализация элементов управления Windows Forms производится перед запуском надстроек уровня приложения ведущим приложением. В этом случае региональные параметры должны изменяться до задания элементов управления пользовательского интерфейса.

Установка языковых пакетов

Если в Windows установлен язык, отличный от английского, можно установить языковой пакет Среда выполнения Visual Studio Tools for Office, чтобы сообщения Среда выполнения Visual Studio Tools for Office также отображались на этом языке. Если пользователи запускают решения в операционной системе Windows, в которой установлен язык, отличный от английского, они должны установить нужный языковой пакет, чтобы просматривать сообщения времени выполнения на том же языке, который используется в Windows. Языковые пакеты Среда выполнения Visual Studio Tools for Office доступны в Центре загрузки Майкрософт.

Кроме того, для сообщений ClickOnce необходимы распространяемые языковые пакеты платформы .NET Framework. Языковые пакеты платформы .NET Framework доступны в Центре загрузки Майкрософт.

Региональные параметры и вызовы Excel COM

При вызове управляемым клиентом метода для COM-объекта и необходимости передачи сведений, относящихся к конкретному языку и региональным параметрам, используется объект CurrentCulture (языковой стандарт), соответствующий языковому стандарту текущего потока. Языковой стандарт текущего потока наследуется от пользовательских региональных параметров по умолчанию. В то же время, при вызове в объектной модели Excel из решения Excel, созданного с помощью средств разработки Office в Visual Studio, английский формат данных (США) с идентификатором языкового стандарта 1033 автоматически передается в объектную модель Excel. Необходимо форматировать все данные, для которых существуют настройки, зависящие от региональных стандартов (например даты и валюты) с помощью английского формата данных (США) перед передачей их в Microsoft Office Excel или чтением форм данных из кода проекта. Дополнительные сведения см. в разделе Форматирование данных в Excel при помощи различных региональных параметров;

Замечания по хранению данных

Для обеспечения правильной интерпретации и отображения данных необходимо также учесть, что могут возникнуть проблемы при сохранении приложением данных, в том числе формул рабочих листов Excel, в виде строковых литералов (жестко запрограммированных) вместо типобезопасных объектов. Следует использовать данные, форматированные с использованием не зависящего от региональных параметров стиля или английского стиля (значение LCID США — 1033).

Приложения, использующие строковые литералы

Возможные значения, которые могут быть жестко запрограммированными, включают литералы данных в формате английского языка (США) и формулы рабочих листов Excel, содержащие локализованные имена функций. Другой возможностью является жестко запрограммированная строка, содержащая число, например "1,000". В некоторых странах это рассматривается как одна тысяча, в то время как в других это означает одна целая и ноль десятых. Вычислительные операции и операции сравнения, выполняемые с использованием неправильного формата, могут привести к ошибочным результатам.

Excel интерпретирует любые строки в соответствии с LCID, передаваемым вместе со строкой. Это может вызывать сложности, если формат строки не соответствует передаваемому LCID. Решения Excel, созданные с помощью средств разработки Office в Visual Studio, используют идентификатор LCID 1033 (en-US) при передаче данных. Excel отображает данные в соответствии с региональными параметрами и языком пользовательского интерфейса Excel. VBA также работает следующим образом: строки форматируются в соответствии с кодом языка "Английский — США", а в качестве LCID передается значение 0. Например, следующий пример кода VBA отображает правильно отформатированное значение для даты 12 мая 2004 г. в соответствии с текущими региональными параметрами пользователя:

'VBA
Application.ActiveCell.Value2 = "05/12/04"

При использовании этого кода в решении, созданном с помощью средств разработки Office в Visual Studio и переданном в Excel с помощью взаимодействия COM, будут выведены те же результаты при условии, что дата отформатирована в формате "en-US".

Пример.

Me.Range("A1").Value2 = "05/12/04"
this.Range["A1", missing].Value2 = "05/12/04";

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

В следующем примере кода значение, введенное пользователем в ячейке A5, сохраняется как Double, после чего преобразуется в объект DateTime и отображается в ячейке A7. Ячейка A7 должна иметь формат отображения даты.

Private Sub ConvertDate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles ConvertDate.Click

    Try
        Dim dbl As Double = Me.Range("A5").Value2
        Dim dt As System.DateTime = System.DateTime.FromOADate(dbl)
        Me.Range("A7").Value2 = dt

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub
private void ConvertDate_Click(object sender, EventArgs e)
{
    try
    {
        double dbl = (double)(this.Range["A5", missing].Value2);
        System.DateTime dt = System.DateTime.FromOADate(dbl);
        this.Range["A7", missing].Value2 = dt;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

Функции листов Excel

Для большинства языковых версий Excel производится внутреннее преобразование имен функций листов. Однако вследствие возможных языковых проблем и проблем COM-взаимодействия настоятельно рекомендуется использовать в коде только английские имена функций.

Приложения, использующие внешние данные

Любой код, открывающий или иным образом использующий внешние данные, например файлы, которые содержат разделенные запятыми значения (CSV-файлы), экспортированные из устаревших систем, может работать некорректно, если экспорт таких файлов производится с использованием какого-либо формата, кроме "Английский — США". Это обычно не сказывается на доступе к базам данных, поскольку все значения представляются в двоичном формате, кроме тех случаев, когда данные в базе данных сохраняются в виде строк или при выполнении операций, не предусматривающих двоичный формат. Кроме того, при построении SQL-запросов с помощью данных Excel может потребоваться их представление в формате "Английский — США" в зависимости от используемой функции.

См. также

Задачи

Практическое руководство. Назначение многоязыкового пользовательского интерфейса Office

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

Форматирование данных в Excel при помощи различных региональных параметров

Необязательные параметры в решениях Office

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

Проектирование и создание решений Office