如何对下拉数据库服务中的语言更改做出反应

时间:2016-11-23 12:04:12

标签: orbeon

我有一张表格,其中包含市政当局的下拉选择 意大利用户看到意大利名字,德国用户看德国名字 更改表单的语言非常顺畅,名称会立即更新。

<resource xml:lang="de">
     <gem>
        <label>Ansuchen an die Gemeinde</label>
        <hint/>
        <item>
            <label>Abtei</label>                        
            <value>6</value>
        </item>
        ...
     </gem>
</resource>  
<resource xml:lang="it">
    <gem>
        <label>Richiesta al Comune di:</label>
        <hint/>
        <item> 
            <label>Aldino</label> 
            <value>1</value> 
        </item>
        ...
     </gem>
</resource>  

<fr:dropdown-select1 xmlns:xxbl="http://orbeon.org/oxf/xml/xbl" id="gem-control" bind="gem-bind">
    <xf:label ref="$form-resources/gem/label"/>
    <xf:hint ref="$form-resources/gem/hint"/>
    <xf:alert ref="$fr-resources/detail/labels/alert"/>
    <xf:itemset ref="$form-resources/gem/item">
        <xf:label ref="label"/>
        <xf:value ref="value"/>
    </xf:itemset>
 </fr:dropdown-select1>

现在我在populating a dropdown看到了 从数据库加载下拉项是可行的 我试过这个并且它起作用,但实际的解决方案在表单上有一个额外控制的小缺陷。

我在数据库中创建了一个包含三个字段gemlanggembeschr的表格。
表格内容示例:

gem    lang   gembeschr  
====== ====== =========    
 1     de     ALDEIN  
 1     it     ALDINO  
 ...  

在数据库服务的orbeon中,我使用了以下选择:
SELECT gem, gembeschr FROM tablename where lang=<sql:param type="xs:string" select=""/> order by gembeschr

但是到目前为止我看到的所有示例中,下拉列表中的更改都会对表单上的控件更改做出反应 所以在模型中我插入了以下var来建立表单的实际语言,然后在控件的计算中使用这个var:

<xf:var name="langmmm"> 
   <xxf:value value="xxf:get-session-attribute('fr-language')"/>
</xf:var>   

<xf:bind id="control-1-bind" name="control-1" ref="control-1" xxf:whitespace="trim" calculate="$langmmm"/> 

 <xf:output id="control-1-control" bind="control-1-bind">
     <xf:label ref="$form-resources/control-1/label"/>
     <xf:hint ref="$form-resources/control-1/hint"/>
     <xf:alert ref="$fr-resources/detail/labels/alert"/>
 </xf:output>

然后在动作中我在观察者中指定了这个控件:

 <xf:action event="xforms-value-changed xforms-enabled" ev:observer="control-1-control" if="true()">
     <!-- Service to call -->
     <xf:send submission="gemeindeliste-submission"/>
 </xf:action>       

NB。我无法将control-1的可见性更改为false(),因为然后将不再进行select的提交。

如果没有这种额外的控制,是否有可能在表单语言发生变化时启动选择?

非常感谢

1 个答案:

答案 0 :(得分:0)

如果您对数据库服务可以同时返回所有语言,则可以。请参阅this doc for details