///
// ###> astro-i18n/type-generation ###
type PrimaryLocale = "en";
type SecondaryLocale = "";
type Locale = PrimaryLocale | SecondaryLocale;
type RouteParameters = {
"/games": undefined;
"/": undefined;
"/settings": undefined;
"/404": undefined;
};
type Route = keyof RouteParameters;
type TranslationVariables = {
"nav.brand": object | undefined;
"nav.games": object | undefined;
"nav.settings": object | undefined;
};
type Translation = keyof TranslationVariables;
type Environment = "none" | "node" | "browser";
declare module "astro-i18n" {
type GetStaticPathsProps = { paginate: Function; rss: Function };
type GetStaticPathsItem = {
params: Record;
props?: Record;
};
type DeepStringRecord = { [key: string]: string | DeepStringRecord };
type TranslationDirectory = { i18n?: string; pages?: string };
export type Translations = {
[group: string]: { [locale: string]: DeepStringRecord };
};
export type TranslationFormatters = {
[formatterName: string]: (value: unknown, ...args: unknown[]) => unknown;
};
export type TranslationLoadingRules = {
groups: string[];
routes: string[];
}[];
export type SegmentTranslations = {
[secondaryLocale: string]: { [segment: string]: string };
};
export interface AstroI18nConfig {
primaryLocale: string;
secondaryLocales: string[];
fallbackLocale: string;
showPrimaryLocale: boolean;
trailingSlash: "always" | "never";
run: "server" | "client+server";
translations: Translations;
translationLoadingRules: TranslationLoadingRules;
translationDirectory: TranslationDirectory;
routes: SegmentTranslations;
srcDir: string;
}
/** Typed astro-i18n config definition. */
export function defineAstroI18nConfig(config: Partial): Partial;
/** The `astro-i18n` middleware. */
export function useAstroI18n(config?: Partial | string, formatters?: TranslationFormatters): (...args: any[]) => any;
/** Workaround function to make astroI18n work inside getStaticPaths. This is because Astro's getStaticPaths runs before everything which doesn't allows astroI18n to update its state automatically. */
function createGetStaticPaths(callback: (props: GetStaticPathsProps) => GetStaticPathsItem[] | Promise): (
props: GetStaticPathsProps & {
astroI18n?: {
locale: string;
};
}
) => Promise;
/**
* @param key The translation key, for example `"my.nested.translation.key"`.
* @param properties An object containing your interpolation variables and/or your variants, for example `{ variant: 3, interpolation: "text" }`.
* @param options `route`: Overrides the current route, you will be able to access that route's translations. `locale`: Overrides the current locale, this allows you to control which language you want to translate to. `fallbackLocale`: Overrides the fallback locale.
*/
export function t(
key: T | (string & {}),
...args: undefined extends TranslationVariables[T]
? [
properties?: keyof TranslationVariables extends T ? Record : TranslationVariables[T],
options?: {
route?: Route | (string & {});
locale?: Locale | (string & {});
fallbackLocale?: Locale | (string & {});
},
]
: [
properties: TranslationVariables[T],
options?: {
route?: Route | (string & {});
locale?: Locale | (string & {});
fallbackLocale?: Locale | (string & {});
},
]
): string;
/**
* @param route A route in any of the configured languages, for example `"/en/my/english/route/[param]"`.
* @param parameters An object containing your route parameters, for example `{ slug: "my-blog-post-slug" }`.
* @param options `targetLocale`: Overrides the target locale. `routeLocale`: Overrides the given route locale, this is useful if astro-i18n cannot figure out the route's locale. `showPrimaryLocale`: Overrides the showPrimaryLocale parameter. `query`: Adds these query parameters at the end of the translated route.
*/
export function l(
route: T | (string & {}),
...args: T extends keyof RouteParameters
? undefined extends RouteParameters[T]
? [
parameters?: Record,
options?: {
targetLocale?: string;
routeLocale?: string;
showPrimaryLocale?: string;
query?: Record;
},
]
: [
parameters: RouteParameters[T],
options?: {
targetLocale?: string;
routeLocale?: string;
showPrimaryLocale?: string;
query?: Record;
},
]
: [
parameters?: Record,
options?: {
targetLocale?: string;
routeLocale?: string;
showPrimaryLocale?: string;
query?: Record;
},
]
): string;
class AstroI18n {
/** The detected runtime environment. */
environment: Environment;
/** The current page route. */
route: string;
/** All page routes. For example: `["/", "/about", "/posts/[slug]"]` */
pages: string[];
/** The equivalent page for the current route. For example if route is equal to `"/posts/my-cool-cat"` this could return `"/posts/[slug]"`. */
page: string;
/** The current page locale. */
locale: Locale;
/** All configured locales. */
locales: Locale[];
/** The default/primary locale. */
primaryLocale: PrimaryLocale;
/** Locales other than the default/primary one. */
secondaryLocales: SecondaryLocale[];
/** The fallback locale, when a translation is missing in a locale the fallback locale will be used to find a replacement. */
fallbackLocale: Locale;
/** True when astro-i18n is initialized. */
isInitialized: boolean;
/**
* @param key The translation key, for example `"my.nested.translation.key"`.
* @param properties An object containing your interpolation variables and/or your variants, for example `{ variant: 3, interpolation: "text" }`.
* @param options `route`: Overrides the current route, you will be able to access that route's translations. `locale`: Overrides the current locale, this allows you to control which language you want to translate to. `fallbackLocale`: Overrides the fallback locale.
*/
t(
key: T | (string & {}),
...args: undefined extends TranslationVariables[T]
? [
properties?: keyof TranslationVariables extends T ? Record : TranslationVariables[T],
options?: {
route?: Route | (string & {});
locale?: Locale | (string & {});
fallbackLocale?: Locale | (string & {});
},
]
: [
properties: TranslationVariables[T],
options?: {
route?: Route | (string & {});
locale?: Locale | (string & {});
fallbackLocale?: Locale | (string & {});
},
]
): string;
/**
* @param route A route in any of the configured languages, for example `"/en/my/english/route/[param]"`.
* @param parameters An object containing your route parameters, for example `{ slug: "my-blog-post-slug" }`.
* @param options `targetLocale`: Overrides the target locale. `routeLocale`: Overrides the given route locale, this is useful if astro-i18n cannot figure out the route's locale. `showPrimaryLocale`: Overrides the showPrimaryLocale parameter. `query`: Adds these query parameters at the end of the translated route.
*/
l(
route: T | (string & {}),
...args: T extends keyof RouteParameters
? undefined extends RouteParameters[T]
? [
parameters?: Record,
options?: {
targetLocale?: string;
routeLocale?: string;
showPrimaryLocale?: string;
query?: Record;
},
]
: [
parameters: RouteParameters[T],
options?: {
targetLocale?: string;
routeLocale?: string;
showPrimaryLocale?: string;
query?: Record;
},
]
: [
parameters?: Record,
options?: {
targetLocale?: string;
routeLocale?: string;
showPrimaryLocale?: string;
query?: Record;
},
]
): string;
/** Adds new translations at runtime. */
addTranslations(translations: Translations): this;
/** Adds new translation formatters at runtime. */
addFormatters(translationFormatters: TranslationFormatters): this;
/** Adds new translation loading rules at runtime. */
addTranslationLoadingRules(translationLoadingRules: TranslationLoadingRules): this;
/** Adds new route segment translations at runtime. */
addRoutes(routes: SegmentTranslations): this;
/** Tries to parse one of the configured locales out of the given route. If no configured locale is found it will return `null`. */
extractRouteLocale(route: string): string | null;
/** Initializes astro-i18n on the server-side. */
initialize(config?: Partial | string, formatters?: TranslationFormatters = {}): Promise;
/** Redirects the user to the given destination. */
redirect(destination: string | URL, status = 301);
}
export const astroI18n: AstroI18n;
}
// ###< astro-i18n/type-generation ###