From 9aa709221972cbead76e26fefd79c090fa28fbc7 Mon Sep 17 00:00:00 2001 From: pixelass Date: Wed, 31 Jan 2024 15:12:01 +0100 Subject: [PATCH] feat: add example for next-i18next --- examples/with-next-i18next/README.md | 38 +++++++++ .../with-next-i18next/electron-builder.yml | 12 +++ examples/with-next-i18next/main/background.js | 46 +++++++++++ .../main/helpers/create-window.js | 78 ++++++++++++++++++ .../with-next-i18next/main/helpers/index.js | 3 + .../with-next-i18next/main/helpers/ipc.js | 6 ++ .../main/helpers/user-store.js | 3 + examples/with-next-i18next/main/preload.js | 20 +++++ .../with-next-i18next/next-i18next.config.js | 16 ++++ examples/with-next-i18next/package.json | 29 +++++++ .../renderer/components/LanguageSwitcher.jsx | 32 +++++++ .../renderer/lib/get-static.js | 32 +++++++ .../with-next-i18next/renderer/next.config.js | 7 ++ .../renderer/pages/[locale]/home.jsx | 56 +++++++++++++ .../renderer/pages/[locale]/next.jsx | 32 +++++++ .../with-next-i18next/renderer/pages/_app.jsx | 13 +++ .../renderer/pages/_document.jsx | 14 ++++ .../renderer/public/images/logo.png | Bin 0 -> 120101 bytes .../renderer/public/locales/de/common.json | 8 ++ .../renderer/public/locales/en/common.json | 8 ++ 20 files changed, 453 insertions(+) create mode 100644 examples/with-next-i18next/README.md create mode 100644 examples/with-next-i18next/electron-builder.yml create mode 100644 examples/with-next-i18next/main/background.js create mode 100644 examples/with-next-i18next/main/helpers/create-window.js create mode 100644 examples/with-next-i18next/main/helpers/index.js create mode 100644 examples/with-next-i18next/main/helpers/ipc.js create mode 100644 examples/with-next-i18next/main/helpers/user-store.js create mode 100644 examples/with-next-i18next/main/preload.js create mode 100644 examples/with-next-i18next/next-i18next.config.js create mode 100644 examples/with-next-i18next/package.json create mode 100644 examples/with-next-i18next/renderer/components/LanguageSwitcher.jsx create mode 100644 examples/with-next-i18next/renderer/lib/get-static.js create mode 100644 examples/with-next-i18next/renderer/next.config.js create mode 100644 examples/with-next-i18next/renderer/pages/[locale]/home.jsx create mode 100644 examples/with-next-i18next/renderer/pages/[locale]/next.jsx create mode 100644 examples/with-next-i18next/renderer/pages/_app.jsx create mode 100644 examples/with-next-i18next/renderer/pages/_document.jsx create mode 100644 examples/with-next-i18next/renderer/public/images/logo.png create mode 100644 examples/with-next-i18next/renderer/public/locales/de/common.json create mode 100644 examples/with-next-i18next/renderer/public/locales/en/common.json diff --git a/examples/with-next-i18next/README.md b/examples/with-next-i18next/README.md new file mode 100644 index 00000000..cf2b23a8 --- /dev/null +++ b/examples/with-next-i18next/README.md @@ -0,0 +1,38 @@ +

+ +## Usage + +### Create an App + +``` +# with npx +$ npx create-nextron-app my-app --example basic-lang-javascript + +# with yarn +$ yarn create nextron-app my-app --example basic-lang-javascript + +# with pnpm +$ pnpm dlx create-nextron-app my-app --example basic-lang-javascript +``` + +### Install Dependencies + +``` +$ cd my-app + +# using yarn or npm +$ yarn (or `npm install`) + +# using pnpm +$ pnpm install --shamefully-hoist +``` + +### Use it + +``` +# development mode +$ yarn dev (or `npm run dev` or `pnpm run dev`) + +# production build +$ yarn build (or `npm run build` or `pnpm run build`) +``` diff --git a/examples/with-next-i18next/electron-builder.yml b/examples/with-next-i18next/electron-builder.yml new file mode 100644 index 00000000..1b5a3bbe --- /dev/null +++ b/examples/with-next-i18next/electron-builder.yml @@ -0,0 +1,12 @@ +appId: com.example.nextron +productName: My Nextron App +copyright: Copyright © 2018 Yoshihide Shiono +directories: + output: dist + buildResources: resources +files: + - from: . + filter: + - package.json + - app +publish: null diff --git a/examples/with-next-i18next/main/background.js b/examples/with-next-i18next/main/background.js new file mode 100644 index 00000000..e3a71890 --- /dev/null +++ b/examples/with-next-i18next/main/background.js @@ -0,0 +1,46 @@ +import path from 'path' +import { app, ipcMain } from 'electron' +import serve from 'electron-serve' + +import i18next from "../next-i18next.config.js" +import { userStore } from "./helpers/user-store" +import { createWindow } from './helpers' + +const isProd = process.env.NODE_ENV === 'production' + +if (isProd) { + serve({ directory: 'app' }) +} else { + app.setPath('userData', `${app.getPath('userData')} (development)`) +} + +;(async () => { + await app.whenReady() + + const mainWindow = createWindow('main', { + width: 1000, + height: 600, + webPreferences: { + preload: path.join(__dirname, 'preload.js'), + }, + }) + + const locale = userStore.get("locale", i18next.i18n.defaultLocale) + console.log("Using locale:", locale) + + if (isProd) { + await mainWindow.loadURL(`app://./${locale}/home`) + } else { + const port = process.argv[2] + await mainWindow.loadURL(`http://localhost:${port}/${locale}/home`) + mainWindow.webContents.openDevTools() + } +})() + +app.on('window-all-closed', () => { + app.quit() +}) + +ipcMain.on('message', async (event, arg) => { + event.reply('message', `${arg} World!`) +}) diff --git a/examples/with-next-i18next/main/helpers/create-window.js b/examples/with-next-i18next/main/helpers/create-window.js new file mode 100644 index 00000000..84efadf1 --- /dev/null +++ b/examples/with-next-i18next/main/helpers/create-window.js @@ -0,0 +1,78 @@ +import { screen, BrowserWindow } from 'electron' +import Store from 'electron-store' + +export const createWindow = (windowName, options) => { + const key = 'window-state' + const name = `window-state-${windowName}` + const store = new Store({ name }) + const defaultSize = { + width: options.width, + height: options.height, + } + let state = {} + + const restore = () => store.get(key, defaultSize) + + const getCurrentPosition = () => { + const position = win.getPosition() + const size = win.getSize() + return { + x: position[0], + y: position[1], + width: size[0], + height: size[1], + } + } + + const windowWithinBounds = (windowState, bounds) => { + return ( + windowState.x >= bounds.x && + windowState.y >= bounds.y && + windowState.x + windowState.width <= bounds.x + bounds.width && + windowState.y + windowState.height <= bounds.y + bounds.height + ) + } + + const resetToDefaults = () => { + const bounds = screen.getPrimaryDisplay().bounds + return Object.assign({}, defaultSize, { + x: (bounds.width - defaultSize.width) / 2, + y: (bounds.height - defaultSize.height) / 2, + }) + } + + const ensureVisibleOnSomeDisplay = (windowState) => { + const visible = screen.getAllDisplays().some((display) => { + return windowWithinBounds(windowState, display.bounds) + }) + if (!visible) { + // Window is partially or fully not visible now. + // Reset it to safe defaults. + return resetToDefaults() + } + return windowState + } + + const saveState = () => { + if (!win.isMinimized() && !win.isMaximized()) { + Object.assign(state, getCurrentPosition()) + } + store.set(key, state) + } + + state = ensureVisibleOnSomeDisplay(restore()) + + const win = new BrowserWindow({ + ...state, + ...options, + webPreferences: { + nodeIntegration: false, + contextIsolation: true, + ...options.webPreferences, + }, + }) + + win.on('close', saveState) + + return win +} diff --git a/examples/with-next-i18next/main/helpers/index.js b/examples/with-next-i18next/main/helpers/index.js new file mode 100644 index 00000000..3cb1f9fc --- /dev/null +++ b/examples/with-next-i18next/main/helpers/index.js @@ -0,0 +1,3 @@ +import './ipc' + +export * from './create-window' diff --git a/examples/with-next-i18next/main/helpers/ipc.js b/examples/with-next-i18next/main/helpers/ipc.js new file mode 100644 index 00000000..df604527 --- /dev/null +++ b/examples/with-next-i18next/main/helpers/ipc.js @@ -0,0 +1,6 @@ +import { ipcMain } from "electron" +import { userStore } from "./user-store" + +ipcMain.handle("setLocale", (_event, locale) => { + userStore.set("locale", locale) +}) diff --git a/examples/with-next-i18next/main/helpers/user-store.js b/examples/with-next-i18next/main/helpers/user-store.js new file mode 100644 index 00000000..4e6eabe8 --- /dev/null +++ b/examples/with-next-i18next/main/helpers/user-store.js @@ -0,0 +1,3 @@ +import Store from "electron-store" + +export const userStore = new Store({name: "com.example.nextron"}) \ No newline at end of file diff --git a/examples/with-next-i18next/main/preload.js b/examples/with-next-i18next/main/preload.js new file mode 100644 index 00000000..8d88cf85 --- /dev/null +++ b/examples/with-next-i18next/main/preload.js @@ -0,0 +1,20 @@ +import { contextBridge, ipcRenderer } from 'electron' + +const handler = { + send(channel, value) { + ipcRenderer.send(channel, value) + }, + on(channel, callback) { + const subscription = (_event, ...args) => callback(...args) + ipcRenderer.on(channel, subscription) + + return () => { + ipcRenderer.removeListener(channel, subscription) + } + }, + setLocale(locale) { + ipcRenderer.invoke(`setLocale`, locale) + }, +} + +contextBridge.exposeInMainWorld('ipc', handler) diff --git a/examples/with-next-i18next/next-i18next.config.js b/examples/with-next-i18next/next-i18next.config.js new file mode 100644 index 00000000..e33f3146 --- /dev/null +++ b/examples/with-next-i18next/next-i18next.config.js @@ -0,0 +1,16 @@ +/** @type {import('next-i18next').UserConfig} */ +module.exports = { + i18n: { + defaultLocale: "en", + locales: [ + "de", + "en", + ], + }, + debug: process.env.NODE_ENV === "development", + reloadOnPrerender: process.env.NODE_ENV === "development", + localePath: + typeof window === "undefined" + ? require("path").resolve("./renderer/public/locales") + : "/locales", +} diff --git a/examples/with-next-i18next/package.json b/examples/with-next-i18next/package.json new file mode 100644 index 00000000..ab5ee5cc --- /dev/null +++ b/examples/with-next-i18next/package.json @@ -0,0 +1,29 @@ +{ + "private": true, + "name": "my-nextron-app", + "description": "My application description", + "version": "1.0.0", + "author": "Yoshihide Shiono ", + "contributors": [ + "Gregor Adams " + ], + "main": "app/background.js", + "scripts": { + "dev": "nextron", + "build": "nextron build", + "postinstall": "electron-builder install-app-deps" + }, + "dependencies": { + "electron-serve": "^1.3.0", + "electron-store": "^8.1.0" + }, + "devDependencies": { + "electron": "29.0.0-beta.4", + "electron-builder": "^24.9.1", + "next": "^13.5.6", + "next-i18next": "15.2.0", + "nextron": "^8.12.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } +} diff --git a/examples/with-next-i18next/renderer/components/LanguageSwitcher.jsx b/examples/with-next-i18next/renderer/components/LanguageSwitcher.jsx new file mode 100644 index 00000000..79b1bb7a --- /dev/null +++ b/examples/with-next-i18next/renderer/components/LanguageSwitcher.jsx @@ -0,0 +1,32 @@ +import Link from "next/link" +import React, {useEffect} from "react" +import {useTranslation} from "next-i18next"; +import {useRouter} from "next/router"; + +import i18next from "../../next-i18next.config" + +const localeNames = { + de: "Deutsch", + en: "English" +} +export default function LanguageSwitcher() { + const {i18n: {language: locale}} = useTranslation() + const {pathname} = useRouter() + + useEffect(() => { + window.ipc.setLocale(locale) + console.log("locale:", locale) + }, [locale]) + + return ( +
+ {i18next.i18n.locales.map(locale_ => { + return ( + + {localeNames[locale_]} + + ) + })} +
+ ) +} diff --git a/examples/with-next-i18next/renderer/lib/get-static.js b/examples/with-next-i18next/renderer/lib/get-static.js new file mode 100644 index 00000000..e918cf1a --- /dev/null +++ b/examples/with-next-i18next/renderer/lib/get-static.js @@ -0,0 +1,32 @@ +import {serverSideTranslations} from "next-i18next/serverSideTranslations" + +import i18next from "../../next-i18next.config.js" + +export function getI18nPaths() { + return ["en", "de"].map(locale => ({ + params: { + locale, + }, + })) +} + +export function getStaticPaths() { + return { + fallback: false, paths: getI18nPaths(), + } +} + +export async function getI18nProperties(context, namespaces = ["common"]) { + const locale = context?.params?.locale ?? i18next.i18n.defaultLocale; + return { + ...(await serverSideTranslations(locale, namespaces)), + } +} + +export function makeStaticProperties(namespaces = []) { + return async function (context) { + return { + props: await getI18nProperties(context, namespaces), + }; + }; +} diff --git a/examples/with-next-i18next/renderer/next.config.js b/examples/with-next-i18next/renderer/next.config.js new file mode 100644 index 00000000..df0fb64b --- /dev/null +++ b/examples/with-next-i18next/renderer/next.config.js @@ -0,0 +1,7 @@ +/** @type {import('next').NextConfig} */ +module.exports = { + trailingSlash: true, + images: { + unoptimized: true, + } +} diff --git a/examples/with-next-i18next/renderer/pages/[locale]/home.jsx b/examples/with-next-i18next/renderer/pages/[locale]/home.jsx new file mode 100644 index 00000000..7353e4f9 --- /dev/null +++ b/examples/with-next-i18next/renderer/pages/[locale]/home.jsx @@ -0,0 +1,56 @@ +import React from 'react' +import Head from 'next/head' +import Link from 'next/link' +import { useTranslation } from "next-i18next" + +import LanguageSwitcher from "../../components/LanguageSwitcher" +import { getStaticPaths, makeStaticProperties } from "../../lib/get-static"; + +export default function HomePage() { + const {i18n: {language: locale}, t} = useTranslation() + const [message, setMessage] = React.useState(t("noMessageFound")) + + React.useEffect(() => { + window.ipc.on('message', (message) => { + console.log(message) + setMessage(message) + }) + }, []) + + return ( + + + {`${t("common:home")} - Nextron (with nexti18next)`} + +
+

+ ⚡ Electron + Next.js ⚡ - + + {t("common:goToNext")} + +

+ Logo image +
+
+ +

{message}

+ +
+
+ ) +} + +export const getStaticProps = makeStaticProperties(["common"]); + +export {getStaticPaths}; diff --git a/examples/with-next-i18next/renderer/pages/[locale]/next.jsx b/examples/with-next-i18next/renderer/pages/[locale]/next.jsx new file mode 100644 index 00000000..7bb1c54d --- /dev/null +++ b/examples/with-next-i18next/renderer/pages/[locale]/next.jsx @@ -0,0 +1,32 @@ +import React from 'react' +import Head from 'next/head' +import Link from 'next/link' +import { useTranslation } from "next-i18next" + +import LanguageSwitcher from "../../components/LanguageSwitcher" +import { getStaticPaths, makeStaticProperties } from "../../lib/get-static" + +export default function NextPage() { + const {i18n: {language: locale}, t} = useTranslation() + + return ( + + + {`${t("next")} - Nextron (with nexti18next)`} + +
+

+ ⚡ Electron + Next.js ⚡ - + + {t("goToHome")} + +

+ +
+
+ ) +} + +export const getStaticProps = makeStaticProperties(["common"]); + +export { getStaticPaths }; \ No newline at end of file diff --git a/examples/with-next-i18next/renderer/pages/_app.jsx b/examples/with-next-i18next/renderer/pages/_app.jsx new file mode 100644 index 00000000..90a45f19 --- /dev/null +++ b/examples/with-next-i18next/renderer/pages/_app.jsx @@ -0,0 +1,13 @@ +import {appWithTranslation} from "next-i18next" + + +function App({Component, pageProps}) { + + return ( + <> + + + ) +} + +export default appWithTranslation(App) diff --git a/examples/with-next-i18next/renderer/pages/_document.jsx b/examples/with-next-i18next/renderer/pages/_document.jsx new file mode 100644 index 00000000..f3bbcc37 --- /dev/null +++ b/examples/with-next-i18next/renderer/pages/_document.jsx @@ -0,0 +1,14 @@ +import Document, { Head, Html, Main, NextScript } from "next/document" +import i18next from "../../next-i18next.config.js" + +export default class MyDocument extends Document { + render() { + return ( + + +
+ + + ); + } +} diff --git a/examples/with-next-i18next/renderer/public/images/logo.png b/examples/with-next-i18next/renderer/public/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..502f78c7acf7a759170b70e0cf117b407691a0c9 GIT binary patch literal 120101 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

AD=b*Ks(b$I5| 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 tl)_=5zM?EWSJ(kubKta;_L(