28 lines
647 B
TypeScript
28 lines
647 B
TypeScript
import type enMessages from "../messages/en.json"
|
|
|
|
export type AdminMessages = typeof enMessages
|
|
|
|
function resolveNestedValue(source: unknown, key: string): unknown {
|
|
let current: unknown = source
|
|
|
|
for (const segment of key.split(".")) {
|
|
if (!current || typeof current !== "object") {
|
|
return null
|
|
}
|
|
|
|
current = (current as Record<string, unknown>)[segment]
|
|
}
|
|
|
|
return current
|
|
}
|
|
|
|
export function translateMessage(messages: AdminMessages, key: string, fallback?: string): string {
|
|
const resolved = resolveNestedValue(messages, key)
|
|
|
|
if (typeof resolved === "string") {
|
|
return resolved
|
|
}
|
|
|
|
return fallback ?? key
|
|
}
|