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


Локализация статических свойств

Вы можете локализовать статические свойства с помощью карт частичных значений.

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

Использование сопоставлений значений для локализации статических свойств

  1. Создайте главный MOF-файл (Mastervm.mof).

    Следующий пример кода можно использовать для создания главного MOF-файла (Mastervm.mof).

    [Locale(0x409)]
    class Group1
    {
        [key] string ID;
        [DisplayName("Numbers"),
            ValueMap{0,1,2,3}:amended,
            Values{"Zero", "One", "Two", "Three"}:amended]
        Uint32 Numbers;
    };
    
  2. Создайте версии MOF-файла, нейтральные к языку и специфичные для конкретного языка.

    Введите следующую команду в командной строке, чтобы создать независимую от языка и зависящую от языка версии MOF-файла.

    mofcomp -MOF:LnVm.mof -MFL:LsVm.mfl -Amendment:MS_409 MasterVm.mof
    

    Компилятор MOF создает специализированные для определённого языка и универсальные файлы MOF: LnVm.mof и LsVm.mfl. Значения американского английского языка для свойства Numbers помещаются в MFL-файл для пространства имен американского английского языка.

    В следующем примере кода показано содержимое файла LsVm.mfl.

    #pragma namespace("\\\\.\\root\\default")
    instance of __namespace{ name="ms_409";};
    #pragma namespace("\\\\.\\root\\default\\ms_409")
    
    [AMENDMENT, LOCALE(0x409)] 
    class Group1
    {
      [ValueMap{0, 1, 2, 3} : Amended,
          Values{"Zero", "One", "Two", "Three"} : Amended] 
      Uint32 Numbers;
    };
    
  3. Скомпилируйте два MOF-файла и сохраните сведения о классе в репозитории CIM.

    Введите следующую команду в командной строке, чтобы скомпилировать два MOF-файла.

    Mofcomp LnVm.mof 
    Mofcomp LsVm.mfl
    
  4. Локализация MFL-файла для других языковых стандартов.

    В следующем примере кода показано содержимое MFL-файла для французского пространства имен.

    #pragma namespace("\\\\.\\root\\default")
    instance of __namespace{ name="ms_40C";};
    #pragma namespace("\\\\.\\root\\default\\ms_40C")
    
    [AMENDMENT, LOCALE(0x40C)] 
    class Group1
    {
        [key] string ID;
        [ValueMap{0, 1, 2, 3} : Amended,
            Values{"Zero", "Un", "Deux", "Trois"} : Amended]
        Uint32 Numbers;
    };
    

Итоговый результат заключается в том, что как отображаемое имя, так и значение свойства Numbers определяются языковым стандартом пользователя, выполнившего вход в систему. Если пользователь указывает языковой стандарт, который не был предоставлен, данные квалификатора по умолчанию поступают из пространства имен английского языка (ms_409).

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

Заметка

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