在脚本中包含一个带有qsTr结果的变量,或者在QML中多次调用qsTr

时间:2019-05-09 09:52:16

标签: qt qml translation

这似乎是一个愚蠢的问题,但是我有一个函数,其中有一个for循环,因此我多次调用 <form > <br></br> <br></br> <br></br> <br></br> <TextField required id="standard-required" name="username" label="Employee ID" value={this.state.username} onChange={this.handleChange} margin="normal" variant="outlined" /> <br></br> <TextField style={{width:'14.5%'}} name="password" id="outlined-password-input" label="Password" // type="password" type={this.state.showPassword ? 'text' : 'password'} value={this.state.password} isRequired="true" onChange={this.handleChange} autoComplete="current-password" margin="normal" variant="outlined" InputProps={{ endAdornment: ( <InputAdornment position="end"> <IconButton aria-label="Toggle password visibility" onClick={this.handleClickShowPassword} > {this.state.showPassword ? <Visibility /> : <VisibilityOff />} </IconButton> </InputAdornment> ), }} /> <br></br> <br></br> <FormControl variant="outlined" className={styles.formControl} required> <InputLabel ref={ref => { this.InputLabelRef = ref; }} htmlFor="outlined-age-simple" > Role </InputLabel> <Select style={{ width: 220 }} name="role" value={this.state.role} onChange={this.handleChange} input={ <OutlinedInput labelWidth={this.state.labelWidth} name="name" id="outlined-age-simple" // value={this.state.role} /> } > <MenuItem value={'Doctor'}>Doctor</MenuItem> <MenuItem value={'Nurse'}>Nurse</MenuItem> <MenuItem value={'Receptionist'}>Receptionist</MenuItem> </Select> <br></br> <br></br> <Button variant="contained" style={{ backgroundColor: '#2699FB', width: 220 }} onClick={this.handleSubmit}><b style={{ color: '#fff' }}>login</b></Button> </FormControl> </form> 函数,就像这样:

qsTr

当然,根据文档function example() { var groups = [] for (var g=0; g<io_data.length; g++) { groups.push( { "label": qsTr("I/O Group"), "value": String(g+1), "headers": [ qsTr("Entry"), qsTr("Panel"), qsTr("Loop"), qsTr("Device") ] } ) } } ,该函数可以获取对应的翻译,因此,如果我的for循环太大,那么我认为在这种情况下,每个变量都有一个更好的选择qsTr翻译,例如:

qsTr

你们怎么看?

1 个答案:

答案 0 :(得分:1)

根据official documentation

最常见的标记字符串的方法是使用qsTr()函数。例如:

Text {
    id: txt1;
    text: qsTr("Back");
}

此代码使“后退”成为翻译文件中的关键条目。在运行时,翻译系统查找关键字“ Back”,然后获取当前系统区域设置的相应翻译值。结果将返回到text属性,并且用户界面将显示当前语言环境的相应“ Back”翻译。


在您的情况下,将创建5个关键条目:“ I / O组”,“条目”,“面板”,“循环”,“设备”。无论您在源代码中执行多少次循环操作。


通常,如果您知道可以减少特定函数(例如qsTr)的调用量而又没有太多开销,那就去做吧。


UPD :关于性能评估,您可以参考this project

此图将向您展示以前的声明而不是调用qsTr(以testCount=9999999运行)的效率。 enter image description here