feat: rename use of locale to lang where applicable
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import styles from "./contact.module.css"
|
||||
|
||||
import { langEnum } from "@/types/lang"
|
||||
import type { Lang } from "@/types/lang"
|
||||
import { Lang } from "@/constants/languages"
|
||||
import { Section, type ContactNode } from "@/types/requests/asides/contact"
|
||||
|
||||
export default function Contact({ sections, system: { locale } }: ContactNode) {
|
||||
@@ -72,17 +71,17 @@ export default function Contact({ sections, system: { locale } }: ContactNode) {
|
||||
|
||||
function getVisitingAddressMessage(lang: Lang) {
|
||||
switch (lang) {
|
||||
case langEnum.sv:
|
||||
case Lang.sv:
|
||||
return "Besöksadress"
|
||||
case langEnum.en:
|
||||
case Lang.en:
|
||||
return "Visiting address"
|
||||
case langEnum.da:
|
||||
case Lang.da:
|
||||
return "Besøgsadresse"
|
||||
case langEnum.de:
|
||||
case Lang.de:
|
||||
return "Besuchsadresse"
|
||||
case langEnum.fi:
|
||||
case Lang.fi:
|
||||
return "Vierailuosoite"
|
||||
case langEnum.no:
|
||||
case Lang.no:
|
||||
return "Besøksadresse"
|
||||
default:
|
||||
return ""
|
||||
|
||||
@@ -1,19 +1,17 @@
|
||||
import { localeToLang } from "@/constants/locales"
|
||||
import { type Lang, langEnum } from "@/types/lang"
|
||||
import { Lang, localeToLang } from "@/constants/languages"
|
||||
import { headers } from "next/headers"
|
||||
|
||||
export default function LangPopup({ lang }: { lang: Lang }) {
|
||||
const headersList = headers()
|
||||
const preferedLang = headersList.get("Accept-Language") ?? ""
|
||||
|
||||
const possibleLocales = Object.keys(localeToLang)
|
||||
const possibleLangs = Object.keys(localeToLang)
|
||||
|
||||
if (!possibleLocales.includes(preferedLang)) {
|
||||
if (!possibleLangs.includes(preferedLang)) {
|
||||
return null
|
||||
}
|
||||
|
||||
//@ts-ignore
|
||||
const langOfChoice: Lang = localeToLang[preferedLang]
|
||||
const langOfChoice: Lang = localeToLang[preferedLang as Lang]
|
||||
|
||||
if (langOfChoice === lang) {
|
||||
return null
|
||||
@@ -23,23 +21,23 @@ export default function LangPopup({ lang }: { lang: Lang }) {
|
||||
let viewIn = ""
|
||||
|
||||
switch (langOfChoice) {
|
||||
case langEnum.de:
|
||||
case Lang.de:
|
||||
language = "Deutsch"
|
||||
viewIn = "Ansicht in"
|
||||
break
|
||||
case langEnum.da:
|
||||
case Lang.da:
|
||||
language = "Dansk"
|
||||
viewIn = "Se in"
|
||||
break
|
||||
case langEnum.fi:
|
||||
case Lang.fi:
|
||||
language = "Suomi"
|
||||
viewIn = "Katso in"
|
||||
break
|
||||
case langEnum.no:
|
||||
case Lang.no:
|
||||
language = "Norsk"
|
||||
viewIn = "Se in"
|
||||
break
|
||||
case langEnum.sv:
|
||||
case Lang.sv:
|
||||
language = "Svenska"
|
||||
viewIn = "Visa in"
|
||||
break
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
import { Lang, langEnum } from "@/types/lang"
|
||||
import { Lang } from "@/constants/languages"
|
||||
|
||||
export default function SkipToMainContent({ lang }: { lang: Lang }) {
|
||||
let message = "Skip to main content"
|
||||
|
||||
switch (lang) {
|
||||
case langEnum.de:
|
||||
case Lang.de:
|
||||
message = "Direkt zum Inhalt"
|
||||
break
|
||||
case langEnum.sv:
|
||||
case Lang.sv:
|
||||
message = "Fortsätt till huvudinnehåll"
|
||||
break
|
||||
case langEnum.da:
|
||||
case Lang.da:
|
||||
message = "Spring over og gå til hovedindhold"
|
||||
break
|
||||
case langEnum.no:
|
||||
case Lang.no:
|
||||
message = "Gå videre til hovedsiden"
|
||||
break
|
||||
case langEnum.fi:
|
||||
case Lang.fi:
|
||||
message = "Siirry pääsisältöön"
|
||||
break
|
||||
}
|
||||
|
||||
@@ -1,8 +1,63 @@
|
||||
export const languages = {
|
||||
da: "Dansk",
|
||||
de: "Deutsch",
|
||||
en: "English",
|
||||
fi: "Suomi",
|
||||
no: "Norsk",
|
||||
sv: "Svenska",
|
||||
export enum Lang {
|
||||
en = "en",
|
||||
sv = "sv",
|
||||
no = "no",
|
||||
fi = "fi",
|
||||
da = "da",
|
||||
de = "de",
|
||||
}
|
||||
|
||||
export const languages = {
|
||||
[Lang.da]: "Dansk",
|
||||
[Lang.de]: "Deutsch",
|
||||
[Lang.en]: "English",
|
||||
[Lang.fi]: "Suomi",
|
||||
[Lang.no]: "Norsk",
|
||||
[Lang.sv]: "Svenska",
|
||||
}
|
||||
|
||||
export const localeToLang = {
|
||||
en: Lang.en,
|
||||
"en-US": Lang.en,
|
||||
"en-GB": Lang.en,
|
||||
"en-DE": Lang.en,
|
||||
"en-DK": Lang.en,
|
||||
"en-SE": Lang.en,
|
||||
"en-FI": Lang.en,
|
||||
|
||||
sv: Lang.sv,
|
||||
"se-SE": Lang.sv,
|
||||
"sv-SE": Lang.sv,
|
||||
"sv-FI": Lang.sv,
|
||||
|
||||
fi: Lang.fi,
|
||||
"fi-FI": Lang.fi,
|
||||
"se-FI": Lang.fi,
|
||||
"smn-FI": Lang.fi,
|
||||
|
||||
dk: Lang.da,
|
||||
da: Lang.da,
|
||||
"da-DK": Lang.da,
|
||||
"fo-DK": Lang.da,
|
||||
|
||||
de: Lang.de,
|
||||
"de-DE": Lang.de,
|
||||
"dsb-DE": Lang.de,
|
||||
"ksh-DE": Lang.de,
|
||||
"nds-DE": Lang.de,
|
||||
"hsb-DE": Lang.de,
|
||||
"de-CH": Lang.de,
|
||||
"de-AU": Lang.de,
|
||||
|
||||
no: Lang.no,
|
||||
nb: Lang.no,
|
||||
"nb-NO": Lang.no,
|
||||
"nn-NO": Lang.no,
|
||||
"se-NO": Lang.no,
|
||||
} as const
|
||||
|
||||
export function findLang(pathname: string) {
|
||||
return Object.values(Lang).find(
|
||||
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
import { langEnum, type Lang } from "@/types/lang"
|
||||
|
||||
export const localeToLang = {
|
||||
en: langEnum.en,
|
||||
"en-US": langEnum.en,
|
||||
"en-GB": langEnum.en,
|
||||
"en-DE": langEnum.en,
|
||||
"en-DK": langEnum.en,
|
||||
"en-SE": langEnum.en,
|
||||
"en-FI": langEnum.en,
|
||||
|
||||
sv: langEnum.sv,
|
||||
"se-SE": langEnum.sv,
|
||||
"sv-SE": langEnum.sv,
|
||||
"sv-FI": langEnum.sv,
|
||||
|
||||
fi: langEnum.fi,
|
||||
"fi-FI": langEnum.fi,
|
||||
"se-FI": langEnum.fi,
|
||||
"smn-FI": langEnum.fi,
|
||||
|
||||
dk: langEnum.da,
|
||||
da: langEnum.da,
|
||||
"da-DK": langEnum.da,
|
||||
"fo-DK": langEnum.da,
|
||||
|
||||
de: langEnum.de,
|
||||
"de-DE": langEnum.de,
|
||||
"dsb-DE": langEnum.de,
|
||||
"ksh-DE": langEnum.de,
|
||||
"nds-DE": langEnum.de,
|
||||
"hsb-DE": langEnum.de,
|
||||
"de-CH": langEnum.de,
|
||||
"de-AU": langEnum.de,
|
||||
|
||||
no: langEnum.no,
|
||||
nb: langEnum.no,
|
||||
"nb-NO": langEnum.no,
|
||||
"nn-NO": langEnum.no,
|
||||
"se-NO": langEnum.no,
|
||||
}
|
||||
|
||||
export const DEFAULT_LOCALE = "en"
|
||||
export const locales: Lang[] = ["da", "de", DEFAULT_LOCALE, "fi", "no", "sv"]
|
||||
|
||||
export function findLocale(pathname: string) {
|
||||
let locale = locales.find(
|
||||
(loc) => pathname.startsWith(`/${loc}/`) || pathname === `/${loc}`
|
||||
)
|
||||
return locale
|
||||
}
|
||||
@@ -1,8 +1,12 @@
|
||||
// Due to these records being used in next.config.js, and that is
|
||||
// required to be a js file, we use jsdoc to type these.
|
||||
/**
|
||||
* @typedef {import('../types/lang').Lang} Lang
|
||||
* @file Due to these records being used in next.config.js, and that is required
|
||||
* to be a js file, we use jsdoc to type these.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {import('@/constants/languages').Lang} Lang
|
||||
*/
|
||||
|
||||
/** @type {Record.<Lang, string>} */
|
||||
export const pageNames = {
|
||||
da: "mine-sider",
|
||||
|
||||
@@ -2,7 +2,7 @@ import { NextRequest, NextResponse } from "next/server"
|
||||
|
||||
import { auth } from "@/auth"
|
||||
|
||||
import { findLocale } from "@/constants/locales"
|
||||
import { findLang } from "@/constants/languages"
|
||||
import { pageNames } from "@/constants/myPages"
|
||||
|
||||
import { protectedRoutes } from "@/routes/protected"
|
||||
@@ -11,29 +11,29 @@ import type { NextAuthRequest } from "next-auth"
|
||||
|
||||
export async function publiceMiddleware(request: NextRequest) {
|
||||
const { nextUrl } = request
|
||||
const locale = findLocale(nextUrl.pathname)
|
||||
const lang = findLang(nextUrl.pathname)
|
||||
|
||||
if (nextUrl.pathname.startsWith(`/${locale}/login`)) {
|
||||
if (nextUrl.pathname.startsWith(`/${lang}/login`)) {
|
||||
return NextResponse.next()
|
||||
}
|
||||
|
||||
const contentType = "currentContentPage"
|
||||
const pathNameWithoutLocale = nextUrl.pathname.replace(`/${locale}`, "")
|
||||
const pathNameWithoutLang = nextUrl.pathname.replace(`/${lang}`, "")
|
||||
const searchParams = new URLSearchParams(request.nextUrl.searchParams)
|
||||
|
||||
if (request.nextUrl.pathname.includes("preview")) {
|
||||
searchParams.set("uri", pathNameWithoutLocale.replace("/preview", ""))
|
||||
searchParams.set("uri", pathNameWithoutLang.replace("/preview", ""))
|
||||
return NextResponse.rewrite(
|
||||
new URL(`/${locale}/preview-current?${searchParams.toString()}`, nextUrl)
|
||||
new URL(`/${lang}/preview-current?${searchParams.toString()}`, nextUrl)
|
||||
)
|
||||
}
|
||||
|
||||
searchParams.set("uri", pathNameWithoutLocale)
|
||||
searchParams.set("uri", pathNameWithoutLang)
|
||||
switch (contentType) {
|
||||
case "currentContentPage":
|
||||
return NextResponse.rewrite(
|
||||
new URL(
|
||||
`/${locale}/current-content-page?${searchParams.toString()}`,
|
||||
`/${lang}/current-content-page?${searchParams.toString()}`,
|
||||
nextUrl
|
||||
)
|
||||
)
|
||||
@@ -45,21 +45,19 @@ export async function publiceMiddleware(request: NextRequest) {
|
||||
|
||||
async function authedMiddlewareFunction(request: NextAuthRequest) {
|
||||
const { nextUrl } = request
|
||||
const locale = findLocale(nextUrl.pathname)!
|
||||
const lang = findLang(nextUrl.pathname)!
|
||||
const isLoggedIn = !!request.auth
|
||||
if (isLoggedIn) {
|
||||
/**
|
||||
* Temporary hard rewrite to my pages
|
||||
*/
|
||||
return NextResponse.rewrite(
|
||||
new URL(`/${locale}/${pageNames[locale]}`, nextUrl)
|
||||
)
|
||||
return NextResponse.rewrite(new URL(`/${lang}/${pageNames[lang]}`, nextUrl))
|
||||
} else {
|
||||
/**
|
||||
* Redirect to Loginpage
|
||||
* (Loginpage most likely to be removed)
|
||||
*/
|
||||
return NextResponse.redirect(new URL(`/${locale}/login`, nextUrl))
|
||||
return NextResponse.redirect(new URL(`/${lang}/login`, nextUrl))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,9 +66,8 @@ const authedMiddleware = auth(authedMiddlewareFunction)
|
||||
export async function middleware(request: NextRequest) {
|
||||
const { nextUrl } = request
|
||||
|
||||
const locale = findLocale(nextUrl.pathname)
|
||||
if (!locale) {
|
||||
//return <LocalePicker />
|
||||
const lang = findLang(nextUrl.pathname)
|
||||
if (!lang) {
|
||||
return Response.json("Not found!!!", { status: 404 })
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { pageNames } from "@/constants/myPages"
|
||||
|
||||
import type { Lang } from "@/types/lang"
|
||||
import type { Lang } from "@/constants/languages"
|
||||
|
||||
/* Authenticated routes */
|
||||
export const protectedRoutes: string[] = [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Lang } from "../lang"
|
||||
import type { Lang } from "@/constants/languages"
|
||||
|
||||
export type TrackingProps = {
|
||||
pageData: {
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
export const langEnum = {
|
||||
en: "en",
|
||||
sv: "sv",
|
||||
no: "no",
|
||||
fi: "fi",
|
||||
da: "da",
|
||||
de: "de",
|
||||
}
|
||||
|
||||
export type Lang = keyof typeof langEnum
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Lang } from "./lang"
|
||||
import { Lang } from "@/constants/languages"
|
||||
|
||||
export type SearchParams<S = {}> = {
|
||||
searchParams: S & { [key: string]: string }
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Edges } from "../utils/edges"
|
||||
import type { Lang } from "@/types/lang"
|
||||
import type { Lang } from "@/constants/languages"
|
||||
import type { Typename } from "../utils/typename"
|
||||
|
||||
export enum Section {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Lang } from "@/types/lang"
|
||||
import type { Lang } from "@/constants/languages"
|
||||
import type { EmbedEnum } from "./embeds"
|
||||
import type { Typename } from "./typename"
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { RTEItemTypeEnum } from "./enums"
|
||||
import type { EmbedTypesEnum, RTEItemType } from "./enums"
|
||||
import type { Lang } from "../lang"
|
||||
import type { Lang } from "@/constants/languages"
|
||||
|
||||
export interface Attributes {
|
||||
[key: string]: any
|
||||
|
||||
Reference in New Issue
Block a user