Fork of Azq2/js-lingui-solid
  • TypeScript 97.9%
  • JavaScript 2.1%
Find a file
2025-08-25 12:34:39 +02:00
packages chore: attempt to apply fix (PR#2203 on lingui/js-lingui) 2025-08-25 12:34:39 +02:00
scripts/jest Initial commit 2025-01-19 23:17:41 +03:00
.eslintignore Initial commit 2025-01-19 23:17:41 +03:00
.eslintrc Initial commit 2025-01-19 23:17:41 +03:00
.gitignore Initial commit 2025-01-19 23:17:41 +03:00
.prettierignore Initial commit 2025-01-19 23:17:41 +03:00
.prettierrc.json Initial commit 2025-01-19 23:17:41 +03:00
.yarnrc.yml Initial commit 2025-01-19 23:17:41 +03:00
babel.config.js Initial commit 2025-01-19 23:17:41 +03:00
jest.config.integration.js Initial commit 2025-01-19 23:17:41 +03:00
jest.config.js Initial commit 2025-01-19 23:17:41 +03:00
jest.config.types.js Initial commit 2025-01-19 23:17:41 +03:00
LICENSE restore license 2025-01-20 02:04:07 +03:00
package.json Initial commit 2025-01-19 23:17:41 +03:00
README.md fix: babel-plugin-lingui-extract-messages -> babel-plugin-extract-messages 2025-01-20 01:48:59 +03:00
tsconfig.json Initial commit 2025-01-19 23:17:41 +03:00
yarn.lock fix: add @lingui/core to peerDependencies for solid 2025-01-20 04:41:46 +03:00

NPM Version

NPM Version

NPM Version

NPM Version

Summary

This is fork of the LinguiJS with SolidJS support.

More details in PR: https://github.com/lingui/js-lingui/pull/2101

Install

  1. Install required packages
npm install @lingui-solid/solid
npm install --save-dev vite-plugin-babel-macros
npm install --save-dev @lingui/cli@5 @lingui/conf@5 @lingui/core@5 @lingui/macro@5
npm install --save-dev @lingui-solid/vite-plugin @lingui-solid/babel-plugin-lingui-macro @lingui-solid/babel-plugin-extract-messages

yarn add @lingui-solid/solid
yarn add -D vite-plugin-babel-macros
yarn add -D @lingui/cli@5 @lingui/conf@5 @lingui/core@5 @lingui/macro@5
yarn add -D @lingui-solid/vite-plugin @lingui-solid/babel-plugin-lingui-macro @lingui-solid/babel-plugin-extract-messages

pnpm add @lingui-solid/solid
pnpm add -D vite-plugin-babel-macros
pnpm add -D @lingui/cli@5 @lingui/conf@5 @lingui/core@5 @lingui/macro@5
pnpm add -D @lingui-solid/vite-plugin @lingui-solid/babel-plugin-lingui-macro @lingui-solid/babel-plugin-extract-messages
  1. Modify lingui.config.ts
import { LinguiConfig } from '@lingui/conf';
import extractor from '@lingui-solid/babel-plugin-extract-messages/extractor';

const config: LinguiConfig = {
  // .....
  // This is required!
  runtimeConfigModule: {
    Trans: ["@lingui-solid/solid", "Trans"],
    useLingui: ["@lingui-solid/solid", "useLingui"],
    extractors: [extractor]
  }
};
export default config;
  1. Modify vite.config.ts
import { defineConfig } from 'vite';
import solidPlugin from 'vite-plugin-solid';
import babelMacrosPlugin from 'vite-plugin-babel-macros';
import { lingui as linguiSolidPlugin } from '@lingui-solid/vite-plugin';

export default defineConfig({
  // .....
  plugins: [
    babelMacrosPlugin(), // this is required
    linguiSolidPlugin(), // this is required
    solidPlugin(),
    // ....
   ],
  // ....
});

Usage

In general, usage is same with @lingui/react.

Main component:

import { I18nProvider } from "@lingui-solid/solid";
import { i18n } from "@lingui/core";
import { messages as messagesEn } from "./locales/en/messages.js";

i18n.load({
  en: messagesEn,
});
i18n.activate("en");

const App = () => {
  return (
    <I18nProvider i18n={i18n}>
      // rest of the app
    </I18nProvider>
  );
};

Each other components:

import { createEffect } from "solid-js";
import { useLingui, Trans } from "@lingui-solid/solid/macro";

const CurrentLocale = () => {
  const { t, i18n } = useLingui();

  createEffect(() => console.log(`Language chnaged: ${i18n().locale}`));

  return (
    <span>
      {t`Current locale`}: {i18n().locale}<br />
      <Trans>
        See for more info:
        <a href="https://lingui.dev/introduction">official documentation</a>
      </Trans>;
    </span>
  );
};

For more info: https://lingui.dev/introduction