feat: CMS com limites de caracteres, traduções auto e painel de notificações
This commit is contained in:
44
frontend/scripts/checkTranslations.cjs
Normal file
44
frontend/scripts/checkTranslations.cjs
Normal file
@@ -0,0 +1,44 @@
|
||||
const { PrismaClient } = require('@prisma/client');
|
||||
|
||||
async function main() {
|
||||
const prisma = new PrismaClient();
|
||||
try {
|
||||
const pages = await prisma.pageContent.findMany({
|
||||
orderBy: [{ slug: 'asc' }, { locale: 'asc' }],
|
||||
});
|
||||
|
||||
const grouped = pages.reduce((acc, page) => {
|
||||
acc[page.slug] = acc[page.slug] || [];
|
||||
acc[page.slug].push({ locale: page.locale, updatedAt: page.updatedAt });
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
for (const [slug, entries] of Object.entries(grouped)) {
|
||||
console.log(`\n=== ${slug.toUpperCase()} ===`);
|
||||
const pt = entries.find((e) => e.locale === 'pt');
|
||||
const ptDate = pt ? new Date(pt.updatedAt) : null;
|
||||
|
||||
for (const locale of ['pt', 'en', 'es']) {
|
||||
const entry = entries.find((e) => e.locale === locale);
|
||||
if (!entry) {
|
||||
console.log(`${locale.toUpperCase()}: missing`);
|
||||
continue;
|
||||
}
|
||||
|
||||
const dt = new Date(entry.updatedAt);
|
||||
let status = 'ok';
|
||||
if (ptDate && locale !== 'pt' && dt < ptDate) {
|
||||
status = 'outdated';
|
||||
}
|
||||
console.log(`${locale.toUpperCase()}: ${dt.toISOString()} (${status})`);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
await prisma.$disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
main().catch((err) => {
|
||||
console.error(err);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
Reference in New Issue
Block a user