WBEM — открываем возможности локализации

Материал из Rosalab Wiki
Перейти к: навигация, поиск
Wbem-l10n.png

Многим известно, а остальные догадываются, что браузеры умеют передавать веб-серверу список предпочитаемых пользователем языков. Реализуется это с помощью специального http-заголовка Accept-Language. Например, его значением может быть:

ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3

Получив эту строку, веб-сервер понимает, что пользователь хочет получить информацию прежде всего на русском языке, причем на его разновидности, принятой в России. Если это невозможно — просто на русском, в крайнем случае на английском (американском), и на худой конец — любом английском.

В случае наличия подходящего контента веб-сервер сможет удовлетворить пользователя, условно говоря, на 100%, 80%, 50% и 30% соответственно.

Но этот механизм работает не только в вебе для обычных смертных. В стандартизированном наборе технологий для управления предприятием через веб, WBEM (Web-based Enterprise Management), предусмотрена подобная возможность получать с управляемых устройств информацию на языке, предпочитаемом администратором.

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

В Linux есть несколько (как всегда) вариантов внедрения WBEM. Один из них — использовать

  • на стороне управляемого компьютера проверенный временем CIM-сервер Pegasus, разработанный командой The Open Group;
  • а на стороне управляющего — молодую, но многообещающую библиотеку для Python'а lmiwbem, разработанную в Red Hat.

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

Наше решение — добавить в объект WBEMConnection соответствующее свойство requestAcceptLanguages.

Предложение было принято разработчиками, и в версии lmiwbem, следующей за версией 0.3.1, становится возможным следующее [1]:

import lmiwbem
conn = lmiwbem.WBEMConnection()
# Get Accept languages
 
print conn.request_accept_languages
# Set Accept languages
 
conn.request_accept_languages = [("ru", 1.0), ("en", 0.5)]
 

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

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.