【发布时间】:2015-11-30 22:35:31
【问题描述】:
我想使用 django i18n 支持来翻译我的 javascript 文件。 我有以下 javascript 文件:
var test_text = gettext('example');
@withStyles(styles)
export default class HomePage {
static contextTypes = {
i18n: PropTypes.object
}
constructor() {
this.componentDidMount.bind(this);
this.handleCitySearch.bind(this);
}
render() {
return (
<Grid className="HomePage">
<Row className="HomePage-hero">
<Col md={8} style={{ textAlign: 'center' }}>
<Input ref="city" bsSize="large" type="text" />
<Button bsSize="large" bsStyle="default" onClick={this.handleCitySearch}>{gettext('button text')}</Button>
</Col>
<Col md={4}>
<ul>
<li>{gettext('SOME TEXT')}</li>
<li>{gettext('MORE TEXT')}</li>
</ul>
</Col>
</Row>
</Grid>
);
}
}
现在我运行 djangos makemessages 命令:
python manage.py makemessages -l de -d djangojs -v 3 -s
我希望创建的翻译文件有四个条目('example'、'button text'、'SOME TEXT'和'MORE TEXT'),因为gettext在js文件中出现了3次。
但是创建的语言环境文件只有两个“示例”条目:
#: ../HomePage.js:1
msgid "example"
msgstr ""
#: ../HomePage.js:25
msgid "MORE TEXT"
msgstr ""
我也收到此警告。但不知道是什么意思(文件只有 32 行)
HomePage.js:33: warning: RegExp literal terminated too early
有谁知道为什么 django 会忽略其他条目? 可能是因为我使用了jsx语法,还是因为我使用了es6类?
更新:
我发现这不是 django 的问题,而是xgettext 的问题。
Django 使用以下命令调用xgettext:
xgettext --language=JavaScript --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 --keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3 --output=- --from-code=UTF-8 --add-comments=Translators ../HomePage.js
那么有没有xgettext专家可以帮助我?
【问题讨论】:
-
你解决了吗?
标签: javascript django gettext django-i18n xgettext