add language selection to the settings page
This commit is contained in:
parent
deb6ed7ec8
commit
f921ecaa96
|
@ -5,6 +5,7 @@ import removeFile from "@/lib/api/storage/removeFile";
|
||||||
import createFile from "@/lib/api/storage/createFile";
|
import createFile from "@/lib/api/storage/createFile";
|
||||||
import createFolder from "@/lib/api/storage/createFolder";
|
import createFolder from "@/lib/api/storage/createFolder";
|
||||||
import sendChangeEmailVerificationRequest from "@/lib/api/sendChangeEmailVerificationRequest";
|
import sendChangeEmailVerificationRequest from "@/lib/api/sendChangeEmailVerificationRequest";
|
||||||
|
import { i18n } from "next-i18next.config";
|
||||||
|
|
||||||
const emailEnabled =
|
const emailEnabled =
|
||||||
process.env.EMAIL_FROM && process.env.EMAIL_SERVER ? true : false;
|
process.env.EMAIL_FROM && process.env.EMAIL_SERVER ? true : false;
|
||||||
|
@ -204,6 +205,7 @@ export default async function updateUserById(
|
||||||
collectionOrder: data.collectionOrder.filter(
|
collectionOrder: data.collectionOrder.filter(
|
||||||
(value, index, self) => self.indexOf(value) === index
|
(value, index, self) => self.indexOf(value) === index
|
||||||
),
|
),
|
||||||
|
locale: i18n.locales.includes(data.locale) ? data.locale : "en",
|
||||||
archiveAsScreenshot: data.archiveAsScreenshot,
|
archiveAsScreenshot: data.archiveAsScreenshot,
|
||||||
archiveAsPDF: data.archiveAsPDF,
|
archiveAsPDF: data.archiveAsPDF,
|
||||||
archiveAsWaybackMachine: data.archiveAsWaybackMachine,
|
archiveAsWaybackMachine: data.archiveAsWaybackMachine,
|
||||||
|
|
|
@ -24,7 +24,7 @@ const getServerSideProps: GetServerSideProps = async (ctx) => {
|
||||||
if (user) {
|
if (user) {
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
...(await serverSideTranslations(user.locale, ["common"])),
|
...(await serverSideTranslations(user.locale ?? "en", ["common"])),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ import Checkbox from "@/components/Checkbox";
|
||||||
import { dropdownTriggerer } from "@/lib/client/utils";
|
import { dropdownTriggerer } from "@/lib/client/utils";
|
||||||
import EmailChangeVerificationModal from "@/components/ModalContent/EmailChangeVerificationModal";
|
import EmailChangeVerificationModal from "@/components/ModalContent/EmailChangeVerificationModal";
|
||||||
import Button from "@/components/ui/Button";
|
import Button from "@/components/ui/Button";
|
||||||
|
import { i18n } from "next-i18next.config";
|
||||||
|
|
||||||
const emailEnabled = process.env.NEXT_PUBLIC_EMAIL_PROVIDER;
|
const emailEnabled = process.env.NEXT_PUBLIC_EMAIL_PROVIDER;
|
||||||
|
|
||||||
|
@ -200,6 +201,28 @@ export default function Account() {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : undefined}
|
) : undefined}
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<p className="mb-2">Language</p>
|
||||||
|
<select
|
||||||
|
onChange={(e) => {
|
||||||
|
setUser({ ...user, locale: e.target.value });
|
||||||
|
}}
|
||||||
|
className="select border border-neutral-content focus:outline-none focus:border-primary duration-100 w-full bg-base-200 rounded-[0.375rem] min-h-0 h-[2.625rem] leading-4 p-2"
|
||||||
|
>
|
||||||
|
{i18n.locales.map((locale) => (
|
||||||
|
<option
|
||||||
|
key={locale}
|
||||||
|
value={locale}
|
||||||
|
selected={user.locale === locale}
|
||||||
|
>
|
||||||
|
{new Intl.DisplayNames(locale, { type: "language" }).of(
|
||||||
|
locale
|
||||||
|
) || ""}
|
||||||
|
</option>
|
||||||
|
))}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="sm:row-span-2 sm:justify-self-center my-3">
|
<div className="sm:row-span-2 sm:justify-self-center my-3">
|
||||||
|
|
Ŝarĝante…
Reference in New Issue