Socket
Book a DemoInstallSign in
Socket

easy-translation

Package Overview
Dependencies
Maintainers
0
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install
Package was removed
Sorry, it seems this package was removed from the registry

easy-translation

Easy React Translations Component. Translates all text on screen using JSON translation files.

1.0.0
latest
Source
npmnpm
Version published
Weekly downloads
0
Maintainers
0
Weekly downloads
 
Created
Source

React - Easy Translation

Easily add language translations to your React/Next application.

Prerequisites

This project was built using React (version 19.0.0).

Table of contents

  • Project Name

Installation

To install the library, run:

$ npm i easy-translation

Usage

LanguageProvider

The LanuageProvider must be added to the top level of your application as it sets up the required Context.

Props:

url (Optional)

TypeDescription
stringThe url to language files directory. If not included will look at in your server "locale" directory

supported (Required)

TypeDescription
Array[string]List of supported languages

Example:

For ReactJS. The provider can be added directly to the top level.

import { LanguageProvider } from "easy-translation";
function main() {
  return (
    <LanguageProvider
      url="<http path to language directory>"
      supported={["en", "fr"]}
    >
      <div>...</div>
    </LanguageProvider>
  );
}
export default main;

For NextJS. The provider needs to be added from inside a client component.

function main() {
  return (
    <Lang>
      <div>...</div>
    </Lang>
  );
}
export default main;
"use client";
import React from "react";
import { LanguageProvider } from "easy-translation";

function Lang({ children }: { children: React.ReactNode }) {
  return (
    <LanguageProvider
      url="<http path to language directory>"
      supported={["en", "fr"]}
    >
      {children}
    </LanguageProvider>
  );
}
export default Lang;

LanguageFiles

Language files are JSON files that are seperated into sections. Language files must be localed in at publicly accessable url. http://someurl.com/locale

If url is not supplied, falls back to '/Public/Locale/'

Language file names must be named based on the supported language:

Files:

  • en.json
  • fr.json

The first section for each language file MUST have the "@" section. See below for an example.

Usage:

Basic

{
  "@": {
    "key": "This is the text to be translated"
  }
}

Multiple (Pipe split)

{
  "@": {
    "key": "This is the text | to translate to that is indexed"
  }
}

Tokenized

{
  "@": {
    "key": "This is a token [$0] and some more tokens [$1] [$2]"
  }
}

Example:

en.json

{
  "@": {
    "title": "This is an English language file",
    "multiple": "This is a string | That can be indexed",
    "tokens": "This is an indexed string | With tokens [$0] [$1]"
  },
  "section1": {
    "title": "This is section one",
    "tokens": "This is a string with tokens [$0] [$1]"
  },
  "section2": {
    "title": "This is section two",
    "subtitle": "This is section two"
  }
}

useTranslation

This is the most common way to use the translation library.

Usage:

useTranslation("section");

Options:

section (Optional)

TypeDefault valueDescription
stringundefinedAll translations will use a passed "section" as default

Translate

Usage:

translate("@text@", "section", ["tokens"])[idx];

Options:

@text@ (Required)

TypevalueDescription
string"@text@"The translation key that must match the key in the language file

section (Optional)

TypevalueDescription
string"section"Section of the language file this key exists.

if "-" is passed in the section field. Looks in the current section.

tokens (Optional)

TypevalueDescription
Array[strings]["token1", "token2"]Token strings. Language matches tokens on an index. See language file above.

Basic

translate("@title@");

Multiple (Pipe split)

translate("@multiple@")[0];
translate("@multiple@")[1];

Tokenized

translate("@tokens@", "section1", ["token1", "token2"]);

Example:

import { useTranslation } from "easy-translation";

function MyComponent() {
  const { translate: t } = useTranslation("section1"); // Switch default to Section1

  return (
    <div>
      <p>{t("@title@")}</p>
      <p>{t("@title@", "@")}</p>
      <p>{t("@multple@", "@")[1]}</p>
      <p>{t("@tokens@", "@", ["token1", "token2"])[1]}</p>
      <p>{t("@title@", "section2")}</p>
    </div>
  );
}
export default MyComponent;

TranslateGroup

This function can be used to translate an Array of Translation Objects

Usage:

group([{ text: "@text@", section: "section", tokens: ["tokens"] }]);

Options:

object (Required)

TypevalueDescription
Array[{}][{text:"@text@"}]Pass an array of Translation Objects

Basic

import { useTranslation } from "easy-translation";

function MyComponent() {
  const { group: t } = useTranslation();
  const translations = t([{ text: "@title@" }, { text: "@subtitle@" }]);

  return (
    <div>
      <p>{translations.title}</p>
      <p>{translations.subtitle}</p>
    </div>
  );
}
export default MyComponent;

Multiple (Pipe split)

import { useTranslation } from "easy-translation";

function MyComponent() {
  const { group: t } = useTranslation();
  const translations = t([{ text: "@multiple@" }]);

  return (
    <div>
      <p>{translations.multiple[0]}</p>
      <p>{translations.multiple[1]}</p>
    </div>
  );
}
export default MyComponent;

Tokenized

import { useTranslation } from "easy-translation";

function MyComponent() {
  const { group: t } = useTranslation("section1");
  const translations = t([
    { text: "@tokens@", "-", ["token1", "token2"] }
  ]);

  return (
    <div>
      <p>{translations.tokens}</p>
    </div>
  );
}
export default MyComponent;

Example:

import { useTranslation } from "easy-translation";

function MyComponent() {
  const { group: t } = useTranslation("Section2");
  const translations = t([
    { text: "@title@" },
    { text: "@subtitle@" },
    { text: "@tokens@", category: "@", tokens: ["token1", "token2"] },
  ]);

  return (
    <div>
      <p>{translations.title}</p>
      <p>{translations.subtitle}</p>
      <p>{translations.tokens[0]}</p>
      <p>{translations.tokens[1]}</p>
    </div>
  );
}
export default MyComponent;

Translation

The Translation Component can also be used. This component translates @text@ tokens by passing JSX

Options:

category (Required)

TypeDefault valueDescription
stringundefinedThe translation key that must match the key in the language file

@text@ (Required)

TypeDefault valueDescription
string""All translations will use a passed "section" as default

Example:

"use client";
import { Translation } from "easy-translation";

function MyComponent() {
  return (
    <div>
      <Translation category={"Section2"}>
        <h3>@title@</h3>
        <p>@subtitle@</p>
      </Translation>
    </div>
  );
}
export default MyComponent;

Versioning

  • 1.2.0

Authors

FAQs

Package last updated on 24 Feb 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.