mirror of
https://github.com/strapi/strapi.git
synced 2025-07-27 10:56:36 +00:00
48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
![]() |
'use strict';
|
||
|
|
||
|
module.exports = ({ strapi }) => ({
|
||
|
register() {
|
||
|
const useExtension = strapi
|
||
|
.plugin('graphql')
|
||
|
.service('extension')
|
||
|
.for('content-api').use;
|
||
|
|
||
|
const { isLocalizedContentType } = strapi.plugin('i18n').service('content-types');
|
||
|
|
||
|
useExtension(({ nexus, typeRegistry }) => {
|
||
|
/**
|
||
|
* Adds a "locale" arg to localized queries and mutations
|
||
|
* @param {object} config
|
||
|
*/
|
||
|
const addLocaleArg = config => {
|
||
|
const { parentType } = config;
|
||
|
|
||
|
// Only target queries or mutations
|
||
|
if (parentType !== 'Query' && parentType !== 'Mutation') {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const contentType = typeRegistry.get(config.type).config.contentType;
|
||
|
|
||
|
// Ignore non-localized content types
|
||
|
if (!isLocalizedContentType(contentType)) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
config.args.locale = nexus.stringArg();
|
||
|
};
|
||
|
|
||
|
const i18nPlugin = nexus.plugin({
|
||
|
name: 'i18nPlugin',
|
||
|
|
||
|
onAddOutputField(config) {
|
||
|
// Add the locale arg to the queries on localized CTs
|
||
|
addLocaleArg(config);
|
||
|
},
|
||
|
});
|
||
|
|
||
|
return { plugins: [i18nPlugin] };
|
||
|
});
|
||
|
},
|
||
|
});
|