alp-node
Version:
framework based on koa 2
36 lines (32 loc) • 971 B
text/typescript
import type { Context } from "koa";
import { defineLazyProperty } from "object-properties";
import type { AlpNodeApp } from "./AlpNodeApp";
export interface AlpLanguageContext {
readonly firstAcceptedLanguage: string;
readonly language: string;
}
export default function alpLanguage(app: AlpNodeApp): void {
const config = app.context.config;
const availableLanguages: string[] = config.get("availableLanguages");
if (!availableLanguages) {
throw new Error('Missing config "availableLanguages"');
}
defineLazyProperty(
app.context,
"language",
function language(this: Context): string {
return (
this.acceptsLanguages(availableLanguages) ||
availableLanguages[0] ||
"en"
);
},
);
defineLazyProperty(
app.context,
"firstAcceptedLanguage",
function firstAcceptedLanguage(this: Context): string {
return this.acceptsLanguages()[0] || availableLanguages[0] || "en";
},
);
}