Глобализация и локализация решений Microsoft Office
Обновлен: Ноябрь 2007
Большинство аспектов глобализации и локализации решений Microsoft Office аналогичны аспектам, возникающим при создании других типов решений с помощью Visual Studio. Общие сведения см. в разделе Глобализация и локализация приложений. Дополнительные сведения о глобализации и локализации см. также на веб-странице MSDN Вопросы глобализации и локализации решений, созданных средствами Microsoft Visual Studio для системы Microsoft Office.
Локализация текста документа
Документ, шаблон или рабочая книга в проекте могут содержать статический текст, который должен быть локализован отдельно от сборки и других управляемых ресурсов. Прямым способом является создание копии документа и перевод текста с помощью Microsoft Office Word или Microsoft Office Excel. Данная процедура может применяться, даже если в код не вносятся изменения, поскольку со сборкой может быть связано любое число документов.
Тем не менее, необходимо следить за тем, чтобы любая часть кода, взаимодействующая с текстом документа, соответствовала языку текста, а также за тем, чтобы к закладкам, именованным диапазонам и иным отображаемым диапазонам применялись изменения форматирования документа Office, которые потребовались в соответствии с грамматикой и изменением длины текста. В случае с шаблонами документов, содержащими сравнительно мало текста, можно сохранять текст в файлах ресурсов и затем загружать его во время выполнения.
Направление текста
В Excel можно задать свойство рабочего листа для вывода текста справа налево. Ведущие элементы управления или любые иные элементы управления, имеющие свойство RightToLeft, при размещении в конструкторе автоматически соответствуют данным параметрам во время выполнения. В Word отсутствует параметр документа для использования двунаправленного текста (просто меняется выравнивание текста), поэтому элементы управления не могут соответствовать данной настройке. Вместо этого необходимо задать выравнивание текста для каждого элемента управления. Можно написать код для последовательного перебора всех элементов управления и применения к ним способа вывода текста справа налево.
Изменение языка и региональных параметров
Код настройки обычно использует тот же основной поток пользовательского интерфейса, что и Word или Excel, поэтому любые изменения языка и региональных параметров потока влияют на все остальные задачи, выполняемые в данном потоке. Изменения не ограничиваются только настройкой.
Инициализация элементов управления Windows Forms производится перед запуском надстроек Visual Studio Tools for Office ведущим приложением. В этом случае региональные параметры должны изменяться до задания элементов управления пользовательского интерфейса.
Установка языковых пакетов
Если в Windows установлен язык, отличный от английского, можно установить языковой пакет Visual Studio Tools for Office, чтобы сообщения среды выполнения Visual Studio Tools for Office также отображались на этом языке. Если какие-либо конечные пользователи запускают решение в операционной системе Windows, в которой установлен язык, отличный от английского, им необходимо установить соответствующий языковой пакет, чтобы сообщения среды выполнения также отображались на этом языке. Эти языковые пакеты Visual Studio Tools for Office доступны в Центре загрузки Майкрософт.
Кроме того, для сообщений ClickOnce необходимы распространяемые языковые пакеты платформы .NET Framework. Языковые пакеты платформы .NET Framework доступны в Центре загрузки Майкрософт.
Региональные параметры и вызовы Excel COM
При вызове управляемым клиентом метода для COM-объекта и необходимости передачи сведений, относящихся к конкретному языку и региональным параметрам, используется объект CurrentCulture (языковой стандарт), соответствующий языковому стандарту текущего потока. Языковой стандарт текущего потока наследуется от пользовательских региональных параметров по умолчанию. Однако при обращении к объектной модели Excel Visual Studio Tools for Office автоматически передает не зависящий от региональных параметров код языка (LCID). Необходимо форматировать все данные, для которых существуют настройки, зависящие от региональных стандартов, например даты и валюты, с помощью формата данных Английский (США) (код языка 1033) перед передачей их в Microsoft Office Excel или чтением форм данных из кода проекта Visual Studio Tools for Office. Дополнительные сведения см. в разделе Форматирование данных в Excel при помощи различных региональных параметров.
Это поведение управляется атрибутом ExcelLocale1033Attribute. Можно изменить это поведение так, что данные будут передаваться с использованием LCID текущего потока, путем присвоения атрибуту ExcelLocale1033Attribute значения false. После этого можно написать собственный код для обработки взаимодействия между Excel и управляемым кодом. Дополнительные сведения см. в разделе Практическое руководство. Создание региональных строковых литералов в Excel с помощью отражения.
Замечания по хранению данных
Для обеспечения правильной интерпретации и отображения данных необходимо также учесть, что могут возникнуть проблемы при сохранении приложением данных, в том числе формул рабочих листов Excel, в виде строковых литералов (жестко запрограммированных) вместо строго типизированных объектов. Следует использовать данные, форматированные с использованием не зависящего от региональных параметров стиля или английского стиля (значение LCID США — "en-US").
Приложения, использующие строковые литералы
Возможные значения, которые могут быть жестко запрограммированными, включают литералы данных в формате английского языка (США) и формулы рабочих листов Excel, содержащие локализованные имена функций. Другой возможностью является жестко запрограммированная строка, содержащая число, например "1,000". В некоторых странах это рассматривается как одна тысяча, в то время как в других это означает одна целая и ноль десятых. Вычислительные операции и операции сравнения, выполняемые с использованием неправильного формата, могут привести к ошибочным результатам.
Excel интерпретирует любые строки в соответствии с LCID, передаваемым вместе со строкой. Это может вызывать сложности, если формат строки не соответствует передаваемому LCID. При передаче любых данных Visual Studio Tools for Office использует код языка (LCID) 1033 (Английский — США). Excel отображает данные в соответствии с региональными параметрами и языком пользовательского интерфейса Excel. VBA работает следующим образом: строки форматируются в соответствии с кодом языка "Английский — США", а в качестве LCID передается значение 0. Например, следующий пример кода VBA отображает правильно отформатированное значение для даты 12 мая 2004 г. в соответствии с текущими региональными параметрами пользователя:
'VBA
Application.ActiveCell.Value2 = "05/12/04"
Этот же код при использовании в решении Visual Studio Tools for Office и передаче в Excel посредством COM-взаимодействия дает тот же результат, если при форматировании даты используется стиль "Английский — США".
Например:
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 (система 2003)
Создание решений Office в Visual Studio
Общие сведения о необязательных параметрах в решениях Office