@astrolicious/i18n
Version:
Yet another i18n integration for Astro with server and client utilities, type safety and translations built-in.
2 lines • 2.37 kB
JavaScript
import{z as e}from"astro/zod";import{withLeadingSlash as c,withoutTrailingSlash as f}from"ufo";import{z as t}from"astro/zod";import{EnumChangefreq as l}from"sitemap";var i=t.object({customPages:t.array(t.string().url()).optional(),entryLimit:t.number().min(1).optional().default(45e3),changefreq:t.nativeEnum(l).optional(),lastmod:t.date().optional(),priority:t.number().min(0).max(1).optional()}),p=t.object({internal:t.object({i18n:t.object({defaultLocale:t.string(),locales:t.array(t.string())}),routes:t.array(t.object({locale:t.string(),params:t.array(t.string()),pattern:t.string(),injectedRoute:t.object({pattern:t.string(),entrypoint:t.string(),prerender:t.boolean().optional()})}))})}),g=i.and(p);var n=e.string().regex(/^[a-zA-Z0-9_/[\]-]+$/),m=e.literal(300).or(e.literal(301)).or(e.literal(302)).or(e.literal(303)).or(e.literal(304)).or(e.literal(307)).or(e.literal(308)),x=e.object({defaultLocale:e.string(),locales:e.array(e.string()),strategy:e.enum(["prefix","prefixExceptDefault"]).optional().default("prefixExceptDefault"),pages:e.record(n,e.record(e.string(),n.optional())).optional().default({}).transform(o=>Object.fromEntries(Object.entries(o).map(([a,r])=>[c(f(a)),r]))),localesDir:e.string().optional().default("./src/locales").refine(o=>o.startsWith("./")||o.startsWith("../"),{message:"Must be a relative path (ie. start with `./` or `../`)"}),defaultNamespace:e.string().optional().default("common"),client:e.literal(!1).or(e.object({translations:e.boolean().optional().default(!1),data:e.boolean().optional().default(!1),paths:e.boolean().optional().default(!1)})).optional().default(!1).transform(o=>typeof o=="boolean"?{data:o,translations:o,paths:o}:o),rootRedirect:e.object({status:m,destination:e.string()}).optional(),sitemap:e.union([e.boolean(),i]).optional().default(!1).transform(o=>o===!1?void 0:o===!0?{}:o)}).refine(({locales:o,defaultLocale:a})=>o.includes(a),{message:"`locales` must include the `defaultLocale`",path:["locales"]}).refine(({pages:o,locales:a})=>Object.values(o).every(r=>Object.keys(r).every(s=>a.includes(s))),{message:"`pages` locale keys must be included in `locales`",path:["pages"]}).refine(({strategy:o,rootRedirect:a})=>o==="prefix"?!0:a===void 0,{message:"`rootRedirect` should only be used with `strategy: 'prefix'`",path:["rootRedirect"]});export{x as optionsSchema};
//# sourceMappingURL=options.js.map