UNPKG

next-intl

Version:

Internationalization (i18n) for Next.js

2 lines (1 loc) 3.73 kB
import e from"fs";import t from"path";import{getFormatExtension as r}from"../extractor/format/index.js";import s from"../extractor/source/SourceFileFilter.js";import{isNextJs16OrHigher as n,hasStableTurboConfig as o}from"./nextFlags.js";import{throwError as a}from"./utils.js";function i(e){return[`${e}.ts`,`${e}.tsx`,`${e}.js`,`${e}.jsx`]}function l(r,s){function n(r){return e.existsSync(function(e){const r=[];return s&&r.push(s),r.push(e),t.resolve(...r)}(r))}if(r)return n(r)||a(`Could not find i18n config at ${r}, please provide a valid path.`),r;for(const e of[...i("./i18n/request"),...i("./src/i18n/request")])if(n(e))return e;a("Could not locate request configuration module.\n\nThis path is supported by default: ./(src/)i18n/request.{js,jsx,ts,tsx}\n\nAlternatively, you can specify a custom location in your Next.js config:\n\nconst withNextIntl = createNextIntlPlugin(\n\nAlternatively, you can specify a custom location in your Next.js config:\n\nconst withNextIntl = createNextIntlPlugin(\n './path/to/i18n/request.tsx'\n);")}function u(e,i){const u={};function c(){const t=e.experimental;return t.srcPath&&e.experimental?.messages||a("`srcPath` and `messages` are required when using `extractor`."),{loader:"next-intl/extractor/extractionLoader",options:{srcPath:t.srcPath,sourceLocale:t.extract.sourceLocale,messages:e.experimental.messages}}}function p(){return{loader:"next-intl/extractor/catalogLoader",options:{messages:e.experimental.messages}}}function m(){return i?.turbopack?.rules||i?.experimental?.turbo?.rules||{}}function x(e,t,r){e[t]?Array.isArray(e[t])?e[t].push(r):e[t]=[e[t],r]:e[t]=r}if(null!=process.env.TURBOPACK){e.requestConfig&&t.isAbsolute(e.requestConfig)&&a("Turbopack support for next-intl currently does not support absolute paths, please provide a relative one (e.g. './src/i18n/config.ts').\n\nFound: "+e.requestConfig);const f={"next-intl/config":l(e.requestConfig)};let g;if(e.experimental?.extract){n()||a("Message extraction requires Next.js 16 or higher."),g??=m();const t=(Array.isArray(e.experimental.srcPath)?e.experimental.srcPath:[e.experimental.srcPath]).map((e=>e.endsWith("/")?e.slice(0,-1):e));x(g,`*.{${s.EXTENSIONS.join(",")}}`,{loaders:[c()],condition:{path:`{${t.join(",")}}/**/*`,content:/(useExtracted|getExtracted)/}})}if(e.experimental?.messages){n()||a("Message catalog loading requires Next.js 16 or higher."),g??=m();x(g,`*${r(e.experimental.messages.format)}`,{loaders:[p()],condition:{path:`${e.experimental.messages.path}/**/*`},as:"*.js"})}o()&&!i?.experimental?.turbo?u.turbopack={...i?.turbopack,...g&&{rules:g},resolveAlias:{...i?.turbopack?.resolveAlias,...f}}:u.experimental={...i?.experimental,turbo:{...i?.experimental?.turbo,...g&&{rules:g},resolveAlias:{...i?.experimental?.turbo?.resolveAlias,...f}}}}else u.webpack=function(n,o){if(n.resolve||(n.resolve={}),n.resolve.alias||(n.resolve.alias={}),n.resolve.alias["next-intl/config"]=t.resolve(n.context,l(e.requestConfig,n.context)),e.experimental?.extract){n.module||(n.module={}),n.module.rules||(n.module.rules=[]);const r=e.experimental.srcPath;n.module.rules.push({test:new RegExp(`\\.(${s.EXTENSIONS.join("|")})$`),include:Array.isArray(r)?r.map((e=>t.resolve(n.context,e))):t.resolve(n.context,r||""),use:[c()]})}if(e.experimental?.messages){n.module||(n.module={}),n.module.rules||(n.module.rules=[]);const s=r(e.experimental.messages.format);n.module.rules.push({test:new RegExp(`${s.replace(/\./g,"\\.")}$`),include:t.resolve(n.context,e.experimental.messages.path),use:[p()],type:"javascript/auto"})}return"function"==typeof i?.webpack?i.webpack(n,o):n};return i?.trailingSlash&&(u.env={...i.env,_next_intl_trailing_slash:"true"}),Object.assign({},i,u)}export{u as default};