Fixed support for multi-langual slugs
This commit is contained in:
Vendored
+19
-13
@@ -8,14 +8,22 @@ import type { I18nConfig } from './types.js';
|
||||
*/
|
||||
export type LocalizedSlugs = Record<string, string>;
|
||||
type BuildPathArgs = {
|
||||
config: I18nConfig;
|
||||
/**
|
||||
* Slug that represents the site root (served at /{locale} with no trailing
|
||||
* segment). Defaults to 'home'. Matched against the slug in the target locale.
|
||||
*/
|
||||
homeSlug?: string;
|
||||
/** slug per locale, e.g. { pl: 'strona-glowna', en: 'home' } */
|
||||
slugs: LocalizedSlugs;
|
||||
/** Target locale to build the path for */
|
||||
locale: string;
|
||||
config: I18nConfig;
|
||||
/**
|
||||
* Slug(s) representing the site root (served at /{locale} with no trailing
|
||||
* segment). Defaults to 'home'. Matched against the slug in the target locale.
|
||||
*
|
||||
* Can be a single string (same home slug in every locale) OR a per-locale map
|
||||
* (`{ pl: 'strona-glowna', de: 'startseite', en: 'home' }`). The map form is
|
||||
* REQUIRED for multilingual homepages whose slug differs per language —
|
||||
* otherwise the home page collapses to '/pl' but '/de/startseite' stays
|
||||
* un-collapsed, breaking hreflang return tags (a real GSC error).
|
||||
*/
|
||||
homeSlug?: string | Record<string, string>;
|
||||
/**
|
||||
* Localized segment the document lives under, e.g.
|
||||
* `{ pl: 'artykuly', en: 'articles' }` → /pl/artykuly/moj-post.
|
||||
@@ -25,8 +33,6 @@ type BuildPathArgs = {
|
||||
* A document under a prefix is never the home page, so homeSlug is ignored.
|
||||
*/
|
||||
prefix?: LocalizedSlugs;
|
||||
/** slug per locale, e.g. { pl: 'strona-glowna', en: 'home' } */
|
||||
slugs: LocalizedSlugs;
|
||||
};
|
||||
/**
|
||||
* Builds a locale-prefixed path for a document in a target locale.
|
||||
@@ -50,13 +56,13 @@ type BuildPathArgs = {
|
||||
* })
|
||||
* // → '/en/articles/my-post'
|
||||
*/
|
||||
export declare function buildLocalizedPath({ config, homeSlug, locale, prefix, slugs, }: BuildPathArgs): string | undefined;
|
||||
export declare function buildLocalizedPath({ slugs, locale, config, homeSlug, prefix, }: BuildPathArgs): string | undefined;
|
||||
type SwitchLocaleArgs = {
|
||||
config: I18nConfig;
|
||||
homeSlug?: string;
|
||||
prefix?: LocalizedSlugs;
|
||||
slugs: LocalizedSlugs;
|
||||
targetLocale: string;
|
||||
config: I18nConfig;
|
||||
homeSlug?: string | Record<string, string>;
|
||||
prefix?: LocalizedSlugs;
|
||||
};
|
||||
/**
|
||||
* Resolves the equivalent path for the same document in a different locale —
|
||||
@@ -66,5 +72,5 @@ type SwitchLocaleArgs = {
|
||||
* falls back to the archive it belongs to (/en/articles) if there is one, and
|
||||
* to the locale root otherwise — the closest place the visitor would want.
|
||||
*/
|
||||
export declare function switchLocalePath({ config, homeSlug, prefix, slugs, targetLocale, }: SwitchLocaleArgs): string;
|
||||
export declare function switchLocalePath({ slugs, targetLocale, config, homeSlug, prefix, }: SwitchLocaleArgs): string;
|
||||
export {};
|
||||
|
||||
Reference in New Issue
Block a user