我需要一个在自定义小部件模块index.js文件中使用撇号-i18n模块的示例。
在搜索了所有Apostrophes内置模块后,我意识到Apostrophe从不使用i18n来翻译javascript字符串。
我尝试了以下(在一个模块中找到),但它说“自我未定义”。我怎么能导入撇号-i18n模块来翻译我在index.js文件中的字符串?
module.exports = {
extend: 'apostrophe-widgets',
label: self.apos.i18n.__('Link Page'),
addFields: {
name: '_page',
type: 'joinByOne',
withType: 'apostrophe-page',
label: self.apos.i18n.__('Page'),
required: true,
idField: 'pageId',
filters: {
projection: {
title: 1,
slug: 1
}
}
}
};
编辑以供参考:
不需要i18n for module选项,因为Apostrophe处理管理字符串本身的语言环境。将小部件添加到apos.area
或apos.singleton
来电后,所有字符串都显示在locale/en.json
内,可以进行翻译(根据我的观察)。
似乎apostrophe-i18n
使用浏览器语言来确定要使用的语言环境。必须在app.js
:
'apostrophe-i18n': {
locales: ['en', 'de']
},
之后,我在locale/de.json
内的所有翻译字符串都被打印到页面上。
在模块中使用self
的工作代码(同样,i18n不需要):
module.exports = {
construct: function(self, options) {
options.label = self.apos.i18n.__('Link Page');
},
extend: 'apostrophe-widgets',
addFields: [
{
name: '_page',
type: 'joinByOne',
withType: 'apostrophe-page',
label: 'Page',
required: true,
idField: 'pageId',
filters: {
projection: {
title: 1,
slug: 1
}
}
}
]
};
答案 0 :(得分:0)
self
不存在于模块的construct
函数之外。尝试改为
construct: function(self, options) {
options.label = self.apos.i18n.__('Link Page');
}