overleaf/services/web/scripts/translations/checkSanitizeOptions.js

44 lines
1.1 KiB
JavaScript
Raw Normal View History

import Path from 'path'
import fs from 'fs'
import Senitize from './sanitize.js'
import { fileURLToPath } from 'node:url'
import { loadLocale } from './utils.js'
const __dirname = fileURLToPath(new URL('.', import.meta.url))
const { sanitize } = Senitize
async function main() {
let ok = true
const base = Path.join(__dirname, '/../../locales')
for (const name of await fs.promises.readdir(base)) {
if (name === 'README.md') continue
const language = name.replace('.json', '')
const locales = loadLocale(language)
for (const key of Object.keys(locales)) {
const want = locales[key]
const got = sanitize(locales[key])
if (got !== want) {
if (want === 'Editor & PDF' && got === 'Editor & PDF') {
// Ignore this mismatch. React cannot handle escaped labels.
continue
}
ok = false
console.warn(`${name}: ${key}: want: ${want}`)
console.warn(`${name}: ${key}: got: ${got}`)
}
}
}
if (!ok) {
throw new Error('Check the logs, some values changed.')
}
}
try {
await main()
process.exit(0)
} catch (error) {
console.error(error)
process.exit(1)
}