Fix post language detection

- In case no language is detected set default.
This commit is contained in:
Wolfgang Huß 2023-09-11 12:43:02 +02:00
parent a47600f7bf
commit b5ae101931
2 changed files with 29 additions and 4 deletions

View File

@ -131,4 +131,25 @@ describe('languagesMiddleware', () => {
},
})
})
describe('detects no language', () => {
it('has default language', async () => {
variables = {
...variables,
content: '',
}
await expect(
mutate({
mutation: createPostMutation,
variables,
}),
).resolves.toMatchObject({
data: {
CreatePost: {
language: 'en',
},
},
})
})
})
})

View File

@ -1,20 +1,24 @@
import LanguageDetect from 'languagedetect'
import { removeHtmlTags } from '../helpers/cleanHtml'
const setPostLanguage = (text) => {
const setPostLanguage = (text, defaultLanguage) => {
const lngDetector = new LanguageDetect()
lngDetector.setLanguageType('iso2')
return lngDetector.detect(removeHtmlTags(text), 1)[0][0]
let languages = lngDetector.detect(removeHtmlTags(text), 1)
if (!(Array.isArray(languages) && languages.length > 0)) {
languages = [[defaultLanguage, 1.0]]
}
return languages[0][0]
}
export default {
Mutation: {
CreatePost: async (resolve, root, args, context, info) => {
args.language = await setPostLanguage(args.content)
args.language = await setPostLanguage(args.content, context.user.locale)
return resolve(root, args, context, info)
},
UpdatePost: async (resolve, root, args, context, info) => {
args.language = await setPostLanguage(args.content)
args.language = await setPostLanguage(args.content, context.user.locale)
return resolve(root, args, context, info)
},
},