GraphQL提供多语言支持

时间:2018-03-15 08:05:31

标签: graphql gatsby

我正在尝试使用GatsbyJS静态站点生成器来重写我的站点。 用户可以通过UI更改语言。 几乎没有包含本地化文本数据的文件夹:

- src - data - en - text1.json - text2.json ... - de - text1.json - text2.json ... - es - text1.json - text2.json ...

如何根据当前语言获取数据? GraphQL查询应该如何?

1 个答案:

答案 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来源也可以为您提供帮助。