This commit is contained in:
Timothy Jaeryang Baek
2026-09-18 10:55:55 -04:00
parent 7cbaabe02f
commit 9d98ffcddf
+5 -22
View File
@@ -1,20 +1,6 @@
import migration from './settings-key-migration.json';
type Dictionary = Record<string, string>;
/** Preserve existing administrator overrides while settings move to semantic keys. */
export const settingsOverrides = (overrides: Dictionary = {}): Dictionary => {
const result = Object.fromEntries(Object.entries(overrides).filter(([, value]) => value.trim()));
for (const [oldKey, keys] of Object.entries(migration)) {
if (!overrides[oldKey]?.trim()) continue;
for (const key of keys) {
if (!overrides[key]?.trim()) result[key] = overrides[oldKey];
}
}
return result;
};
/** Only semantic settings keys get this fallback; legacy i18n behavior stays intact. */
/** Only semantic settings keys get this fallback; other translations keep their existing behavior. */
export const assembleSettingsTranslations = (
bundled: Dictionary,
english: Dictionary,
@@ -22,15 +8,12 @@ export const assembleSettingsTranslations = (
englishOverrides: Dictionary = {}
): Dictionary => {
const result = { ...bundled, ...overrides };
const local = settingsOverrides(overrides);
const fallback = { ...english, ...settingsOverrides(englishOverrides) };
for (const key of Object.keys(english)) {
if (!key.startsWith('settings.')) continue;
result[key] = local[key]?.trim()
? local[key]
: bundled[key]?.trim()
? bundled[key]
: fallback[key];
result[key] =
[overrides[key], bundled[key], englishOverrides[key], english[key]].find((value) =>
value?.trim()
) ?? '';
}
return result;
};