Orbeon - многоязычный шаблон запроса HTTP-сервиса

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

Поскольку названия стран на каждом языке разные, я хотел бы передать веб-сервису параметр, указывающий язык пользователя. Другой вариант — выбрать правильную метку после загрузки списка.

К сожалению, я понятия не имею, как этого добиться. Любые идеи ?


person dvgm    schedule 09.09.2011    source источник
comment
Не могли бы вы сказать нам, относится ли это к форме, которую вы создали с помощью Form Builder, или к форме, которую вы написали непосредственно в XForms?   -  person avernet    schedule 09.09.2011
comment
Это форма, созданная с помощью Form Builder.   -  person dvgm    schedule 12.09.2011


Ответы (1)


Мне удалось передать язык веб-сервису, отредактировав исходный код вручную. Я добавил язык в качестве параметра запроса веб-службы со следующим xml (добавлен к действию).

<xforms:action context="instance('fr-service-request-instance')">
    <xforms:action class="fr-set-service-value-action">
        <xxforms:variable name="control-name" select="'requestor_country'" as="xs:string"/>
        <xxforms:variable name="path" select="//*:language" as="xs:string"/>
        <xforms:setvalue ref="$path" value="xxforms:instance('fr-language-instance')"/>
    </xforms:action>                
</xforms:action>

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

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

person dvgm    schedule 12.09.2011
comment
Найдите название вашего представления (это id на <xforms:submission>) и добавьте где-то под <xforms:model> следующее (которое вы можете переформатировать по желанию, чтобы сделать его более читабельным): <xforms:action ev:observer="fr-language-selector" ev:event="DOMActivate"><xforms:send submission="yahoo-weather-submission"/></xforms:action>. Это будет прослушивать пользователей, меняющих язык, и когда они также звонят в вашу службу. - person avernet; 12.09.2011
comment
Я не могу заставить это работать. Я добавил следующее прямо перед ‹/xforms:model› : ‹xforms:action ev:event=fr-language-selector ev:observer=DOMActivate› ‹xforms:send submit=Countries-submission/› ‹/xforms:action › где Country-submission — это идентификатор моего представления. Я проверил журналы и обнаружил, что веб-служба не вызывается при переключении языка. - person dvgm; 13.09.2011
comment
Хорошо, давайте пошагово. Во-первых, давайте посмотрим, вызывается ли слушатель. Если вы добавите <xforms:action ev:observer="fr-language-selector" ev:event="DOMActivate"><xforms:message>Language changed</xforms:message></xforms:action> внутрь <xforms:model>, затем протестируете форму и переключите язык, увидите ли вы отображаемое сообщение? (Я попробовал это со сборкой выпуска 3.9 PE, и я это вижу.) - person avernet; 13.09.2011
comment
Я сделаю. К сожалению, я не могу сделать это до среды на следующей неделе. - person dvgm; 13.09.2011
comment
Хорошо, нет проблем; спасибо за обновление, и вы сообщите нам, если это работает. - person avernet; 14.09.2011