next-translate-plugin 2.0.0-canary.5 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  import type { NextConfig } from 'next';
2
- export default function nextTranslate(nextConfig?: NextConfig): NextConfig;
2
+ declare function nextTranslate(nextConfig?: NextConfig): NextConfig;
3
+ export default nextTranslate;
package/lib/cjs/index.js CHANGED
@@ -21,6 +21,15 @@ var __rest = (this && this.__rest) || function (s, e) {
21
21
  }
22
22
  return t;
23
23
  };
24
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
26
+ if (ar || !(i in from)) {
27
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
28
+ ar[i] = from[i];
29
+ }
30
+ }
31
+ return to.concat(ar || Array.prototype.slice.call(from));
32
+ };
24
33
  var __importDefault = (this && this.__importDefault) || function (mod) {
25
34
  return (mod && mod.__esModule) ? mod : { "default": mod };
26
35
  };
@@ -28,16 +37,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
28
37
  var fs_1 = __importDefault(require("fs"));
29
38
  var path_1 = __importDefault(require("path"));
30
39
  var utils_1 = require("./utils");
40
+ var test = /\.(tsx|ts|js|mjs|jsx)$/;
41
+ var appDirNext13 = ['app', 'src/app'];
42
+ var possiblePageDirs = __spreadArray([
43
+ 'pages',
44
+ 'src/pages',
45
+ 'app/pages',
46
+ 'integrations/pages'
47
+ ], appDirNext13, true);
31
48
  function nextTranslate(nextConfig) {
32
49
  if (nextConfig === void 0) { nextConfig = {}; }
33
- var test = /\.(tsx|ts|js|mjs|jsx)$/;
34
50
  var basePath = pkgDir();
35
- var possiblePageDirs = [
36
- 'pages',
37
- 'src/pages',
38
- 'app/pages',
39
- 'integrations/pages',
40
- ];
41
51
  var translationDir = path_1.default.resolve(path_1.default.relative(basePath, process.env.NEXT_TRANSLATE_PATH || '.'));
42
52
  var nextConfigI18n = nextConfig.i18n || {};
43
53
  var _a = require(path_1.default.join(translationDir, 'i18n')), _b = _a.locales, locales = _b === void 0 ? nextConfigI18n.locales || [] : _b, _c = _a.defaultLocale, defaultLocale = _c === void 0 ? nextConfigI18n.defaultLocale || 'en' : _c, _d = _a.domains, domains = _d === void 0 ? nextConfigI18n.domains : _d, _e = _a.localeDetection, localeDetection = _e === void 0 ? nextConfigI18n.localeDetection : _e, _f = _a.loader, loader = _f === void 0 ? true : _f, pagesInDir = _a.pagesInDir, restI18n = __rest(_a, ["locales", "defaultLocale", "domains", "localeDetection", "loader", "pagesInDir"]);
@@ -48,11 +58,13 @@ function nextTranslate(nextConfig) {
48
58
  localeDetection: localeDetection,
49
59
  } });
50
60
  var hasGetInitialPropsOnAppJs = false;
61
+ var isAppDirNext13 = false;
51
62
  if (!pagesInDir) {
52
63
  for (var _i = 0, possiblePageDirs_1 = possiblePageDirs; _i < possiblePageDirs_1.length; _i++) {
53
64
  var possiblePageDir = possiblePageDirs_1[_i];
54
65
  if (fs_1.default.existsSync(path_1.default.join(basePath, possiblePageDir))) {
55
66
  pagesInDir = possiblePageDir;
67
+ isAppDirNext13 = appDirNext13.includes(possiblePageDir);
56
68
  break;
57
69
  }
58
70
  }
@@ -95,13 +107,13 @@ function nextTranslate(nextConfig) {
95
107
  hasLoadLocaleFrom: typeof restI18n.loadLocaleFrom === 'function',
96
108
  extensionsRgx: restI18n.extensionsRgx || test,
97
109
  revalidate: restI18n.revalidate || 0,
110
+ isAppDirNext13: isAppDirNext13,
98
111
  },
99
112
  },
100
113
  });
101
114
  return config;
102
115
  } });
103
116
  }
104
- exports.default = nextTranslate;
105
117
  function pkgDir() {
106
118
  try {
107
119
  return require('pkg-dir').sync() || process.cwd();
@@ -110,3 +122,5 @@ function pkgDir() {
110
122
  return process.cwd();
111
123
  }
112
124
  }
125
+ module.exports = nextTranslate;
126
+ exports.default = nextTranslate;
package/lib/cjs/loader.js CHANGED
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var templateWithHoc_1 = __importDefault(require("./templateWithHoc"));
7
7
  var templateWithLoader_1 = __importDefault(require("./templateWithLoader"));
8
8
  var utils_1 = require("./utils");
9
+ var templateAppDir_1 = __importDefault(require("./templateAppDir"));
9
10
  function loader(rawCode) {
10
- var _a = this.getOptions(), basePath = _a.basePath, pagesPath = _a.pagesPath, hasAppJs = _a.hasAppJs, hasGetInitialPropsOnAppJs = _a.hasGetInitialPropsOnAppJs, hasLoadLocaleFrom = _a.hasLoadLocaleFrom, extensionsRgx = _a.extensionsRgx, revalidate = _a.revalidate;
11
+ var _a = this.getOptions(), basePath = _a.basePath, pagesPath = _a.pagesPath, hasAppJs = _a.hasAppJs, hasGetInitialPropsOnAppJs = _a.hasGetInitialPropsOnAppJs, hasLoadLocaleFrom = _a.hasLoadLocaleFrom, extensionsRgx = _a.extensionsRgx, revalidate = _a.revalidate, isAppDirNext13 = _a.isAppDirNext13;
11
12
  var normalizedPagesPath = pagesPath.replace(/\\/g, '/');
12
13
  var normalizedResourcePath = this.resourcePath.replace(/\\/g, '/');
13
14
  if (normalizedResourcePath.includes('node_modules/next/dist/pages/_app')) {
@@ -15,7 +16,7 @@ function loader(rawCode) {
15
16
  return rawCode;
16
17
  return (0, utils_1.getDefaultAppJs)(hasLoadLocaleFrom);
17
18
  }
18
- if (!normalizedResourcePath.startsWith(normalizedPagesPath))
19
+ if (!isAppDirNext13 && !normalizedResourcePath.startsWith(normalizedPagesPath))
19
20
  return rawCode;
20
21
  var page = normalizedResourcePath.replace(normalizedPagesPath, '/');
21
22
  var pageNoExt = page.replace(extensionsRgx, '');
@@ -23,6 +24,9 @@ function loader(rawCode) {
23
24
  var defaultExport = (0, utils_1.getDefaultExport)(pagePkg);
24
25
  if (!defaultExport)
25
26
  return rawCode;
27
+ if (isAppDirNext13) {
28
+ return (0, templateAppDir_1.default)(pagePkg, { hasLoadLocaleFrom: hasLoadLocaleFrom, pageNoExt: pageNoExt, normalizedResourcePath: normalizedResourcePath, normalizedPagesPath: normalizedPagesPath });
29
+ }
26
30
  if ((0, utils_1.hasExportName)(pagePkg, '__N_SSP') || (0, utils_1.hasExportName)(pagePkg, '__N_SSG')) {
27
31
  return rawCode;
28
32
  }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var utils_1 = require("./utils");
4
+ var clientLine = ['"use client"', "'use client'"];
5
+ var defaultDynamicExport = "export const dynamic = 'force-dynamic';";
6
+ function templateAppDir(pagePkg, _a) {
7
+ var _b = _a === void 0 ? {} : _a, _c = _b.hasLoadLocaleFrom, hasLoadLocaleFrom = _c === void 0 ? false : _c, _d = _b.pageNoExt, pageNoExt = _d === void 0 ? '/' : _d, _e = _b.normalizedResourcePath, normalizedResourcePath = _e === void 0 ? '' : _e, _f = _b.normalizedPagesPath, normalizedPagesPath = _f === void 0 ? '' : _f;
8
+ var code = pagePkg.getCode();
9
+ var isClientCode = clientLine.some(function (line) { return code.startsWith(line); });
10
+ var isPage = pageNoExt.endsWith('/page') && normalizedResourcePath.startsWith(normalizedPagesPath);
11
+ if (!isPage && !isClientCode)
12
+ return code;
13
+ var hash = Date.now().toString(16);
14
+ var pathname = pageNoExt.replace('/page', '/');
15
+ var pageVariableName = (0, utils_1.interceptExport)(pagePkg, 'default', "__Next_Translate__Page__".concat(hash, "__"));
16
+ var dynamicVariable = (0, utils_1.getNamedExport)(pagePkg, 'dynamic', false);
17
+ var dynamicExport = dynamicVariable ? '' : defaultDynamicExport;
18
+ if (!pageVariableName)
19
+ return code;
20
+ code = pagePkg.getCode();
21
+ if (isClientCode && !isPage)
22
+ return templateAppDirClientComponent({ code: code, hash: hash, pageVariableName: pageVariableName });
23
+ if (isClientCode && isPage)
24
+ return templateAppDirClientPage({ code: code, hash: hash, pageVariableName: pageVariableName, pathname: pathname, hasLoadLocaleFrom: hasLoadLocaleFrom });
25
+ return "\n import __i18nConfig from '@next-translate-root/i18n'\n import __loadNamespaces from 'next-translate/loadNamespaces'\n ".concat(code, "\n\n globalThis.i18nConfig = __i18nConfig\n\n ").concat(dynamicExport, "\n\n export default async function __Next_Translate_new__").concat(hash, "__(props) {\n let config = { \n ...__i18nConfig,\n locale: props.searchParams?.lang,\n loaderName: `${dynamic} (server page)`,\n pathname: '").concat(pathname, "',\n ").concat((0, utils_1.overwriteLoadLocales)(hasLoadLocaleFrom), "\n }\n \n if (!globalThis.__NEXT_TRANSLATE__) {\n globalThis.__NEXT_TRANSLATE__ = {}\n }\n \n const { __lang, __namespaces } = await __loadNamespaces(config)\n globalThis.__NEXT_TRANSLATE__ = { lang: __lang, namespaces: __namespaces, pathname: '").concat(pathname, "' }\n\n return (\n <>\n <div \n id=\"__NEXT_TRANSLATE_DATA__\" \n data-lang={__lang} \n data-ns={JSON.stringify(__namespaces)}\n data-pathname=\"").concat(pathname, "\"\n />\n <").concat(pageVariableName, " {...props} />\n </>\n )\n }\n");
26
+ }
27
+ exports.default = templateAppDir;
28
+ function templateAppDirClientComponent(_a) {
29
+ var code = _a.code, hash = _a.hash, pageVariableName = _a.pageVariableName;
30
+ var clientCode = code;
31
+ var topLine = clientLine[0];
32
+ clientLine.forEach(function (line) { clientCode = clientCode.replace(line, ''); });
33
+ return "".concat(topLine, "\n import __i18nConfig from '@next-translate-root/i18n'\n import * as __react from 'react'\n\n ").concat(clientCode, "\n\n export default function __Next_Translate_new__").concat(hash, "__(props) {\n const forceUpdate = __react.useReducer(() => [])[1]\n const isClient = typeof window !== 'undefined'\n\n if (isClient && !window.__NEXT_TRANSLATE__) {\n window.__NEXT_TRANSLATE__ = { lang: __i18nConfig.defaultLocale, namespaces: {} }\n update(false)\n }\n\n if (isClient && !window.i18nConfig) {\n window.i18nConfig = __i18nConfig\n }\n\n __react.useEffect(update)\n\n function update(rerender = true) {\n const el = document.getElementById('__NEXT_TRANSLATE_DATA__')\n\n if (!el) return\n\n const { lang, ns, pathname } = el.dataset\n const shouldRerender = lang !== window.__NEXT_TRANSLATE__.lang || pathname !== window.__NEXT_TRANSLATE__.pathname\n window.__NEXT_TRANSLATE__ = { lang, namespaces: JSON.parse(ns), pathname }\n if (shouldRerender && rerender) forceUpdate()\n }\n\n return <").concat(pageVariableName, " {...props} />\n }\n ");
34
+ }
35
+ function templateAppDirClientPage(_a) {
36
+ var code = _a.code, hash = _a.hash, pageVariableName = _a.pageVariableName, pathname = _a.pathname, hasLoadLocaleFrom = _a.hasLoadLocaleFrom;
37
+ var clientCode = code;
38
+ var topLine = clientLine[0];
39
+ clientLine.forEach(function (line) { clientCode = clientCode.replace(line, ''); });
40
+ return "".concat(topLine, "\n import __i18nConfig from '@next-translate-root/i18n'\n import __loadNamespaces, { log as __log } from 'next-translate/loadNamespaces'\n import { useSearchParams as __useSearchParams } from 'next/navigation'\n import * as __react from 'react'\n\n ").concat(clientCode, "\n\n export default function __Next_Translate_new__").concat(hash, "__(props) {\n const forceUpdate = __react.useReducer(() => [])[1]\n const lang = __useSearchParams().get('lang')\n const pathname = '").concat(pathname, "'\n const isServer = typeof window === 'undefined'\n const config = { \n ...__i18nConfig,\n locale: lang,\n loaderName: 'useEffect (client page)',\n pathname,\n ").concat((0, utils_1.overwriteLoadLocales)(hasLoadLocaleFrom), "\n }\n\n __react.useEffect(() => {\n const shouldLoad = lang !== window.__NEXT_TRANSLATE__?.lang || pathname !== window.__NEXT_TRANSLATE__?.pathname\n\n if (!shouldLoad) return\n\n __loadNamespaces(config).then(({ __lang, __namespaces }) => {\n window.__NEXT_TRANSLATE__ = { lang: __lang, namespaces: __namespaces, pathname: '").concat(pathname, "' }\n window.i18nConfig = __i18nConfig\n forceUpdate()\n })\n }, [lang])\n\n if (isServer) __log(config, { page: pathname, lang, namespaces: ['calculated in client-side'] })\n if (isServer || !window.__NEXT_TRANSLATE__) return null\n\n return <").concat(pageVariableName, " {...props} />\n }\n ");
41
+ }
package/lib/esm/index.js CHANGED
@@ -20,19 +20,29 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  }
21
21
  return t;
22
22
  };
23
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
24
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
25
+ if (ar || !(i in from)) {
26
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
27
+ ar[i] = from[i];
28
+ }
29
+ }
30
+ return to.concat(ar || Array.prototype.slice.call(from));
31
+ };
23
32
  import fs from 'fs';
24
33
  import path from 'path';
25
34
  import { parseFile, getDefaultExport, hasStaticName, hasHOC } from './utils';
26
- export default function nextTranslate(nextConfig) {
35
+ var test = /\.(tsx|ts|js|mjs|jsx)$/;
36
+ var appDirNext13 = ['app', 'src/app'];
37
+ var possiblePageDirs = __spreadArray([
38
+ 'pages',
39
+ 'src/pages',
40
+ 'app/pages',
41
+ 'integrations/pages'
42
+ ], appDirNext13, true);
43
+ function nextTranslate(nextConfig) {
27
44
  if (nextConfig === void 0) { nextConfig = {}; }
28
- var test = /\.(tsx|ts|js|mjs|jsx)$/;
29
45
  var basePath = pkgDir();
30
- var possiblePageDirs = [
31
- 'pages',
32
- 'src/pages',
33
- 'app/pages',
34
- 'integrations/pages',
35
- ];
36
46
  var translationDir = path.resolve(path.relative(basePath, process.env.NEXT_TRANSLATE_PATH || '.'));
37
47
  var nextConfigI18n = nextConfig.i18n || {};
38
48
  var _a = require(path.join(translationDir, 'i18n')), _b = _a.locales, locales = _b === void 0 ? nextConfigI18n.locales || [] : _b, _c = _a.defaultLocale, defaultLocale = _c === void 0 ? nextConfigI18n.defaultLocale || 'en' : _c, _d = _a.domains, domains = _d === void 0 ? nextConfigI18n.domains : _d, _e = _a.localeDetection, localeDetection = _e === void 0 ? nextConfigI18n.localeDetection : _e, _f = _a.loader, loader = _f === void 0 ? true : _f, pagesInDir = _a.pagesInDir, restI18n = __rest(_a, ["locales", "defaultLocale", "domains", "localeDetection", "loader", "pagesInDir"]);
@@ -43,11 +53,13 @@ export default function nextTranslate(nextConfig) {
43
53
  localeDetection: localeDetection,
44
54
  } });
45
55
  var hasGetInitialPropsOnAppJs = false;
56
+ var isAppDirNext13 = false;
46
57
  if (!pagesInDir) {
47
58
  for (var _i = 0, possiblePageDirs_1 = possiblePageDirs; _i < possiblePageDirs_1.length; _i++) {
48
59
  var possiblePageDir = possiblePageDirs_1[_i];
49
60
  if (fs.existsSync(path.join(basePath, possiblePageDir))) {
50
61
  pagesInDir = possiblePageDir;
62
+ isAppDirNext13 = appDirNext13.includes(possiblePageDir);
51
63
  break;
52
64
  }
53
65
  }
@@ -90,6 +102,7 @@ export default function nextTranslate(nextConfig) {
90
102
  hasLoadLocaleFrom: typeof restI18n.loadLocaleFrom === 'function',
91
103
  extensionsRgx: restI18n.extensionsRgx || test,
92
104
  revalidate: restI18n.revalidate || 0,
105
+ isAppDirNext13: isAppDirNext13,
93
106
  },
94
107
  },
95
108
  });
@@ -104,3 +117,5 @@ function pkgDir() {
104
117
  return process.cwd();
105
118
  }
106
119
  }
120
+ module.exports = nextTranslate;
121
+ export default nextTranslate;
package/lib/esm/loader.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import templateWithHoc from './templateWithHoc';
2
2
  import templateWithLoader from './templateWithLoader';
3
3
  import { parseFile, getDefaultAppJs, getDefaultExport, hasExportName, hasStaticName, isPageToIgnore, hasHOC, } from './utils';
4
+ import templateAppDir from './templateAppDir';
4
5
  export default function loader(rawCode) {
5
- var _a = this.getOptions(), basePath = _a.basePath, pagesPath = _a.pagesPath, hasAppJs = _a.hasAppJs, hasGetInitialPropsOnAppJs = _a.hasGetInitialPropsOnAppJs, hasLoadLocaleFrom = _a.hasLoadLocaleFrom, extensionsRgx = _a.extensionsRgx, revalidate = _a.revalidate;
6
+ var _a = this.getOptions(), basePath = _a.basePath, pagesPath = _a.pagesPath, hasAppJs = _a.hasAppJs, hasGetInitialPropsOnAppJs = _a.hasGetInitialPropsOnAppJs, hasLoadLocaleFrom = _a.hasLoadLocaleFrom, extensionsRgx = _a.extensionsRgx, revalidate = _a.revalidate, isAppDirNext13 = _a.isAppDirNext13;
6
7
  var normalizedPagesPath = pagesPath.replace(/\\/g, '/');
7
8
  var normalizedResourcePath = this.resourcePath.replace(/\\/g, '/');
8
9
  if (normalizedResourcePath.includes('node_modules/next/dist/pages/_app')) {
@@ -10,7 +11,7 @@ export default function loader(rawCode) {
10
11
  return rawCode;
11
12
  return getDefaultAppJs(hasLoadLocaleFrom);
12
13
  }
13
- if (!normalizedResourcePath.startsWith(normalizedPagesPath))
14
+ if (!isAppDirNext13 && !normalizedResourcePath.startsWith(normalizedPagesPath))
14
15
  return rawCode;
15
16
  var page = normalizedResourcePath.replace(normalizedPagesPath, '/');
16
17
  var pageNoExt = page.replace(extensionsRgx, '');
@@ -18,6 +19,9 @@ export default function loader(rawCode) {
18
19
  var defaultExport = getDefaultExport(pagePkg);
19
20
  if (!defaultExport)
20
21
  return rawCode;
22
+ if (isAppDirNext13) {
23
+ return templateAppDir(pagePkg, { hasLoadLocaleFrom: hasLoadLocaleFrom, pageNoExt: pageNoExt, normalizedResourcePath: normalizedResourcePath, normalizedPagesPath: normalizedPagesPath });
24
+ }
21
25
  if (hasExportName(pagePkg, '__N_SSP') || hasExportName(pagePkg, '__N_SSG')) {
22
26
  return rawCode;
23
27
  }
@@ -0,0 +1,38 @@
1
+ import { interceptExport, overwriteLoadLocales, getNamedExport } from "./utils";
2
+ var clientLine = ['"use client"', "'use client'"];
3
+ var defaultDynamicExport = "export const dynamic = 'force-dynamic';";
4
+ export default function templateAppDir(pagePkg, _a) {
5
+ var _b = _a === void 0 ? {} : _a, _c = _b.hasLoadLocaleFrom, hasLoadLocaleFrom = _c === void 0 ? false : _c, _d = _b.pageNoExt, pageNoExt = _d === void 0 ? '/' : _d, _e = _b.normalizedResourcePath, normalizedResourcePath = _e === void 0 ? '' : _e, _f = _b.normalizedPagesPath, normalizedPagesPath = _f === void 0 ? '' : _f;
6
+ var code = pagePkg.getCode();
7
+ var isClientCode = clientLine.some(function (line) { return code.startsWith(line); });
8
+ var isPage = pageNoExt.endsWith('/page') && normalizedResourcePath.startsWith(normalizedPagesPath);
9
+ if (!isPage && !isClientCode)
10
+ return code;
11
+ var hash = Date.now().toString(16);
12
+ var pathname = pageNoExt.replace('/page', '/');
13
+ var pageVariableName = interceptExport(pagePkg, 'default', "__Next_Translate__Page__".concat(hash, "__"));
14
+ var dynamicVariable = getNamedExport(pagePkg, 'dynamic', false);
15
+ var dynamicExport = dynamicVariable ? '' : defaultDynamicExport;
16
+ if (!pageVariableName)
17
+ return code;
18
+ code = pagePkg.getCode();
19
+ if (isClientCode && !isPage)
20
+ return templateAppDirClientComponent({ code: code, hash: hash, pageVariableName: pageVariableName });
21
+ if (isClientCode && isPage)
22
+ return templateAppDirClientPage({ code: code, hash: hash, pageVariableName: pageVariableName, pathname: pathname, hasLoadLocaleFrom: hasLoadLocaleFrom });
23
+ return "\n import __i18nConfig from '@next-translate-root/i18n'\n import __loadNamespaces from 'next-translate/loadNamespaces'\n ".concat(code, "\n\n globalThis.i18nConfig = __i18nConfig\n\n ").concat(dynamicExport, "\n\n export default async function __Next_Translate_new__").concat(hash, "__(props) {\n let config = { \n ...__i18nConfig,\n locale: props.searchParams?.lang,\n loaderName: `${dynamic} (server page)`,\n pathname: '").concat(pathname, "',\n ").concat(overwriteLoadLocales(hasLoadLocaleFrom), "\n }\n \n if (!globalThis.__NEXT_TRANSLATE__) {\n globalThis.__NEXT_TRANSLATE__ = {}\n }\n \n const { __lang, __namespaces } = await __loadNamespaces(config)\n globalThis.__NEXT_TRANSLATE__ = { lang: __lang, namespaces: __namespaces, pathname: '").concat(pathname, "' }\n\n return (\n <>\n <div \n id=\"__NEXT_TRANSLATE_DATA__\" \n data-lang={__lang} \n data-ns={JSON.stringify(__namespaces)}\n data-pathname=\"").concat(pathname, "\"\n />\n <").concat(pageVariableName, " {...props} />\n </>\n )\n }\n");
24
+ }
25
+ function templateAppDirClientComponent(_a) {
26
+ var code = _a.code, hash = _a.hash, pageVariableName = _a.pageVariableName;
27
+ var clientCode = code;
28
+ var topLine = clientLine[0];
29
+ clientLine.forEach(function (line) { clientCode = clientCode.replace(line, ''); });
30
+ return "".concat(topLine, "\n import __i18nConfig from '@next-translate-root/i18n'\n import * as __react from 'react'\n\n ").concat(clientCode, "\n\n export default function __Next_Translate_new__").concat(hash, "__(props) {\n const forceUpdate = __react.useReducer(() => [])[1]\n const isClient = typeof window !== 'undefined'\n\n if (isClient && !window.__NEXT_TRANSLATE__) {\n window.__NEXT_TRANSLATE__ = { lang: __i18nConfig.defaultLocale, namespaces: {} }\n update(false)\n }\n\n if (isClient && !window.i18nConfig) {\n window.i18nConfig = __i18nConfig\n }\n\n __react.useEffect(update)\n\n function update(rerender = true) {\n const el = document.getElementById('__NEXT_TRANSLATE_DATA__')\n\n if (!el) return\n\n const { lang, ns, pathname } = el.dataset\n const shouldRerender = lang !== window.__NEXT_TRANSLATE__.lang || pathname !== window.__NEXT_TRANSLATE__.pathname\n window.__NEXT_TRANSLATE__ = { lang, namespaces: JSON.parse(ns), pathname }\n if (shouldRerender && rerender) forceUpdate()\n }\n\n return <").concat(pageVariableName, " {...props} />\n }\n ");
31
+ }
32
+ function templateAppDirClientPage(_a) {
33
+ var code = _a.code, hash = _a.hash, pageVariableName = _a.pageVariableName, pathname = _a.pathname, hasLoadLocaleFrom = _a.hasLoadLocaleFrom;
34
+ var clientCode = code;
35
+ var topLine = clientLine[0];
36
+ clientLine.forEach(function (line) { clientCode = clientCode.replace(line, ''); });
37
+ return "".concat(topLine, "\n import __i18nConfig from '@next-translate-root/i18n'\n import __loadNamespaces, { log as __log } from 'next-translate/loadNamespaces'\n import { useSearchParams as __useSearchParams } from 'next/navigation'\n import * as __react from 'react'\n\n ").concat(clientCode, "\n\n export default function __Next_Translate_new__").concat(hash, "__(props) {\n const forceUpdate = __react.useReducer(() => [])[1]\n const lang = __useSearchParams().get('lang')\n const pathname = '").concat(pathname, "'\n const isServer = typeof window === 'undefined'\n const config = { \n ...__i18nConfig,\n locale: lang,\n loaderName: 'useEffect (client page)',\n pathname,\n ").concat(overwriteLoadLocales(hasLoadLocaleFrom), "\n }\n\n __react.useEffect(() => {\n const shouldLoad = lang !== window.__NEXT_TRANSLATE__?.lang || pathname !== window.__NEXT_TRANSLATE__?.pathname\n\n if (!shouldLoad) return\n\n __loadNamespaces(config).then(({ __lang, __namespaces }) => {\n window.__NEXT_TRANSLATE__ = { lang: __lang, namespaces: __namespaces, pathname: '").concat(pathname, "' }\n window.i18nConfig = __i18nConfig\n forceUpdate()\n })\n }, [lang])\n\n if (isServer) __log(config, { page: pathname, lang, namespaces: ['calculated in client-side'] })\n if (isServer || !window.__NEXT_TRANSLATE__) return null\n\n return <").concat(pageVariableName, " {...props} />\n }\n ");
38
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-translate-plugin",
3
- "version": "2.0.0-canary.5",
3
+ "version": "2.0.0",
4
4
  "description": "Tiny and powerful i18n plugin to translate your Next.js pages.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -20,7 +20,7 @@
20
20
  ],
21
21
  "repository": {
22
22
  "type": "git",
23
- "url": "https://github.com/aralroca/next-translate.git"
23
+ "url": "https://github.com/aralroca/next-translate-plugin.git"
24
24
  },
25
25
  "author": {
26
26
  "name": "Aral Roca Gòmez",
@@ -74,7 +74,7 @@
74
74
  "prettier": "2.8.3",
75
75
  "pretty-quick": "3.1.3",
76
76
  "react": "18.2.0",
77
- "react-dom": "^18.2.0",
77
+ "react-dom": "18.2.0",
78
78
  "supertest": "6.3.3"
79
79
  },
80
80
  "peerDependencies": {
@@ -0,0 +1,7 @@
1
+ import { ParsedFilePkg } from "./types";
2
+ export default function templateAppDir(pagePkg: ParsedFilePkg, { hasLoadLocaleFrom, pageNoExt, normalizedResourcePath, normalizedPagesPath }?: {
3
+ hasLoadLocaleFrom?: boolean | undefined;
4
+ pageNoExt?: string | undefined;
5
+ normalizedResourcePath?: string | undefined;
6
+ normalizedPagesPath?: string | undefined;
7
+ }): string;
package/types.d.ts CHANGED
@@ -7,6 +7,7 @@ export interface LoaderOptions {
7
7
  hasLoadLocaleFrom: boolean;
8
8
  extensionsRgx: RegExp;
9
9
  revalidate: number;
10
+ isAppDirNext13: boolean;
10
11
  }
11
12
  export declare type Transformer = (rootNode: ts.SourceFile, context: ts.TransformationContext) => ts.SourceFile;
12
13
  export interface ParsedFilePkg {