npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@morningtrain/react-translations

v1.12.0

Published

This package is heavily inspired by the translation features in Laravel and enables the use of the backend translation files in React.

Downloads

30

Readme

React Translations

This package is heavily inspired by the translation features in Laravel and enables the use of the backend translation files in React.

The internal translation libraries in this package mirrors the PHP classes underlying Laravel's translation system.

View the documentation at Laravel for extra details.

Components

Translation

This is the primary component for displaying a translation.

<Translation 

  /* Prop specifying the path to the translation */
  name={'path.to.translation'}
  
  /* Set this prop to work with pluralized translations */
  count={2}
  
  /* Any parameters to replace in the translation string */
  data={{some: 'data'}}
  
  /* Use this value in case the target translation does not exist */
  defaultValue={'Display this if trans is missing'}
  
/>

DecodedTranslation

The DecodedTranslation component is similar to Translation, but it supports having HTML in the translation.


IMPORTANT:

This component uses dangerouslySetInnerHTML - see React Docs.

This component makes it possible to use highlighting as part of the translation string.

It means that [highlighted text], [[more highlighted text]], [[[very highlighted text]]] and [[[[extremly highlighted text]]]] in the translation are replaces with spans like this:

[[[[text]]]] -> <span class="text-highlight-4 >text</span>

[[[text]]] -> <span class="text-highlight-3 >text</span>

[[text]] -> <span class="text-highlight-2" >text</span>

[text] -> <span class="text-highlight-1" >text</span>

These spans can then be styled to have certain words in the translation stand out more.

Translator

Before using a Translation, it is important to make sure that Translation, DecodedTranslation or the component using any of the hooks are wrapped in the Translator component.

Translator provides translation helpers functions and makes it possible to namespace the translation.

When a translation is namespaced, it is possible to leave out the first part of the path.

It means that this example:

<Translator>
  <Translation name={'users.path.to.trans'} />
  <Translation name={'users.path.to.another_trans'} />
  <Translation name={'companies.road.to.third_trans'} />
</Translator>

Gives the same result as this where users.path.to becomes the namespace.

<Translator namespace={'users.path.to'}>
  <Translation name={'trans'} />
  <Translation name={'another_trans'} />
  <Translation name={'companies.road.to.third_trans'} />
</Translator>

Note how companies.road.to.third_trans is unchanged. If the translator is unable to find a matching translation key in the namespace, then it will search for the translation as if the provided path is without a namespace.

This means that it is possible to have global translation keys mixed in together with the namespaced translation keys.

Hooks

useTranslation

The useTranslation hook takes 3 parameters, name, options and defaultValue.

Note that both the Translation and DecodedTranslation components are using this hook internally. The translation components should always be used over the hook whenever possible.

It is okay to use the hook when the translation is needed as a string - for instance when passing it to an input field as a placeholder.

Name is the path to the translation.

Options contains count and data.

DefaultValue is the value to use when the translation key is not found.