我正在尝试使用GatsbyJS静态站点生成器来重写我的站点。 用户可以通过UI更改语言。 几乎没有包含本地化文本数据的文件夹:
- src
- data
- en
- text1.json
- text2.json
...
- de
- text1.json
- text2.json
...
- es
- text1.json
- text2.json
...
如何根据当前语言获取数据? GraphQL查询应该如何?
答案 0 :(得分:2)
您可以使用社区Can't use jsonlite in R to read json format file。
您可以使用markdownRemark配置找到一个示例:
langKey
您可能希望根据allMarkdownRemark(filter: { fields: { langKey: { eq: "en" } } }) {
edges {
node {
fields {
slug,
langKey,
#your data
}
}
}
}
值过滤graphql查询:
async function getMyData() {
var token = req.headers['x-access-token'];
if (!token)
throw {
'msg': 'No Token'
};
jwt.verify(token, config.secret, function (err, decode) {
if (err) {
throw err;
} else {
let today = new Date();
today.setHours(0, 0, 0, 0)
let first = today.getDate() - today.getDay();
let last = first + 6;
let firstday = new Date(today.setDate(first)).toUTCString();
let lastday = new Date(today.setDate(last)).toUTCString();
let firstDayMonth = new Date(today.setDate(1));
let lastDayMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0)
lastDayMonth.setHours(23, 59, 59, 0);
today = new Date().setHours(0, 0, 0, 0);
return await Promise.all([
Data.find({
userId: decode.id,
created: {
$gte: today
}
}).exec(),
Data.find({
userId: decode.id,
created: {
$gte: firstday,
$lte: lastday
}
}).exec(),
Data.find({
userId: decode.id,
created: {
$gte: firstDayMonth,
$lte: lastDayMonth
}
}).exec()
]);
}
});
}
查看gatsby-plugin-i18n来源也可以为您提供帮助。