2017-04-20 56 views
0

我有一系列wtforms写在一个烧瓶应用程序。我的应用程序中的一个页面将被讲英语和西班牙语的人使用。我希望找到一种干净的方式,在网页上用切换按钮切换英文和西班牙文之间的表单元素标签。标签烧瓶wtforms形式切换语言形式

我找到了一个很好的解决方案使用HTML lang属性在这里(第二答案下来,用j格罗弗)来切换语言:

Using Javascript to change website language

这个封闭的每种语言在<span>元素,然后简单地隐藏我们不想看到的一个。

我的问题是,我的窗体上的字段标签来自wtforms对象。我不确定如何在当前的设置中包含多种语言。见下文对我现在哪里一个例子:

class RoofCheck(FlaskForm):                                                
    """                                                      
    Class holding the form inputs for a roof check                                              
    """                                                      
    roofstate = RadioField('Roof Status',                                            
          validators=[validators.DataRequired('Please select roof closed or open')],                               
          choices=[('closed', 'Closed'), ('open', 'Open')])                                     
    comments = TextAreaField('Comments on roof status',                                          
          [validators.optional(), validators.length(max=390)],                                   
          render_kw={"placeholder": "Enter comments here",                                    
             "rows": 4,                                           
             "style": "min-width: 100%"})                                      
    submit = SubmitField('Submit') 

HTML

<div id='roof_check' class='col-md-6 padding-0'>                                           
    <form id="roof_check_form" action={{ url_for('roof_check')}} method="post" name="roof">                                 
     <fieldset class='form_group'>                                              
      {{ form1.hidden_tag() }}                                              
      <legend class='text-center'>                                             
       Daily visual check of the roof                                       
      </legend>                                                  
      {% for subfield in form1.roofstate %}                                           
       <div class='form-check'>                                             
        {{ subfield }} &nbsp;                                             
        {{ subfield.label(class_="form-check-label") }} <br/>                                     
       </div>                                                 
      {% endfor %}                                                 
      <div class='form-check'>                                              
       {{ form1.comments }}                                             
      </div>                                                  
      <div class='form-check'>                                              
       {% with messages = get_flashed_messages(category_filter=["form1"]) %}                                  
        {% if messages %}                                              
         {% for message in messages %}                                          
          <div> {{ message }} </div>                                         
         {% endfor %}                                              
        {% endif %}                                               
       {% endwith %}                                                
       {% for message in form1.roofstate.errors %}                                        
        <div> {{ message }} </div>                                           
       {% endfor %}                                                
       <div style="padding-top: 5px;">                                           
        {{ form1.submit(class_="btn btn-primary") }}                                       
       </div>                                                 
      </div>                                                  
     </fieldset>                                                  
    </form>                                                    
</div> 

我不知道从哪里开始添加多个标签的RoofCheck类形式对象。关于如何在这里插入对两种语言的支持的任何建议都会很棒。提前致谢。

回答

0

所以事实证明,我可以直接将HTML添加到标签,并将语言属性放在那里,然后在上面的链接中使用JavaScript解决方案来切换语言。例如:

roof_status_text = ("<span lang='en'>Roof Status</span>" 
        "<span lang='es'>Estado del Techo</span>") 
open_text = ("<span lang='en'>Open</span>" 
      "<span lang='es'>Abierto</span>") 
closed_text = ("<span lang='en'>Closed</span>" 
       "<span lang='es'>Cerrado</span>") 
roofstate = RadioField(roof_status_text, 
         validators=[validators.DataRequired('Please select roof closed or open')],                               
         choices=[('closed', closed_text), 
           ('open', open_text)])