Files
Cibello-app/apps/mobile/scripts/i18n-remove-language.mjs
T
Claude e7657d0153 feat: dölj SEK-receptkostnad för icke-SEK-användare + i18n:remove-language
- Recept-kostnaden ligger i SEK (basvaluta, D-028). För en spansk användare
  (currency != SEK) nollas estimatedCostMinorPerPortion i API:t (list + detalj)
  -> kostnads-taggen försvinner helt i stället för att visa en svensk SEK-siffra.
  (Beslut: hellre ingen uppskattning än fel valuta, tills riktpriser via kvitton/M8.)
- i18n:remove-language – motsvarighet till add-language, tar bort ett språk rent.
  Verifierat: add el -> remove el -> byte-rent, vakt + typecheck gröna.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-21 12:59:56 +00:00

56 lines
2.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
/**
* i18n:remove-language ta bort ett språk rent (motsatsen till add-language).
*
* node scripts/i18n-remove-language.mjs <kod>
* ex: node scripts/i18n-remove-language.mjs el
*
* Tar bort: locale-mappen, profile.language.<kod>-raden i alla filer, och de tre
* raderna i i18n.ts (import + SUPPORTED_LANGUAGES + resources). Endast radborttag
* → minimala diffar. Kör i18n:check + typecheck efteråt för att bekräfta.
*/
import { rmSync, readFileSync, writeFileSync, existsSync, readdirSync, statSync } from "node:fs";
import { join } from "node:path";
const ROOT = process.cwd(); // apps/mobile
const LOC = join(ROOT, "src/locales");
const I18N = join(ROOT, "src/lib/i18n.ts");
const code = process.argv[2];
if (!code || !/^[a-z]{2,3}$/.test(code)) {
console.error("Användning: node scripts/i18n-remove-language.mjs <kod> (t.ex. el)");
process.exit(1);
}
if (code === "sv") {
console.error("Kan inte ta bort sv svenska är källspråket.");
process.exit(1);
}
if (!existsSync(join(LOC, code))) {
console.error(`src/locales/${code} finns inte inget att ta bort.`);
process.exit(1);
}
// 1. locale-mappen
rmSync(join(LOC, code), { recursive: true, force: true });
// 2. profile.language.<kod>-raden ur alla kvarvarande locale-filer
const labelNeedle = `"profile.language.${code}":`;
for (const lang of readdirSync(LOC).filter((d) => statSync(join(LOC, d)).isDirectory())) {
const p = join(LOC, lang, "common.json");
const lines = readFileSync(p, "utf8").split("\n");
const kept = lines.filter((l) => !l.includes(labelNeedle));
if (kept.length !== lines.length) writeFileSync(p, kept.join("\n"));
}
// 3. de tre raderna i i18n.ts
const importNeedle = `import ${code} from "../locales/${code}/common.json";`;
const supportedNeedle = `code: "${code}",`;
const resourceRe = new RegExp(`^\\s+${code}: \\{ common: ${code} \\},$`);
const kept = readFileSync(I18N, "utf8")
.split("\n")
.filter((l) => l.trim() !== importNeedle && !l.includes(supportedNeedle) && !resourceRe.test(l));
writeFileSync(I18N, kept.join("\n"));
console.log(`✓ Tog bort språket "${code}" (locale-mapp, etikett i alla filer, i18n.ts-rader).`);
console.log(`Kör: pnpm --filter @app/mobile i18n:check && pnpm --filter @app/mobile typecheck`);