Artalk
Artalk copied to clipboard
i18n: locale override
Hello
- 我尝试按照docs中的示例修改i18n文本,例如
Artalk.init({
// override i18n
locale: {
voteUp: "Like",
voteDown: "Dislike",
}
})
但似乎没有生效。
docs下面的评论里提到了placeholder的例子。docs中的示例是
Artalk.init({
locale: {
placeholder: 'こんにちは',
}
})
而在我这边似乎需要修改为下面这样才生效(即成为conf的子元素 src)
Artalk.init({
placeholder: 'こんにちは',
})
而这个结构对于 voteUp 等来说又是无效的(简单看了一下似乎代码的实现方式不同? src)
不清楚文档是否相对当前代码有过时信息,如果有的话希望可以更新一下!
- 另外,上面所述的覆盖文本的方法似乎是对所有语言生效的……?我在想是否可以实现更精细的文本管理
例如,在后端载入i18n文件
artalk-app/
| artalk
| artalk.yml
| i18n/
|- en-US.yml
|- ja-JP.yml
或者前端传入i18n object
Artalk.init({
locale: "auto",
i18n: {
"en-US": {
voteUp: "Like",
// ...
},
"ja-JP": {
voteUp: "いいね",
// ...
},
},
});
毕竟是直接展示在用户端的文本,希望它能通过细粒度的调整支持更多类型/风格的服务
同样需要
目前解决办法:自行前端定义updateFormFields()函数,放到与artalk init在一起的初始化函数中。
function updateFormFields() {
// 等待DOM更新
setTimeout(() => {
// 修改昵称字段
const nameInput = document.querySelector('#Comments .atk-main-editor .atk-header .atk-name');
if (nameInput) {
nameInput.placeholder = 'Nickname *';
nameInput.required = true;
nameInput.title = 'Required, used to identify your comments.';
}
// 修改邮箱字段
const emailInput = document.querySelector('#Comments .atk-main-editor .atk-header .atk-email');
if (emailInput) {
emailInput.placeholder = 'Email *';
emailInput.required = true;
emailInput.title = 'Required, used to receive reply notifications.';
}
// 修改网站字段
const linkInput = document.querySelector('#Comments .atk-main-editor .atk-header .atk-link');
if (linkInput) {
linkInput.placeholder = 'Website';
linkInput.title = 'Optional, used to easily jump to your personal website.';
}
}, 100)
}