2.0.0 • Published 9 days ago

intlayer v2.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
9 days ago

Intlayer: Next-Level Content Management in JavaScript

Intlayer is an innovative Content Management System (CMS) designed specifically for JavaScript developers. It enables seamless transpilation of JavaScript content into structured dictionaries, making integration into your codebase straightforward and efficient.

Why Choose Intlayer?

  • JavaScript-Powered Content Management: Harness the flexibility of JavaScript to define and manage your content efficiently.
  • Type-Safe Environment: Leverage TypeScript to ensure all your content definitions are precise and error-free.
  • Integrated Content Files: Keep your translations close to their respective components, enhancing maintainability and clarity.

intlayer package

intlayer package intend to declare your content in a structured way, using JavaScript.

To build dictionaries from this declaration, you can use intlayer-cli. And to interpret intlayer dictionaries you can interpreters, such as react-intlayer, or next-intlayer

Getting Started with Intlayer

See how to use intlayer with NextJS

Install Package

Install the necessary packages using npm:

npm install intlayer
yarn install intlayer
pnpm install intlayer

Manage Your Content

Create and manage your content dictionaries:

Using typescript

// src/app/[locale]/page.content.ts
import { t, enu, type ContentModule } from "intlayer";

const pageContent: ContentModule = {
  id: "page",
  getStarted: {
    main: t({
      en: "Get started by editing",
      fr: "Commencez par éditer",
      es: "Comience por editar",
    }),
    pageLink: "src/app/page.tsx",
  },
  nestedContent: {
    id: "enumeration",
    numberOfCar: enu({
      "<-1": "Less than minus one car",
      "-1": "Minus one car",
      "0": "No cars",
      "1": "One car",
      ">5": "Some cars",
      ">19": "Many cars",
    }),
  },
};

// Content should be exported as default
export default pageContent;

Using ECMAScript modules

// src/app/[locale]/page.content.mjs

import { t } from "intlayer";

/** @type {import('intlayer').ContentModule} */
const pageContent = {
  id: "page",
  getStarted: {
    main: t({
      en: "Get started by editing",
      fr: "Commencez par éditer",
      es: "Comience por editar",
    }),
    pageLink: "src/app/page.tsx",
  },
  nestedContent: {
    id: "enumeration",
    numberOfCar: enu({
      "<-1": "Less than minus one car",
      "-1": "Minus one car",
      "0": "No cars",
      "1": "One car",
      ">5": "Some cars",
      ">19": "Many cars",
    }),
  },
};

// Content should be exported as default
export default pageContent;

Using CommonJS modules

// src/app/[locale]/page.content.cjs

const { t } = require("intlayer");

/** @type {import('intlayer').ContentModule} */
const pageContent = {
  id: "page",
  getStarted: {
    main: t({
      en: "Get started by editing",
      fr: "Commencez par éditer",
      es: "Comience por editar",
    }),
    pageLink: "src/app/page.tsx",
  },
  nestedContent: {
    id: "enumeration",
    numberOfCar: enu({
      "<-1": "Less than minus one car",
      "-1": "Minus one car",
      "0": "No cars",
      "1": "One car",
      ">5": "Some cars",
      ">19": "Many cars",
    }),
  },
};

// Content should be exported as default
module.exports = pageContent;

Using JSON

// src/app/[locale]/page.content.json
{
  "id": "page",
  "getStarted": {
    "main": {
      "nodeType": "translation",
      "en": "Get started by editing",
      "fr": "Commencez par éditer",
      "es": "Comience por editar",
    },
    "pageLink": "src/app/page.tsx",
  },
  "nestedContent": {
    "id": "enumeration",
    "nodeType": "enumeration",
    "numberOfCar": {
      "<-1": "Less than minus one car",
      "-1": "Minus one car",
      "0": "No cars",
      "1": "One car",
      ">5": "Some cars",
      ">19": "Many cars",
    },
  },
}

This version emphasizes ease of use, practical steps, and the professional application of Intlayer in a Next.js environment.