mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 11:39:50 +02:00
api strings
This commit is contained in:
1 parent
99317c2075
commit
5f24887535
23 files changed
+132
-118
No files matched your search
@@ -1,4 +1,6 @@
|
||||
import { useProtagonist } from "../../hooks/useProtagonist";
|
||||
import { useStrings } from "../../hooks/useStrings";
|
||||
import { Tankopedia } from "../../stores/tankopedia";
|
||||
import { hasUpgrades } from "../../tankopedia/hasUpgrades";
|
||||
import type { ComputedCharacteristics } from "../../types/characteristics";
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
import { STRINGS } from "@blitzkit/i18n";
|
||||
|
||||
export function getStrings(locale: string) {
|
||||
if (locale in STRINGS) return STRINGS[locale];
|
||||
throw new Error(`Unsupported locale: ${locale}`);
|
||||
}
|
||||
@@ -1,11 +1,8 @@
|
||||
import { unwrapper } from "@blitzkit/i18n";
|
||||
import locales from "@blitzkit/i18n/locales.json";
|
||||
import { createContext, useContext, type ReactNode } from "react";
|
||||
import { getStrings } from "../core/i18n/getStrings";
|
||||
|
||||
const LocaleContext = createContext<{
|
||||
locale: string;
|
||||
localeRaw: string | undefined;
|
||||
} | null>(null);
|
||||
|
||||
interface LocaleProviderProps extends LocaleAcceptorProps {
|
||||
@@ -14,9 +11,7 @@ interface LocaleProviderProps extends LocaleAcceptorProps {
|
||||
|
||||
export function LocaleProvider({ locale, children }: LocaleProviderProps) {
|
||||
return (
|
||||
<LocaleContext.Provider
|
||||
value={{ locale: locale ?? locales.default, localeRaw: locale }}
|
||||
>
|
||||
<LocaleContext.Provider value={{ locale: locale ?? locales.default }}>
|
||||
{children}
|
||||
</LocaleContext.Provider>
|
||||
);
|
||||
@@ -29,12 +24,9 @@ export function useLocale() {
|
||||
throw new Error("useLocale must be used within a LocaleProvider");
|
||||
}
|
||||
|
||||
const strings = getStrings(context.locale);
|
||||
const unwrap = unwrapper(context.locale);
|
||||
|
||||
return { locale: context.locale, strings, unwrap };
|
||||
return context.locale;
|
||||
}
|
||||
|
||||
export interface LocaleAcceptorProps {
|
||||
locale: string | undefined;
|
||||
locale: string;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import { api } from "../blitzkit/api";
|
||||
import { useAwait } from "./useAwait";
|
||||
import { useLocale } from "./useLocale";
|
||||
|
||||
export function useStrings() {
|
||||
const locale = useLocale();
|
||||
const strings = useAwait(() => api.strings(locale), `strings-${locale}`);
|
||||
return strings;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import locales from "@blitzkit/i18n/locales.json";
|
||||
import type { APIContext } from "astro";
|
||||
import { mixStaticPaths } from "../../../astro/mixStaticPaths";
|
||||
import { api } from "../../../blitzkit/api";
|
||||
import { getStaticPaths as _getStaticPaths } from "../_index";
|
||||
|
||||
export const getStaticPaths = mixStaticPaths(_getStaticPaths, () => {
|
||||
return locales.supported.map(({ locale }) => ({ params: { locale } }));
|
||||
});
|
||||
|
||||
export async function GET({ params }: APIContext<never, { locale: string }>) {
|
||||
const strings = await api.strings(params.locale);
|
||||
return Response.json(strings);
|
||||
}
|
||||
Reference in new issue
Block a user